1、#include#includetypedef struct LNode/定义数据结构int data;LNode* next;*LinkList;void CreatList(LinkList int i;L=(LinkList)malloc(sizeof(LNode);if(L=NULL)/判断分配是否完成exit(0);L-next=NULL;/先建立带头节点的单链表for(i=n;i0;i-)p=(LinkList)malloc(sizeof(LNode);/生成新节点if(p=NULL)/判断分配是否完成exit(1);printf(“this is the %d datan“,i)
2、;/对输入过程进行提示scanf(“%d“,/输入元素值p-next=L-next; /插入到L-next=p; /表头printf(“succeedn“);/对输入过程进行提示void InverseList(LinkList if(L=NULL|L-next=NULL)/判断分配是否完成printf(“the list is emptyn“);exit(2);p=L-next ;q=p-next ;p-next=NULL;if(q=NULL)L-next=p;exit(3);while(1)r=q-next ;q-next=p;if(r=NULL)/判断是否为尾指针L-next=q;/将头
3、指针指向原来的尾节点break;p=r-next ;r-next=q;if(p=NULL)/判断是否为尾指针L-next=r;/将头指针指向原来的尾节点break;q=p-next ;p-next=r;if(q=NULL)/判断是否为尾指针L-next=p;/将头指针指向原来的尾节点break;void TraverseList(LinkList L)/遍历线性链表while(L-next!=NULL)printf(“%dn“,L-next -data);L=L-next ;void main()LinkList L;int n;printf(“plesae input the number of the noden“);scanf(“%d“,CreatList(L,n);printf(“the whole listn“);TraverseList(L);InverseList(L);printf(“the whole list which has been inversedn“);TraverseList(L);