C语言:循环链表的建立和输出 | 您所在的位置:网站首页 › 数据结构创建链表并输入 › C语言:循环链表的建立和输出 |
有头结点的循环链表建立和单链表的建立基本一样,只不过在链表创建结束时,将尾结点指向头指针,无头结点链表的建立,只要将尾结点的指针指向头结点的下一个指针便可,但一般循环链表都以有头结点的方式创建,这样空链表与非空链表处理就一致了 有头结点循环链表的建立和输出:* #include #include struct random_num{ int num; struct random_num*next; }; void main(){ int n,i; struct random_num *head=NULL,*p1,*p2,*p3;//head:头结点,*p1:作为开辟新节点的接受指针,*p2工作指针,主要起连接作用,*p3用于输出链表时的工作指针 srand(time(0)); //srand随机产生数的种子,time(0)返回当前日历时间 if((head=(struct random_num *)malloc(sizeof(struct random_num)))==NULL) { //开辟头结点 printf("不能分配存储空间!"); exit(0); } p2=head; // 令p2=head,以便接下来连接 printf("请输入需要建立链表结点数:\n"); scanf("%d",&n); for(i=1;i printf("不能成功分配空间:"); exit(0); } p1->num=rand(); p2->next=p1; p2=p1; } p2->next=head; //以下操作只为输出,由于不用函数调用,便直接进行操作,可视为一个调用函数,但脑部相应变量定义 p3=head->next; //因为头指针没有值,所以p3指向头指针的下一个位置 while(p3!=head){ printf("%d\n",p3->num); p3=p3->next; } } |
CopyRight 2018-2019 实验室设备网 版权所有 |