如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验一线性表的顺序存储实验一、实验目的1、掌握用VisualC++6.0上机调试顺序表的基本方法2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现二、实验内容1、顺序表基本操作的实现[问题描述]当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。[基本要求]要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。[实现提示]要实现基本操作,可用实现的基本操作,也可设计简单的算法实现。[程序实现]#include<stdio.h>#include<conio.h>typedefintDataType;#definemaxnum20typedefstruct{intdata[maxnum];intlength;}SeqList;/*插入函数*/intinsert(SeqList*L,inti,DataTypex)/*将新结点x插入到顺序表L第i个位置*/{intj;if(i<0||i>(*L).length+1){printf("\ni值不合法!");return0;}if((*L).length>=maxnum-1){printf("\n表满不能插入!");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||i>(*L).length){printf("\n删除位置错误!");return0;}for(j=i+1;j<=(*L).length;j++)(*L).data[j-1]=(*L).data[j];(*L).length--;return1;}/*生成顺序表*/voidcreatlist(SeqList*L){intn,i,j;printf("请输入顺序表L的数据个数:\n");scanf("%d",&n);for(i=0;i<n;i++){printf("data[%d]=",i);scanf("%d",&((*L).data[i]));}(*L).length=n-1;printf("\n");}/*creatlist*//*输出顺序表L*/printout(SeqList*L){inti;for(i=0;i<=(*L).length;i++){printf("data[%d]=",i);printf("%d",(*L).data[i]);}/*printout*/printf("\n");}main(){SeqList*L;charcmd;inti,t,x;clrscr();creatlist(L);do{printf("\ni,I-----插入\n");printf("d,D-----删除\n");printf("q,Q-----退出\n");do{cmd=getchar();}while((cmd!='i')&&(cmd!='I')&&(cmd!='d')&&(cmd!='D')&&(cmd!='q')&&(cmd!='Q'));switch(cmd){case'i':case'I':printf("\nPleaseinputtheDATA:");scanf("%d",&x);printf("\nWhere?");scanf("%d",&i);insert(L,i,x);printout(L);break;case'd':case'D':printf("\nWheretoDelete?");scanf("%d",&i);delete(L,i);printout(L);break;}}while((cmd!='q')&&(cmd!='Q'));}2、有序顺序表的合并[问题描述]已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元素,合并成为一个新的顺序表lc[基本要求]lc中的数据元素仍按非递减有序排列,并且不破坏la和lb表[程序实现]#include<stdio.h>#definemaxnum20typedefintDataType;typedefstruct