C语言数据结构之循环链表的简单实例
实例代码:
# include# include typedef struct node //定义链表中结点的结构 { int code; struct node *next; }NODE,*linkList; void Error(char *message) { fprintf(stderr,"Error:%s/n",message); exit(1); } //创建循环链表 linkList createList(int n) { linkList head; //头结点 linkList p; //当前创建的节点 linkList tail; //尾节点 int i; head=(NODE *)malloc(sizeof(NODE));//创建循环链表的头节点 if(!head) { Error("memory allocation error!/n"); } head->code=1; head->next=head; tail=head; for(i=2;i next=p; p->code=i; p->next=head; tail=p; } return head; }
第二种方法:
//创建循环链表方法2(软件设计师教程书上的方法)
linkList createList2(int n)
{
linkList head,p;
int i;
head=(NODE *)malloc(sizeof(NODE));
if(!head)
{
printf("memory allocation error/n");
exit(1);
}
head->code=1;
head->next=head;
for(i=n;i>1;--i)
{
p=(NODE *)malloc(sizeof(NODE));
if(!p)
{
printf("memory allocation error!/n");
exit(1);
}
p->code=i;
p->next=head->next;
head->next=p;
}
return head;
}
void output(linkList head)
{
linkList p;
p=head;
do
{
printf("%4d",p->code);
p=p->next;
}
while(p!=head);
printf("/n");
}
void main(void)
{
linkList head;
int n;
printf("input a number:");
scanf("%d",&n);
head=createList(n);
output(head);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



