资源描述:
《实验三-线性链表》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程实验报告课程名称数据结构班级网络软件设计与开发1班实验日期姓名刘小葱学号1145328751实验成绩实验名称链表的基本操作实验冃的及要求目的:线性链表的构建、插入、删除、合并、归并等操作。要求:1、每次实验前学生必须根据实验内容认真准备实验程序及调试时所盂的输入数据。2、在指导教师的帮助下能够完成实验内容,得出正确实验环境MicrosoftVisualC++6.0实验内容链表的生成、合并和归并(编写构造一个链表的函数;编写实现查找、插入、求表长、合并、归并等函数;编写主函数,定义两个线性链表,输入链表的数据,进行合并和归并操作。)源程序清单源程序:#include
2、#include#defineTRUE1及实验结果#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;typedefstructLNode{ElemTypedata;structLNode水next;}LNode,*LinkList;StatusInitListSq(LinkList&L);StatusListInsertSq(LinkList&LJnti,ElemTy
3、pee);StatusListDeleteSq(LinkList&L,inti,ElemType&e);voidListTraverseSq(LinkListL);voidMergeList(LinkList&La,LinkList&Lb,LinkList&Lc);intmain(){ints,e;LinkListlajbjc;s=InitListSq(la);s=InitListSq(lb);s=InitListSq(lc);printf("la为:”);s=ListInsertSq(la,1,1);s=ListInsertSq(la,2,3);s=ListInse
4、rtSq(la,3,4);s=ListInsertSq(la,4,7);s=ListInsertSq(la,5,13);ListTraverseSq(la);printf(nH);printf(nn);printf(Hlb为:”);s=ListInsertSq(lb,l,2);s=ListInsertSq(lb,2,5);s=ListInsertSq(lb,3,7);s=ListInsertSq(lb,4,9);s=ListInsertSq(lb,5,l1);ListTraverseSq(lb);printf(nH);printf(nn);printf
5、C删除后lb为:”);s=ListDeleteSq(lb,2,e);ListTraverseSq(lb);printf(nH);printfC*删除的元素是:%dn,e);printfCAn");printf("la和lb合并后lc为:”);MergeList(la,lb,lc);ListTraverseSq(lc);printf(nn);return0;}StatusInitListSq(LinkList&L){L=(LinkList)malloc(sizeof(LNode));if(!L)exit(0);L->next=NULL;returnOK;}S
6、tatusListInsertSq(LinkList&L,inti,ElemTypee){intj;LinkListp,s;P=L;j=o;while(p&&jvi・l){p=p->next;++j;}if(!pllj>i-l)returnERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;returnOK;}StatusListDeleteSq(LinkList&L,inti,ElemType&e){intj;LinkListp,q;P=L;j=0;while(p->
7、next&&jvi-1){p=p->next;++j;}if(!(p->next)llj>i-l)returnERROR;q=p->next;p->next=q->next;e=q->data;free(q);returnOK;}voidListTraverseSq(LinkListL){LinkListp;p=L・>next;while(p->next!=NULL){printf(”%d",p->data);p=p->next;}printf(H%dH,p->data);}voidMergeList(LinkList&La,LinkList&Lb,