C语言实现数据结构中的循环链表
来源:互联网 发布:淘宝订单评价期是多久 编辑:程序博客网 时间:2024/04/29 10:51
C语言实现数据结构中的循环链表
# include <stdio.h>
# include <stdlib.h>
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<n;i++)
{
//创建循环链表的节点
p=(NODE *)malloc(sizeof(NODE));
tail->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);
}
对比创建循环链表的两中方法,显然方法二更巧妙,技巧性更强.
- C语言实现数据结构中的循环链表
- 数据结构--双向循环链表c语言实现
- 数据结构 循环链表 C语言程序实现
- C语言数据结构----循环链表
- C语言实现数据结构中的链栈
- C语言实现数据结构中的链队列
- C语言实现数据结构中的顺序表
- c语言实现数据结构中的链表源代码
- 数据结构(C语言)实现循环队列
- 数据结构C语言实现之循环队列
- 数据结构.循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构C语言实现之循环队列
- 数据结构之---C语言实现循环队列
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- MFC对WinSockt API的封装
- .net 自用代码大全天天收藏(C#版)
- Jdk + jdbc + tomcat 综合配置
- Prometric考试流程
- DWR 2.0 RC4发布 加入Guice集成
- C语言实现数据结构中的循环链表
- 使用easyobjects asp.net ajax + mygeneration(2) easyobjects概述
- 数据库备份与还原处理
- 用Stirling逼近近似计算阶乘的探讨与应用
- 人生成功要素三篇
- 用Java实现HTTP文件队列下载
- 面向对象技术JAVA(NO.0009)-JAVA程序的注释及演示
- ARP攻击的原理与解决方法
- 设备相关位图(DDB)与设备无关位图(DIB) 的区别