资源描述:
《实验二、有序表的建立、插入和删除》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二.有序表的建立、插入与删除一、实验目的1、了解有序表的顺序存贮结构。2、常握有序表元素在内存中是怎样存贮的。3、在有序表中实现如下操作:(1)插入一个新元素到第i个位置。(2)删除第i个位置的元素。(3)存一个新元素到第i个位置。(4)读表(5)检索表中第i个元素。(6)寻表的长度二、实验要求:要求实现:建表操作、插入新元素、删除第i个位置的元素,检索表屮第i个元素,寻表的t度。写出实验原理、算法思想(流程图)、完整程序代码、输出结果验证。二、实验原理(一)线性表是最常用的而II也是最简单的一种数据结构,线性表是N个数据元素的有限序列。例如26个英文元素的字母表:(A,B,C,D
2、,・・・)。其数据结构的描述为:Linear_list=(D,R)其中:D={ai
3、ai属于DO,1=1,2,3,・・・}R={N},N={vai・l,ai>
4、i=2,3,4,••・}。本实验是以数组的形式把有序表存放在计算机内存的一个连续的区域内,这样便有:LOC(ai+l)=LOC(ai)+mo其中m是存放每个元素所占的内存字数。LOC(ai)=LO+m・(i-1)。其屮LO是ai的地址,即首地址。(二)实验程序说明插入一个新元素到第i个位置,既把元素ai向后移一个位置,成为元素ai+1,把新元素放入到第i个位置,其他元素依次后移。存一新元素到第i个位置是把元素ai冲掉后存上新值。
5、删除第i个元素就是把余后的元素依次向前移一个位置。即:以元素ai+1,ai+2,・・・,依次取代ai,ai+l,・・・。删除后的表长是n・l(n是原表长)。三、程序流程图〈开始〉四、参考程序/*有序表的建立、插入与删除*/staticintarray[100];intj,i,n,p;intch;voiddu(){printf("pleasetellmewhichnumbersdoyouoperate:");scanf(”%d”,&i);while(i>n){printf(HERROR,pleaseenternewelement");scanf('*%d",&i);}}voidda(){
6、printf("thelistis:");for(j=0;j7、ntfC*“);}main()printf("pleaseinputthelengthoflist:'1);scanf("%d”,&n);printf("M);printf(Hpleaseenternumber:");for(i=0;i=0&&p<=6){switch(p){case1:printf(ntheinsertednumberplacesthefrontoftheoperationn);du();
8、for(j=n-l;j>=i-1;j—)array
9、j+lJ=array
10、j];printf(Hpleaseenternumber:M);scanf(”%d“,&ch);array[i・1]二ch;n+=l;da();break;case2:du();for(j=i-l;j<=n;j++)array
11、j]=array[j+l];n-=l;da();break;case3:du();printf(Hpleaseenternewnumber:n);scanf(n%d'&ch);printf(nH);array[i-l]=ch;da();break;case4:da();bre
12、ak;case5:du();printf(nwhatisthe%dnumber:",i);printf(H%3dH,array[i-l]);break;case6:printf(Hthelengthofthelistis:”);printf(H%3du,n);break;case0:p=0;break;}printf(nERROR,pleaseenternewnumberH);