c语言 创建一个空链表,C语言 创建一个链表.docx

C语言 创建一个链表

C语言 创建一个链表, 并将数据倒序输出代码如下:#include#include#include#define ok 1#define Elemtype inttypedef 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;inext;}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");}

你可能感兴趣的:(c语言,创建一个空链表)