C语言数据结构之循环链表的简单实例
C语言数据结构之循环链表的简单实例
实例代码:
#include#include typedefstructnode//定义链表中结点的结构 { intcode; structnode*next; }NODE,*LinkList; /*错误信息输出函数*/ voidError(char*message) { fprintf(stderr,"Error:%s/n",message); exit(1); } //创建循环链表 LinkListcreateList(intn) { LinkListhead;//头结点 LinkListp;//当前创建的节点 LinkListtail;//尾节点 inti; head=(NODE*)malloc(sizeof(NODE));//创建循环链表的头节点 if(!head) { Error("memoryallocationerror!/n"); } head->code=1; head->next=head; tail=head; for(i=2;i next=p; p->code=i; p->next=head; tail=p; } returnhead; }
第二种方法:
//创建循环链表方法2(软件设计师教程书上的方法) LinkListcreateList2(intn) { LinkListhead,p; inti; head=(NODE*)malloc(sizeof(NODE)); if(!head) { printf("memoryallocationerror/n"); exit(1); } head->code=1; head->next=head; for(i=n;i>1;--i) { p=(NODE*)malloc(sizeof(NODE)); if(!p) { printf("memoryallocationerror!/n"); exit(1); } p->code=i; p->next=head->next; head->next=p; } returnhead; }
voidoutput(LinkListhead) { LinkListp; p=head; do { printf("%4d",p->code); p=p->next; } while(p!=head); printf("/n"); }
voidmain(void) { LinkListhead; intn; printf("inputanumber:"); scanf("%d",&n); head=createList(n); output(head); }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!