欢迎来到天天文库
浏览记录
ID:21957299
大小:79.75 KB
页数:7页
时间:2018-10-25
《c语言数据结构单循环链表》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、姓名:冯天明学号:班级:通信1412015年9月28日星期一实验四:编写一个程序,实现单循环链表的各种基本运算,并在此基础上设计一个主程序完成以下功能。1.初始化单循环链表L2.依次采用尾插法或者头插法插入元素a,b,c,d,e3.输出单循环链表4.输出单循环链表的长度5.判断单循环链表是否为空6.输出单循环链表的第四个元素7.输出元素a的位置8.在第三个元素位置插入元素f9.输出单循环链表L10.删除单循环链表L的第四个元素11.输出单循环链表L12.释放单循环链表实验代码:#include
2、#include#include#defineOK0#defineERROR-2#defineOVERFLOW-1typedefcharElemType;typedefstructCirNode{ElemTypedata;CirNode*next;}CirNode,^CirLinkList;voidInitCirList(CirLinkList*L)if(!L)exit(OVERFLOW);(*L)-〉next=*L;//头指针跟尾指针}intDestroyList(Ci
3、rLinkList*L){CirLinkListq,p=(*L)-〉next;//p指向头结点while(p!=*L)//直到表尾{q=p-〉next;free(p);p=q;}free(*L);//释放头结点内存*L=NULL;returnOK;}intListEmpty(CirLinkListL){return(L==NULL);}intListLength(CirLinkListL)//获得链表的长度{intnumber=0;CirLinkListp;p=L->next;//p指向头结点while(p!=
4、L)//遍历链表{number++;p=p->next;}returnnumber;}ElemTypeGetElem(CirLinkListL,inti)ElemTypee;intj=l;CirLinkListp=L-〉next-〉next;//p指向第一个结点if(i<=O
5、
6、i>ListLength(L))//位置非法returnERROR;while(j
7、ti=0;CirLinkListp=L-〉next-〉next;//p指向第一个结点while(p!=L->next){i++;if(p->data==e)//与查找的元素相同returni;p=p->next;//未找到,继续查找}returnERROR;}intListInsert(CirLinkList*L,inti,ElemTypee){intj=0;CirLinkListp,s;p=(*L)-〉next;//p指向头结点if(i<=O
8、
9、i〉ListLength(*L)+l)//插入位置非法retur
10、nERROR;//查找i-l个位置p干〉next;j++;}s=(CirLinkList)malloc(sizeof(CirNode));//生成新结点s-〉data=e;s->next=p->next;//p-〉将当前插入的下一个点地址p->next=s;if(P==*L)*L=s;returnOK;}intListDelete(CirLinkList*L,inti){CirLinkListp=(氺L)-〉next,q;intj=0;if(i<=O
11、
12、i>ListLength(*L))returnERROR;
13、while(jnext;j++;}q=p->next;p-〉next=q-〉next;if(*L==q)^L=p;free(q);returnOK;}intDisplayList(CirLinkListL)//p指向头结点//删除位置非法//查找i-l个结点//q指向待删除结点//删除表尾元素//释放删除结点//遍历链表{p=L-〉next-〉next;printf(’’链表的元素为:n);while(p!=L->next){printf(’’%4c’’,p-〉data);p=p-〉nex
14、t;}printf(nn);returnOK;}voidmain(){CirLinkListL;ElemTypee;intlength,index;InitCirList(&L);//创建空链表Listlnsert(&L,1,'a’);"依次插入元素ListInsert(&L,2,'b’);ListlnsertC&L^/c1);ListInsert(&L,4,'d’);ListIn
此文档下载收益归作者所有