欢迎来到天天文库
浏览记录
ID:50306857
大小:125.50 KB
页数:29页
时间:2020-03-07
《数据结构验证性实验指导书.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验一线性表的顺序存储实验一、实验目的1、掌握用VisualC++6.0上机调试顺序表的基本方法2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现二、实验内容1、顺序表基本操作的实现[问题描述]当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。[基本要求]要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。[实现提示]要实现基本操作,可用实现的基本操作,也可设计简单的算法实现。
2、[程序实现]#include#includetypedefintDataType;#definemaxnum20typedefstruct{intdata[maxnum];intlength;}SeqList;/*插入函数*/intinsert(SeqList*L,inti,DataTypex)/*将新结点x插入到顺序表L第i个位置*/{intj;if(i<0
3、
4、i>(*L).length+1){printf("i值不合法!");return0;}if((*L).length>=maxnum-1){printf("表满不能插入!")
5、;return0;}for(j=(*L).length;j>=i;j--)(*L).data[j+1]=(*L).data[j];(*L).data[i]=x;(*L).length++;return1;}/*删除函数*/intdelete(SeqList*L,inti)/*从顺序L中删除第i个结点*/{intj;if(i<0
6、
7、i>(*L).length){printf("删除位置错误!");return0;}for(j=i+1;j<=(*L).length;j++)(*L).data[j-1]=(*L).data[j];(*L).length--;return1;}/
8、*生成顺序表*/voidcreatlist(SeqList*L){intn,i,j;printf("请输入顺序表L的数据个数:");scanf("%d",&n);for(i=0;i9、(*L).data[i]);}/*printout*/printf("");}main(){SeqList*L;charcmd;inti,t,x;clrscr();creatlist(L);do{printf("i,I-----插入");printf("d,D-----删除");printf("q,Q-----退出");do{cmd=getchar();}while((cmd!='i')&&(cmd!='I')&&(cmd!='d')&&(cmd!='D')&&(cmd!='q')&&(cmd!='Q'));switch(cmd){case'i':case10、'I':printf("PleaseinputtheDATA:");scanf("%d",&x);printf("Where?");scanf("%d",&i);insert(L,i,x);printout(L);break;case'd':case'D':printf("WheretoDelete?");scanf("%d",&i);delete(L,i);printout(L);break;}}while((cmd!='q')&&(cmd!='Q'));}2、有序顺序表的合并[问题描述]已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元11、素,合并成为一个新的顺序表lc[基本要求]lc中的数据元素仍按非递减有序排列,并且不破坏la和lb表[程序实现]#include#definemaxnum20typedefintDataType;typedefstruct{DataTypedata[maxnum];intlength;}SeqList;intMergeQL(SeqListla,SeqListlb,SeqList*lc){inti,j,k;if(la.length+1+lb.length+1>maxnum){printf
9、(*L).data[i]);}/*printout*/printf("");}main(){SeqList*L;charcmd;inti,t,x;clrscr();creatlist(L);do{printf("i,I-----插入");printf("d,D-----删除");printf("q,Q-----退出");do{cmd=getchar();}while((cmd!='i')&&(cmd!='I')&&(cmd!='d')&&(cmd!='D')&&(cmd!='q')&&(cmd!='Q'));switch(cmd){case'i':case
10、'I':printf("PleaseinputtheDATA:");scanf("%d",&x);printf("Where?");scanf("%d",&i);insert(L,i,x);printout(L);break;case'd':case'D':printf("WheretoDelete?");scanf("%d",&i);delete(L,i);printout(L);break;}}while((cmd!='q')&&(cmd!='Q'));}2、有序顺序表的合并[问题描述]已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元
11、素,合并成为一个新的顺序表lc[基本要求]lc中的数据元素仍按非递减有序排列,并且不破坏la和lb表[程序实现]#include#definemaxnum20typedefintDataType;typedefstruct{DataTypedata[maxnum];intlength;}SeqList;intMergeQL(SeqListla,SeqListlb,SeqList*lc){inti,j,k;if(la.length+1+lb.length+1>maxnum){printf
此文档下载收益归作者所有