順序表實(shí)驗(yàn)報(bào)告_第1頁(yè)
順序表實(shí)驗(yàn)報(bào)告_第2頁(yè)
順序表實(shí)驗(yàn)報(bào)告_第3頁(yè)
順序表實(shí)驗(yàn)報(bào)告_第4頁(yè)
順序表實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一 順序表的基本操作及其應(yīng)用需求分析1. 本演示程序?qū)崿F(xiàn)順序表的初始化,依次從鍵盤(pán)讀入數(shù)據(jù),建立順序表、表中元素的連續(xù)追加、求順序表的長(zhǎng)度、檢查順序表是否為空、檢查順序表是否為滿、顯示順序表、從順序表中查找元素、給定元素值找位置、向順序表中插入元素、從順序表中刪除元素、順序表的逆序排列等基本操作。2. 演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終端上顯示 “提示信息”之后,由用戶在鍵盤(pán)上輸入演示程序中規(guī)定的運(yùn)算命令。3. 程序執(zhí)行命令包過(guò)1)順序表的初始化;2)連續(xù)追加元素建表;3)求順序表長(zhǎng)度;4)檢查順序表是否為空;5)檢查順序表是否為滿;6)顯示順序表;7)從順序表中查找元素;

2、8)給定元素值找位置;9)向順序表中插入元素;10)從順序表中刪除元素;11)逆序二、概要設(shè)計(jì) 抽象化數(shù)據(jù)類型線性表的定義如下:ADT List 數(shù)據(jù)對(duì)象:D= ai|ai屬于 ElemSet, i=1 , 2,.,n,n>=0數(shù)據(jù)關(guān)系:R1=<ai-1,ai>|ai-1,ai 屬于 D, i=2, n基本操作:ListEmpty( L)初始條件:線性表L 已存在。操作結(jié)果:若L為空表,則返回TURE,否則返回FLASE。ListLength( L)初始條件:線性表L 已存在。操作結(jié)果:返回L 中數(shù)據(jù)元素個(gè)數(shù)。ListInsert( &L , i , e)初始條件:線

