C语言 创建一个链表

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言创建一个链表,并将数据倒序输出

代码如下:

#include

#include

#include

#define ok 1

#define Elemtype int

typedef int status;

typedef struct sql

{

Elemtype length;

Elemtype data;

struct sql *next;

}SQL;

SQL L;

SQL *head;

status create_head() //创建头结点

{

head=(SQL *)malloc(sizeof(struct sql));

head->next=NULL;

if(head) return ok;

}

status create_sql() //创建链表,并输入数据

{

int a,i;

SQL *p,*q;

p=head;

printf("\n请输入链表的长度:");

scanf("%d",&a);

L.length=a;

for(i=1;i<=L.length;i++)

{

q=(SQL *)malloc(sizeof(SQL));

if(q)

{

printf("第%d个节点创建成功,请输入数据:",i);

scanf("%d",&q->data);

p->next=q;

p=q;

q->next=NULL;

}

else

{

printf("节点未创建成功,程序正在退

出");

exit(0);

}

}

return ok;

}

status output() //输出链表的数据

{

SQL *p;

p=head->next;

while(p)

{

printf("%4d",p->data);

p=p->next;

}

return ok;

}

status daoxu() //将链表的数据倒序

{

SQL *k,*p,*q;

int flag,i; //flag 标志位记录当前 *q 所在的节点 flag=0 为q指

向头结点

p=head->next;

for(i=1;i

{

if(p)

{

q=p;

p=p->next;

}

else

{

printf("链表为空!");

exit(0);

}

}

k=p; //*k 保存了最后一个节点的地址

flag=--i;

while(flag)

{

p->next=q;

p=q;

q=head;

--flag;

for(i=flag;i>0;i--)

q=q->next;

}

p->next=NULL;

q->next=k;

return ok;

}

void main()

{

int i;

i=create_head();

if(i)

printf("头结点创建成功\n");

i=create_sql();

if(i)

printf("链表创建成功,数据成功输入。");

printf("\n原链表:\n");

output();

daoxu();

printf("\n倒序后链表:\n");

output();

printf("\n");

}

相关文档
最新文档