还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据结构实验报告一【篇一数据结构实验报告实验一】重庆邮电大学软件工程学院数据结构实验报告
一、题目:非循环单链表的存储与操作
二、实验目的本实验是非常通过对线性表中的链式存储结构的操作,帮助学生掌握线性表链式存储情况下的基本特征,学会在实践中利用这种方式完成对一些有前后相继特征的数据结构的具体操作
三、主要数据结构描述定义单链表的存储结构;
1.单链表的基本操作
2.初始化单链表无参和有参;求1单链表长度;2按位置查找;3按值查找;4在位置插入一个数据元素;5i6删除位置的数据元素;遍i7历单链表;销毁单链表算法思想和时间复杂度.按位置/值查找顺序查找,平均时间复杂度为;1n.在位置插入一个数据元素在序号为的结点后插入结点,平均时2i间复杂度为;o n删除位置的数据元素删除序号为结点的后继结点,平均时间
3.i i-1复杂度为;o nq-next-exp=r.exp;p=q;q=q-next;ischange=true;}else ifq-next-exp==q-expq-coef+=q-next-coef;r.next=q-next;q-next=q-next-next;freer.next;ifq-coef==0r.next=q;p-next=q-next;freer.next;q=p-next;}ischange=true;5q=q-next;}}}},进行两个多项式的加法运算5voidaddpolypolylistla,polylistlb{polynode*p,*q*temp*ha;55int sum;ha=la;初始指向的第一个结点初始指向p=la-next;//p laq=lb-next;//q的第一个结点lb whilep!=null q!=nullifp-exp q-expha-next=p;p=p-next;ha=ha-next;}else ifp-exp==q-expsum=p-coef+q-coef;初始化单链表有参有前插法和尾插法注意单链表的逻辑
4.关系应与参数数组保持一致,时间复杂度为;n遍历单链表、求单链表长度、销毁单链表顺序处理,时间复杂
5.度为o no
五、运行的结果截图
五、实验体会和收获:通过这次上机实验,了解到了顺序表的存储结构与基本操作,增加了对课本知识的了解
六、程序清单单链表的存储结构和操作接口
1.声明类//linklist.h linklist#ifndef linklist_h#define linklist_h template class tstruct nodet data;〃此处也可以省略nodet*next;t};template classt classlinklist public://建立只有头结点的空链表linklist;//建立有个元素的单链表linklistt a[],int n;n*〃析构函数linklist;;//求单链表的长度int length〃取单链表中第个结点的元素值t getint i;i〃求单链表中值为的元素序号int locatet x;x〃在单链表中第个位置插入元素值为的结void insertint i,tx;i x点〃在单链表中删除第个结点tdeleteint i;i〃遍历单链表,按序号依次输出各元素void printlist;private:〃单链表的头指针nodet*first;};#endif单链表操作的实现2,//linklist.cpp#include linklist.h/**前置条件单链表不存在*输入无*功能构建一个单链表*输出无*后置条件构建一个单链表*/template classt linklistt::linklistfirst=new nodet;first-next=null;}/*前置条件单链表不存在*输入顺序表信息的数组形式口,单链表长度a n*功能将数组口中元素建为长度为的单链表a n*输出无后置条件构建一个单链表*/templateclasstlinklistt::linklistt a[],int n生成头结点first=new nodet;//nodet*r/s;尾指针初始化r=first;//for int i=0;in;i++〃为每个数组元素建立一个结点s=new nodet;s-data=a[i];r-扁入到终端结点之后next=s;r=s;/}单链表建立完毕,将终端结点的指针域置空r・next=null;//【篇二数据结构实验报告】肇庆学院计算机学院/软件学院实验报告专业—软件工程.班级软件班姓名—黎福喜—学号142藻程名称数据结构学犀学期口2014241332252015—20161/2课程类别专业必修?限选□任选□实践□评分批阅老师年2015月日实验线性表的基本操作1实验目的、掌握线性表的基本一算
1、掌握顺序存储的概念,学会对顺序存储数据结构进行操作
2、加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能3力实验内容、编写线性表举报操作函数1初始化线性表;1initlistlist ms向线性表指定位置插入元素;2insertlistlist*l,int item,int rc删除指定元素的线性表记录;3deletelist1list item删除删除指定位置的线性表记录;4deletelist2list*l int rc5着找线性表中的元素;5findlistlist*l,int item输出线性表元素6outputlistQist*
1、调用上述函数实现下列操作2初始化线性表;1调用插入函数建立一个线性表;2在线性表中寻找指定的元素;3在线性表中删除指定值的元素;4遍历并输出线性表6在线性表中删除指定位置的元素;5实验结果、流程图
1、程序运行主要结果截图、程序源代码22#includestdio.h#includestdlib.h#includemalloc.h structlinearlist{int*list;int size;int maxsize;};typedef structlinearlist list;void〃线性表而始化{initlistlist*l,int msifl-list=int内存或请露误!*mallocms*sizeofint==null{printf\n;exit1;}〃插入l-size=0;l-maxsize=ms;}int insertlistlist*IJnt item,int rc•记录值;■插入位置{//item rcinti;ifl-size==l-maxsizereturn-1;ifrcOrc=O;ifrcl-sizerc=l-size;fori=l-size-1;i=rc;i-l-list[i+1]=l-list[i];l-list[rc]=item;l-size++;〃输出return0;}void outputlistlist*l{int i;fori=0;il-size;i++printf%d,l-list[i];printf\n;}int deletelist1list删除元素值而线性表记录{*l,int item//inti,n;fori=0;il-size;i++ifitem==l-list[i]break;ifil-size{forn=i;nl-size-1;n++l-list[n]=l-list[n+1];l-size-;return i;}return〃删除指定位置的线性表记-1;}int deletelist2list*l,intrc录{int n;ifrcO||rc=l-sizereturn-1;forn=rc;nl-size-1;n++l-查勒list[n]=l-list[n+1];l-size-;return0;}int findlistlist*l int item//5{inti;fori=0;il-size;i++ifitem==l-list[i]return i;return-1;}intmain{list II;inti,r,choice;printflistaddr=%p\tsize=%d\tmaxsize=%d\n,II.list,ll.size,II.maxsize;initlistll,100;printflistaddr=%p\tsize=%d\tmaxsize=%d\n,II.list,ll.size,II.maxsize;•添加元素-----------------do{printf\n;printf
1.按元素值查找元素.按元素值删除\n;printf------2“\n;printf-------3元募八n;printf-----
4.按位置删除元素一\n;printf-------
0.退出-------请输入数字选择你要进行的操\n;printf\n;printf0~4作;fflushstdin;scanf%d,choice;switchchoice{case1:〃添加元素while⑴请输入元素值,输入结束插入操作〃清空{printf;fflushstdin;标准输入缓冲区请输入插入位scanf%d,i;ifi==0break;printf置线性表为:;scanf%d,r;insertlistH,i,r-1;printf;outputlistll;}按元素值查找元素break;case2:while1//请输入查找元素值,输入结束查找操{printf0柞;fflushstdin;scanf%d,i;ifi==O break;r=findlistll,i;ifrO没找到有反合条件的元素,位置printf\n;else printf为://按元素值删除元素%d\n,r+1;}break;case3:while请输入删除元素值,输入结束操{printf0柞;fflushstdin;scanf%d,i;ifi==O没找到有符合break;r=deletelist1ll,i;ifr0printf\n;else{printf条件的元素,位置为线性蓑为;%d\n,r+1;printf〃按位置删除元素(请outputlistll;}}break;case4:while1{printf输入删除元素位置,输入结束查找操作;fflushstdin;scanf%d,r;ifr==O break;i=deletelist2ll,r-位置越界线性表为;1;ifiO printf\n;else{printfoutputlistll;}}break;case0:break;}}whilechoice!=0;感谢横向!再见!;printf return0;}实验链表的基本操作实验目的
2、掌握链表的概念,学会对链表进行操作
1、加深对链式存储数据结构的理解,逐步培养解决实际问题的编程2能力?实验内容、编写链表几把操作函数:1初始化链表;1initlistlist**p向链表的指定位置插入元素;2insertlist1list**p,int itemjntrc向有序链表插入元素;insertlist2list**p,int item删除指定元素值的链表记录;4deletelistlist**p,int item查找链表中的元素;5findlistlist*p,intitem输出叠表元素6outputlistlist*p、调用上述函数实现下列操作:2初始化链表;1调用插入函数建立一个链表;2在链表中寻找指定的元素;3在链表中删除指定值的元素;4遍历并输出链表5实验结果、流程图、程序运行主要结果截图12【篇三数据结构实验报告一】数据结构实验报告一题目.一元多项式运算:设计一个一元多项式简单计算器输入并建:1立多项式,输出运算结果的多项式班级:物联网班1101姓名:董娇阳学号:20113372一:需求分析本程序演示时,输入的数据必须是整型数据,输入以结束
1.“00”演示程序以用户和计算机的对话方式执行,即在计算机终端上显
2.示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,;相应的输入数据和运算结果显示在其后程序执行的命令包括:
3.二概要设计:.为实现上述程序的功能,以带头结点的线性链表表示多项式抽象1数据类型的实现polylist结点类型typedefstructpolynodeintcoef;intexp;structpolynode*next;.主要的函数声明2polylistcreatpolylist操作结果:创建一个多项式voidprintpolypolylist I初始条件:多项式已经存在操作结果:多项式显示在屏幕上I Ivoidpaixupolylistl初始条件:多项式已经存在I操作结果:对多项式按照指数升序排列voidaddpolypolylistla,polylistlb初始条件:多项式和存在la lb操作结果:多项式和的和替换la lblavoidsubpolypolylistla,polylistlb初始条件:多项式和存在la lb操作结果:多项式和的差替换la lbla初始条件:多项式电voidmulpolypolylistla,polylistlb,polylistlc lb存在操作结果:是的乘积多项式lc la,lb.本程序包含五个模块:3主程序模块:1,.链表单元模块一•实现数据类型2polylist,输出多项式模块…■在屏幕上显示输入及运算结果多项式
3.多项式运算模块一•实现多项式间的加减乘运算
4.结点结构单元模块•一定义链表的结点结构
5.各模块之间的调用关系如下3详细设计:
1.本程序采用的是线性表的链式存储结构,结点结构设计如下:typedefstructpolynode结点数据域中的系数部分intcoef;//〃结点数据域中的指数部分intexp;结点中的指针域,指向下一个结点structpolynode*next;//}polynode,*polylist;.创建一个多项式2//创建一个多项式polylistcreatpolylist intc;int e;inti=1;〃设置结点指针变量polynode*rear,*head,*s;head=建立多项式的头结点polylistmallocsizeofpolynode;/**/rear=head;请输入多项式第;printfprintf%d,i;项的系数和指数printf\n;scanf%d%d ce;55i++;输入以结束来控制输入的多项式的项数while c!=0//0申请新的结点*/s=polylistmallocsizeofpolynode;/*s-coef=c;s-exp=e;rear-next=s;rear=s;请输入多项式第;printf print%”;项的系数和指数printf\n;scanf%d%d ce;55i++;}rear-next=null;returnhead;.将已经建立的多项式输出显示在屏幕上3〃将多项式输出在屏幕上void printpolypolylistIprintf\nshuchu\n;polynode*p;p=l-next;while p!=null{输出所指结点的系数print*%”p・coef;//pAprintf*x;〃输出所指结点的指数部分printf%d p・exp;p3printf+;指向所指结点的下一个结点p=p-next;//p pifp==null{printfO;}.将需要输出在屏幕上的多项式按照指数的升序进行排序4voidpaixupolylistlpolylist pq;3polynode r;boolischange=true;whileischangeischange=false;forp=L q=l-next;q!=null q-next!=null;{ifq-next-expq-expr.coef=q-coef;r.exp=q-exp;q-coef=q-next-coef;q-exp=q-next-exp;q-next-coef=r.coef;。