3、性表L 已存在,1<=i<=ListLength(L)+1 。操作結(jié)果:在L 中第 i 個(gè)位置之前插入新的數(shù)據(jù)元素e, L 的長(zhǎng)度加1ListDelete( &L,i,&e )初始條件:線性表L已存在且非空,1<=i<=ListLength(L)。操作結(jié)果:刪除L的第i個(gè)數(shù)據(jù)元素,并用e返回其值,L的長(zhǎng)度減一, ListTraverse (L, visit()初始條件:線性表L已存在。操作結(jié)果:依次對(duì)L的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù) visit ()。一旦visit () 失敗,則操作失敗。 ADT List主程序void main () 初始化;While (

4、“命令”!= "退出” )接受命令;處理命令;2.本程序只有兩個(gè)模塊,調(diào)用關(guān)系簡(jiǎn)單三、詳細(xì)設(shè)計(jì)1 .元素類型#include<stdafx.h>#include<stdio.h>#include<conio.h>#define MAXSIZE 100/*順序表存儲(chǔ)空間的總分配量*/typedef int ElemType; /* 定義 ElemType 為 int 類型*/*順序存儲(chǔ)類型*/typedef structElemType dataMAXSIZE; /* 存放線性表的數(shù)組 */int length;/* length是順序表的長(zhǎng)度*/S

5、qList;SqList L;2 .初始化順序表void SqListInit(SqList &L )3 .追加順序表void ListCreate(SqList &L)4 .求順序表長(zhǎng)度int ListLength(SqList L)5檢查順序表是否為空void ListEmpty(SqList L)6 .檢查順序表是否為滿void ListFull(SqList L)7 .顯示遍歷順表void ListTraverse(SqList L)8 .從順序表中查找元素void ListGet(SqList L ,int i)9 .從順序表中查找與給定元素值相同的元素在順序表中的位

6、置*/int ListLocate(SqList L, ElemType x)10 .向順序表中插入元素void ListInsert(SqList &L,int i,ElemType x)11 .從順序表中刪除元素void ListDelete(SqList L,int i)12 .順序表逆序排列void nixu(SqList &L)四、調(diào)試分析1 .此程序全面包含了順序表的所有功能,覆蓋全面,每個(gè)功能的實(shí)現(xiàn)都設(shè)計(jì)的非 常合理清晰。2 .本次試驗(yàn)使我們得到了一次良好的設(shè)計(jì)訓(xùn)練。五、用戶手冊(cè)1 .本程序的運(yùn)行環(huán)境為DOS操作系統(tǒng)。2 .進(jìn)入演示程序后,即顯示文本方式的用戶界面

7、:第一次操作需選擇初始化空荽 為元元 化否找除 始是杳一刪 初表$ 的覆表 表順唇 曷順順 順檢今2 .連續(xù)追加元素建表5 .檢查順序表是否為滿8 .給定元索福找位置3 .求艇序直代度6.顯不順序表九向順比表中插入 其壬建ifS,出-靖選擇所要進(jìn)行的操作統(tǒng)性表六至初始化!3 .運(yùn)行此程序后,確定符為“回車符”。按照提示依次進(jìn)行。六、測(cè)試結(jié)果執(zhí)行命令1': SqListInit(SqList &L )初始化線性表;執(zhí)行命令2':請(qǐng)輸入數(shù)值個(gè)數(shù)2輸入第一個(gè)數(shù)4輸入第一個(gè)數(shù)3執(zhí)行命令'3':順序表的長(zhǎng)度為2執(zhí)行命令4':"順序表不空?qǐng)?zhí)行命令&

8、#39;5':順序表已滿執(zhí)行命令6':當(dāng)前順序表中的元素為4 3執(zhí)行命令7 :請(qǐng)輸入要查找元素的位置2 順序表中第2 個(gè)元素的值為3執(zhí)行命令8 :請(qǐng)輸入要查找的元素的值3 順序表中2 的位置是:2執(zhí)行命令9 :請(qǐng)輸要插入元素的位置和其值:3 5執(zhí)行命令10 :請(qǐng)輸要?jiǎng)h除元素的位置:11 已被刪除七、附錄#include<stdio.h>#include<conio.h>#define MAXSIZE 100/*順序表存儲(chǔ)空間的總分配量*/typedef int ElemType; /* 定義 ElemType 為 int 類型*/* 順序存儲(chǔ)類型*/ty

9、pedef structElemType dataMAXSIZE; /* 存放線性表的數(shù)組*/int length;/* length 是順序表的長(zhǎng)度*/SqList;SqList L;/* 初始化順序表*/void SqListInit(SqList &L ) L.length=0;/* 追加順序表*/void ListCreate(SqList &L) int i,n;printf("請(qǐng)輸入數(shù)值個(gè)數(shù)”);scanf("%d",&n);for(i=0;i<n;i+)printf(" 輸入第 %d 個(gè)數(shù) ",i+1

10、);scanf("%d",&L.datai);L.length+;/* 求順序表長(zhǎng)度*/int ListLength(SqList L)return(L.length);/* 檢查順序表是否為空*/void ListEmpty(SqList L)if(L.length) printf(" 順序表不空");else printf("順序表為空");/*檢查順序表是否為滿*/void ListFull(SqList L)if(L.length=MAXSIZE) printf(" 順序表已滿");else pri

11、ntf("順序表不滿");/* 顯示遍歷順序表*/void ListTraverse(SqList L)int i;if(L.length<=0) printf(" 順序表為空n");else printf(" 當(dāng)前順序表中的元素為:n");for(i=0;i<L.length;i+) printf("%d ",L.datai);printf("n");/* 從順序表中查找元素*/void ListGet(SqList L ,int i)if(L.length=0) printf(&

12、quot; 順序表空n");else if(i<1|i>L.length) printf(" 查找的位置不正確n");else printf("順序表中第 d 個(gè)元素的值為:dn",i,L.datai-1); /* 從順序表中查找與給定元素值相同的元素在順序表中的位置*/int ListLocate(SqList L, ElemType x)int i=0;while(i<L.length && L.datai!=x)i+;if (i<L.length) return (i+1);else return

13、0;/* 向順序表中插入元素*/void ListInsert(SqList &L,int i,ElemType x)int j;if(L.length=MAXSIZE)printf("表滿,不能插入n");else if(i<1|i>L.length+1)printf(" 插入位置不正確n");else for(j=L.length-1;j>=i-1;j-)L.dataj+1=L.dataj;L.datai-1=x;L.length+; /* 從順序表中刪除元素*/void ListDelete(SqList L,int i)

14、int j;ElemType x;if (i<1|i>L.length)printf(" 刪除位置不正確n");else x=L.datai-1;for(j=i;j<=L.length-1;j+)L.dataj-1=L.dataj;L.length-;printf("%d 已被刪除n",x);/*順序表逆序排列*/void nixu(SqList &L) int j,t;for(j=0;j<L.length/2;j+)t=L.dataj;L.dataj=L.dataL.length-1-j; L.dataL.length-

15、1-j=t;int scan()int d;printf("1. 順序表的初始化2.連續(xù)追加元素建表3.求順序表長(zhǎng)度n");printf("4. 檢查順序表是否為空5.檢查順序表是否為滿6.顯示順序表n");printf("7. 從順序表中查找元素8.給定元素值找位置9.向順序表中插入元素n");printf("10.從順序表中刪除元素11.逆序其他鍵退出 n");printf("n");printf("nn 請(qǐng)選擇所要進(jìn)行的操作n");scanf("%d"

16、;,&d);return(d); void main()int quit=0;int i,location;ElemType e,prior,next;printf(" 第一次操作需選擇初始化nnn");while(!quit)switch(scan()case 1:SqListInit(L); printf("nn 線性表已經(jīng)初始化!nnn");break;case 2:ListCreate(L);break;case 3:printf("順序表的長(zhǎng)度為 dn",L.length);break;case 4:ListEmpt

17、y(L);break;case 5:ListFull(L);break;case 6:ListTraverse(L); break;case 7:printf"青輸入要查找白元素的位置n");scanf("%d",&i);ListGet(L,i); break;case 8:printf”青輸入要查找的元素的值n");scanf("%d",&e);if(L.length=0) printf(" 順序表已空n");elselocation=ListLocate(L,e);if(location=0) printf(" 順序表中不存在值為%d 的元素 n",e);else printf("順序表中 %d 的位置是:dn",e,Lis

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論