双向链表的建立以及输出

 关于双向循环链表的建立

      

  /* 这个是一个双向链表的建立*/

   #include "stdio.h"

    #define NULL 0

    #define N 5 

    #define SS sizeof(struct stu)

   typedef struct stu

   { int num;

     int name[10];

     struct stu *llink,*rlink;/* 定义两个指针*/

    }ss;

  ss *list()

  { ss *h,*r,*s;

    int i;

   if((h=(ss *)malloc(SS))==NULL)

   { printf("wrogn !");

   }

   h->num=NULL;  /* 首先处理这个两个指针*/

   h->llink=NULL;

   h->rlink=NULL;

   h->name[0]='/0';/*对这个数据域也要处理*/

   r=h;

 for(i=0;i<N;i++)

 { s=(ss *)malloc(SS);

  r->rlink=s;

  printf("inter :/n");

  scanf("%d%s",&s->num,&s->name);

  s->llink=r; /*表明这个新建立的着s的左指针指向这个尾节点表明已经链入了尾节点部分*/

  s->rlink=NULL;/* s的右指针置为NULL因为还用不到*/

  r=s;/* 表明这个s已经成了新的链尾*/

 }

  h->llink=r;/* 综合处理这个双向循环链表的尾部分*/

  r->rlink=h;

  return h;

 }

ss *input(ss *head)

{ ss *p;

  p=head->rlink;/* p指向这个head的右指针所指向的数*/ 

  if(p!=head)

   do

  { printf("%2d%4s/n",p->num,p->name);

   p=p->rlink;

  }while(p!=head);/* 注意他的结束条件改变了。为head因为现在是一个双向循环链表,尾节点指向这个head*/

}

main()

{ ss *head;

  printf("/n ht put is :/n");

  head=list();

  input(head);

  getch();

 }/* 其余的和单链表是相通的*/*****************

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值