数据结构实验一线性表的应用_第1页
数据结构实验一线性表的应用_第2页
数据结构实验一线性表的应用_第3页
数据结构实验一线性表的应用_第4页
数据结构实验一线性表的应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华北水利水电学院数据结构实验报告2010~2011学年第一学期2008级计算机专业实验一线性表的应用实验目的:1.掌握线性表的两种存储结构及实现方式;2.熟练掌握顺序表和链表的建立、插入和删除的算法。实验要求:C完成算法设计和程序设计并上机调试通过。撰写实验报告,提供实验结果和数据。写出算法设计小结和心得。实验内容:1.用顺序表表示集合,编写程序以实现集合的交、并、差运算。2.设带头结点的单链表ha和hb中结点数据域值按从小到大顺序排列,且各自链表内无重复的结点,要求:〔1〕建立两个按升序排列的单链表ha和hb。〔2〕将单链表ha合并到单链表hb中,且归并后的hb链表内无重复的结点,结点值仍保持从小到大顺序排列。输出合并后单链表hb中每个结点的数据域值。程序源代码:实验1#include<iostream.h>structlist{intelem[100];intnlen;}list1,list2,list3;charn=48;//初始化函数voidre(structlist*a){ a->nlen=0; cout<<"输入初始化数据(以0结束):"<<endl; for(inti=0;i<=99;i++) {cin>>a->elem[i]; if(a->elem[i]==NULL)return; a->nlen++;}}//交函数,voidjiaomath(structlist*a,structlist*b,structlist*c){c->nlen=0; for(inti=0;i<a->nlen;i++) for(intj=0;j<b->nlen;j++) if(a->elem[i]==b->elem[j]) {c->elem[c->nlen]=a->elem[i];c->nlen++;}}//并函数voidbingmath(structlist*a,structlist*b,structlist*c){c->nlen=0; for(inti=0;i<a->nlen;i++) {c->elem[c->nlen]=a->elem[i];c->nlen++;} for(intj=0;j<b->nlen;j++) { for(inti=0;i<a->nlen&&a->elem[i]!=b->elem[j];i++);if(i==a->nlen) {c->elem[c->nlen]=b->elem[i];c->nlen++;}}}//差函数c=a-bvoidchamath(structlist*a,structlist*b,structlist*c){c->nlen=0; for(inti=0;i<a->nlen;i++) { for(intj=0;j<b->nlen&&a->elem[i]!=b->elem[j];j++); if(j==b->nlen) {c->elem[c->nlen]=a->elem[i];c->nlen++; } }}//输出函数voidshow(structlist*a){ voidchuli(charm); if(a->nlen==0){cout<<"处理结没有数据可输出"<<endl;} for(inti=0;i<a->nlen;i++) { cout<<a->elem[i]<<""; } cout<<"初始化表1请输入:1并函数请输入:3交函数请输入:4差函数请输入:5"<<endl;cin>>n;chuli(n);}voidchuli(charm){switch(m) { case49: re(&list1);re(&list2);break;case51: bingmath(&list1,&list2,&list3);break; case52: jiaomath(&list1,&list2,&list3);break; case53: chamath(&list1,&list2,&list3);break; default:cout<<"输入数据错误!请重新输入::"<<endl;break; } show(&list3);}voidmain(){ structlist*p=NULL; p=&list3; p->nlen=0; show(&list3);}实验2#include<iostream.h>structlist{ intelem[100]; intnlen;}ha,hb;inth=0;//初始化输入数据voidret(structlist*a){ cout<<"请为表输入数据:"<<endl; a->nlen=0; for(inti=0;i<100;i++) a->elem[i]=NULL; //输入数据有效性。。输入数据一次比次大,升序排列,无重复节点 for(i=0;a->nlen<100;i++) { cin>>a->elem[a->nlen]; if(a->elem[a->nlen]==0)return; //输入不合法,那么重新输入 if(a->elem[a->nlen-1]>a->elem[a->nlen]||a->elem[a->nlen-1]==a->elem[a->nlen]) { cout<<"请输入比前一次更大的数据:"<<endl; continue; } a->nlen++; }}//合并函数,其无重复节点//将a插入b中voidchuli(structlist*a,structlist*b){ voidshow(structlist*a,intm); ret(&ha); ret(&hb); cout<<"开始处理数据:"<<endl; cout<<"表1长度:"<<a->nlen<<endl;cout<<"表2长度:"<<b->nlen<<endl;////////// h=2; if(b->nlen==0) { h=1;return; } if(a->nlen==0) { h=1;return; } for(inti=0;i<a->nlen;i++) { intj=0; //插在前端 if(j==0&&a->elem[i]<b->elem[j]) { b->nlen++; for(intn=b->nlen-1;n>0;n--) { b->elem[n]=b->elem[n-1]; } b->elem[j]=a->elem[i]; } //插在中间或者末端 else { for(j=0;a->elem[i]>b->elem[j]&&j<b->nlen;j++) ; if(a->elem[i]<b->elem[j]) { b->nlen++; for(intn=b->nlen-1;n>j;n--) {b->elem[n]=b->elem[n-1];} b->elem[j]=a->elem[i]; }if(j==b->nlen-1){b->nlen++;b->elem[b->nlen-1]=a->elem[i];} } } show(&hb,h);}voidshow(structlist*a,intm){switch(m){case0:cout<<"请初始化数据!!!"<<endl;break;case1: cout<<"链表为空,无法处理!"<<endl;break;case2:cout<<"链表初始化成功!"<<endl;break;}if(a->nlen==0&&m!=0){cout<<"链表为空,无法处理"<<endl;return;}cout<<"输出目标表长度:"<<a->nlen<<endl;///////////////////////////for(inti=0;i<a->nlen;i++){ cout<<a->elem[i]<<"";}h=0;chuli(&ha,&hb);}voidmain(){show(&hb,h);}测试结果:实验1实验2六、小结〔包括收获、心得体会、存在的问题及解决问题的方法、建议等〕注:内容一律使用宋体五号字,单倍行间距第一是要胆大。用自己的算法。第二,是要为自己留好后路。计算机的工作很大量,辛苦一天却忘了保存很累人,所以要注意适时保存,留好后路。由于种种原因,我编辑时出现了好几次崩溃现象,由于没有及时保存以至于几小时的努力都付之水流。所以要在写一些的时候就主动保存一次,特别是在编辑的文档比拟大时更因该注意此问题。在需要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论