完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
单链表有一定的缺陷,就是单向性,只能从一个结点到下一个节点,而不能访问到上一个结点,而循环链表就可以解决这一问题,当然,用双向链表更加方便
#include #include typedef struct node { int data; struct node *next;//指针域 int size;//循环链表的长度 }node,*linklist;//linklist为定义的指针结构体变量 void create_list_head(linklist *l)//头插法建立循环链表 { int i,j,x; linklist p,q; printf("please input length"); scanf("%d",&j); (*l)=(node*)malloc(sizeof(node)); (*l)->next=NULL;//必须定义,缺少error (*l)->size=j; for(i=0;i scanf("%d",&x); p=(node*)malloc(sizeof(node)); p->data=x; p->next=(*l)->next; (*l)->next=p; } //q=(node*)malloc(sizeof(node)); q=(*l)->next; while(q->next!=NULL)//找到最后一个结点 { q=q->next; } //printf("%d",q->data); q->next=(*l)->next;//将最后一个结点指向第一个结点 } void create_list_tail(linklist *l)//尾插法建立循环链表 { int i,j,x; linklist p,r,t; printf("please input the length"); scanf("%d",&j); (*l)=(node*)malloc(sizeof(node)); (*l)->next=NULL; (*l)->size=j; t=(*l); for(i=0;i scanf("%d",&x); p=(node*)malloc(sizeof(node)); p->data=x; t->next=p; t=p;//每新建一个结点在结束时都为最后一个结点,下一个节点在这个结点后面插入 } t->next=NULL; r=(*l)->next; while(r->next!=NULL) { r=r->next; } r->next=(*l)->next; } void print_list_he(linklist *l)//打印输出 { int i; linklist p; p=(*l)->next; for(i=0;i<(*l)->size;i++) { printf("%dn",p->data); p=p->next; } } int main() { linklist a; create_list_head(&a); create_list_tail(&a); print_list_he(&a); return 0; } |
|
|
|
只有小组成员才能发言,加入小组>>
2597 浏览 0 评论
794浏览 1评论
239浏览 1评论
558浏览 0评论
305浏览 0评论
515浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 06:10 , Processed in 1.036164 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号