C语言 创建一个链表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"); }