《数据结构线性表实验报告五篇.docx》由会员分享,可在线阅读,更多相关《数据结构线性表实验报告五篇.docx(15页珍藏版)》请在优知文库上搜索。
1、数据结构线性表实验报告五篇第一篇:数据结构线性表实验报告实验报告课程名:数据结构实验名:线性表及其操作姓名:班级:学号:撰写时间:一实验目的与要求1.掌握线性表的实现2.掌握线性表的根本操作的实现二实验内容分别完成线性表的顺序表示及链式表示在两种表示上,分别实现一些线性表的操作,至少应该包括-在第i个位置插入一个元素-删除第i个元素-返回线性表长-返回第i个元素的值三实验结果与分析includeinclude/线性表链式表示structV声明一个结构体类型structVintvalue;structV*next;定义结构体变量;VoidPrintLink(structV*p)定义一个结构体指针
2、While(P!=NULL)只要指针指向的变量不为NULL;就会一直循环链表指向下一个结构体(printf(u%dl,1,(*p).value);p=(*p).next;指针指向下一个结构体Printf(n);voidLink()structV*head;head=(structV*)malloc(sizeof(structV);开辟一个长度为size的内存(*head).value=-100;表头为-100(*head).next=NULL;Printf(-线性表链式表示n);inti,n=10;structV*p=head;printf(10个数据:n);for(i=0;i(*p).nex
3、t=(structV*)malloc(sizeof(structV);p=(*p).next;(*p).value=2*i;(*p).next=NULL;)PrintLink(head);调用PrimLink函数Printf(删除第四个数据:n);intk=4;p=head;for(i=l;ip=(*p).next;)structV*temp=(*p).next;/k表示插入和删除的位置(*p).next=(*temp).next;free(temp);PrintLink(head);printf(插入第十个数据:);k=10;p=head;for(i=l;ip=(*p).next;)temp
4、=(*p).next;(*p).next=(structV*)malloc(sizeof(structV);(*(*p).next).value=-99;(*(*p).next).next=temp;PrintLink(head);/线性表顺序表示voidseql()inti,n=10,k=4;inta10;/输出数组元素Printf(线性表顺序表示n);for(i=0;iai=i;printf(数组元素为:n);for(i=0;iPrintf(3d,ai);Printf(n);插入一个数组元素intm=n+lJ=L2;插入元素12intb20;for(i=0;iif(i(bi=ai;)els
5、eif(i=k)bi=j;)elsebi=ai-l)Primf(输出插入一个元素的数组:);for(i=0;i(if(ici=aiJelseci=ai+l)Printf(输出删除一个元素的数组:n);for(i=0;iPrintf(数组元素为:n);for(i=l;i=a0;i+)ai=i;for(i=0;i=k;i-)ai+l=ai;ak=-100;+a0;for(i=0;ik;i+)ai=ai+l;ak=-l;aO=n;a0;for(i=0;itablei;L-tablei=L-tableL-n-l-i;L-tableL-n-l-i=tmp;四、运行结果第三篇:数据结构一实验报告线性表的根
6、本操作(一)单链表的根本操作#includeusingnamespacestd;#definetrue1#definefalse0#defineok1#defineerror0#defineoverflow-2typedefintStatusjtypedefintEIemTypejtypedefstructLNode存储结构EIemTypedata;structLNode*next;LNode,*LinkList;voidCreateList(LinkList&LJntn)尾插法创立单链表LinkListp;L=newLNode;L-next=NULL;/建立一个带头结点的单链表1.inkLi
7、stq=L;使q指向表尾StatusGetElem(LinkListLJntizElemType&e)取第i个元素LinkListp=L-next;intj=ljwhile(p8i8y7e%yfor(iti=l;ip-data;p-next=NULL;q-next=p;q=p;if(!pji)returnerror;第i个元素不存在e=p-data;returnok;StatusLinkInsert(LinkList&LJnti,日emTypee)/插入LinkListp=L;intj=O;while(p&jnext;+j;寻找第i-1个结点if(!pji-l)returnerrori小于1或
8、者大于表长加1LinkLists=newLNode;/生成新结点S-data=e;s-next=p-nextL中p-next=s;returnok;StatusListDelete(LinkList&L,intizElemType&e)删除LinkListP=LjLinkListq;intj=0;While(P-next&jp=p-next;+j;if(!(p-next)Hji-l)returnerror;删除不合理q=p-next;p-next=q-next;删除并释放结点e=q-data;delete(q);returnok;voidMergeList(LinkListSiLazLinkL
9、ist&Lb,LinkList&Lc)合并两个顺序链表1.inkListpa,pc,pb;Pa=La-next;Pb=Lb-next;LC=PC=La;While(Pa&pb)if(pa-datadata)pc-next=pa;pc=pa;pa=pa-next;elsepc-next=pb;pc=pb;pb=pb-next;)pc-next=pa?pa:pb;delete(Lb);voidshow(LinkListL)LinkListp;p=L-next;while(p)coutdatanext;coutnext;)returni;voidiugai(LinkListL)修改intij=l;E
10、IemTyPek;ElemTypee,m;LinkLiStp=L-next;couti;GetElem(L,i,e);CoUtk;WhiIe(P+j;m=p-data;p-data=k;couta;coutb;coutselect;switch(select)casel:coutx;coutCreateList(Iistx)Jbreakjcase2:coutshow(list);break;case3:ints;coutxjwhile(Length(listzs)coutox;GetEIem(IiSLx,y);CoUtx;WhiIe(XLength(list,s)coutox;couty;Li
11、nkInsert(list,xry);coutx;while(xLength(list,s)coutx;coutListDelete(listzxzy);break;case8:hebing();break;case9:exit(O);break;default:cout四、测试结果D顺序表的测试结果82)单链表的测试结果五、心得体会当听到老师说写数据结构实验报告时,我有点惊讶,才学了不到一个月,就要写实验报告。记得去年学习C+时,学了一个学期,程序设计用了三周,才完成的,这个实验报告居然要一周完成两个设计,觉得很难。但是现在一周过去了,我也写完了,自我感觉良好。通过这次写实验报告,我深切的理
12、解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼,而C+是填充这骨骼的肉体,二者相结合才能使整个程序更加完整,健全。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C+语言,将各种操作描述出来构成算法。数据结构+算法=程序设计。在这次设计的过程中,我还遇到了,很多的问题。顺序表是按顺序存储的,用了一维数组来存储,又结合C+的程序设计,我又用了类,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的根本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比方说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。第四篇:数据结构线性表试验报告线性表上机实习1.实验目的(1)熟悉将算法转换为程序代码的过程。2了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的C语言描述方法。3熟练掌握顺序表的根本运算: