線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第1頁(yè)
線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第2頁(yè)
線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第3頁(yè)
線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第4頁(yè)
線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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ù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)學(xué)號(hào):2011129127姓名:劉瑞奇指導(dǎo)老師:解德祥計(jì)算機(jī)與信息學(xué)院實(shí)驗(yàn)1線性表的抽象數(shù)據(jù)類型的實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康?. 掌握線性表的順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu);2. 熟練掌握順序表和鏈表基本算法的實(shí)現(xiàn);3. 掌握利用線性表數(shù)據(jù)結(jié)構(gòu)解決實(shí)際問(wèn)題的方法和基本技巧;4. 按照實(shí)驗(yàn)題目要求獨(dú)立正確地完成實(shí)驗(yàn)內(nèi)容(編寫(xiě)、調(diào)試算法程序,提交程序清單及及相關(guān)實(shí)驗(yàn)數(shù)據(jù)與運(yùn)行結(jié)果);5. 按時(shí)提交實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)環(huán)境計(jì)算機(jī)、c語(yǔ)言程序設(shè)計(jì)環(huán)境實(shí)驗(yàn)學(xué)時(shí)2學(xué)時(shí),選做實(shí)驗(yàn)。實(shí)驗(yàn)內(nèi)容一、順序表的基本操作實(shí)現(xiàn)實(shí)驗(yàn)要求:數(shù)據(jù)元素類型elemtype取整型int。按照順序存儲(chǔ)結(jié)構(gòu)

2、實(shí)現(xiàn)如下算法(各算法邊界條件和返回結(jié)果適當(dāng)給出): 創(chuàng)建任意整數(shù)線性表(即線性表的元素值隨機(jī)在鍵盤上輸入),長(zhǎng)度限定在20之內(nèi); 打?。ū闅v)該線性表(依次打印出表中元素值); 在線性表中查找第i個(gè)元素,并返回其值; 在線性表中第i個(gè)元素之前插入一已知元素; 在線性表中刪除第i個(gè)元素; 求線性表中所有元素值(整數(shù))之和;實(shí)驗(yàn)步驟c源程序代碼/*file:seqlist.cpp*/#include#include#include#define size 20#define elemtype intstruct seqlistelemtype elemsize;int last;void menu

3、()printf(n.);printf(n0.退出操作.);printf(n1.建立數(shù)據(jù)類型為整形的順序表(長(zhǎng)度小于20).);printf(n2.打印線性表.);printf(n3.在線性表中查找第i個(gè)元素,并返回其值.);printf(n4.在線性表中第i個(gè)元素之前插入一已知元素.);printf(n5.在線性表中刪除第i個(gè)元素.);printf(n6.求線性表中所有元素值(整數(shù))之和.);printf(n7.初始化.n);void ins(seqlist *l)l-last=-1;void creat(seqlist *l)int i=0;elemtype j;printf(請(qǐng)輸入線性表

4、元素(-1結(jié)束):);scanf(%d,&j);while(j!=-1) l-elemi+=j;l-last+;if(isize-1) break;scanf(%d,&j);void print(seqlist *l)int i;printf(順序表中元素為:);for(i=0;ilast;i+)printf(%dt,l-elemi);int find(seqlist *l,int i)if(il-last+1)return 0;elsereturn(l-elemi-1);int insert(seqlist *l,int i,int x)int j;if(l-last+1=size|il-l

5、ast+2)return 0;l-last+;for(j=l-last;j=i-1;j-)l-elemj+1=l-elemj;l-elemi-1=x;return 1;int del(seqlist *l,int i)int e,j;if(l-last=-1|il-last+1)return 0;elsee=l-elemi-1;for(j=i;jlast+1;j+)l-elemj-1=l-elemj;l-last-;return 1;int sum(seqlist *l)int i=0,s=0;if(l-last=-1)return 0;for(i=0;ilast;i+)s+=l-elemi;

6、return s;int isempty(seqlist *l)if(l-last=-1)return 1;else return 0;void main()int i,cz,e;elemtype date;seqlist l;menu();printf(請(qǐng)輸入你要執(zhí)行的操作的序號(hào):);i=scanf(%d,&cz);while(1)if(!i)printf(只能輸入數(shù)值);elsebreak;printf(n再輸入一次:);rewind(stdin);i=scanf(%d,&cz);while(cz)switch(cz)case 1:if(isempty(&l)ins(&l); creat(

7、&l);elseprintf(表已經(jīng)存在,先清空再進(jìn)行此操作!n);break;case 2:if(isempty(&l)printf(表為空n);elseprint(&l);break;case 3:printf(輸入待查找元素的位置:n);scanf(%d,&i);if(find(&l,i)printf(查找的第%d個(gè)元素為%dn,i,find(&l,i);elseprintf(查找位置錯(cuò)誤n);break;case 4:printf(請(qǐng)輸入要插入的元素及位置:n);scanf(%d,&date);scanf(%d,&i);if(insert(&l,i,date)printf(插入元素成功

8、!n);else printf(插入位置不合法或棧已滿!n);break;case 5:printf(請(qǐng)輸入要?jiǎng)h除元素的位置n);scanf(%d,&i);e=l.elemi-1;if(del(&l,i)printf(刪除第%d個(gè)值為%d的元素n,i,e);printf(刪除成功n);elseprintf(刪除位置不合法或表已空n);break;case 6:if(isempty(&l)printf(表已空!n);else printf(線性表中所有元素值(整數(shù))和:%dn,sum(&l);break;case 7:ins(&l);break;default: printf(無(wú)此操作!n);b

9、reak;menu();printf(請(qǐng)輸入你要執(zhí)行的操作的序號(hào):);i=scanf(%d,&cz);while(1)if(!i) printf(n只能輸入數(shù)值);elsebreak;printf(n再輸入一次:);rewind(stdin);i=scanf(%d,&cz);測(cè)試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果7.初始化1.建表2.打印3.查找4.插入不合法 長(zhǎng)度超過(guò)205.刪除然后打印4.插入合法6.求和二、鏈表(帶頭結(jié)點(diǎn))基本操作實(shí)驗(yàn)要求:數(shù)據(jù)元素類型elemtype取字符型char。按照動(dòng)態(tài)單循環(huán)鏈表結(jié)構(gòu)實(shí)現(xiàn)如下算法(各算法邊界條件適當(dāng)給出): 創(chuàng)建任意字符型有序(遞增排序)單循環(huán)鏈表(即鏈表的字符元素隨

10、機(jī)在鍵盤上輸入),長(zhǎng)度限定在15之內(nèi); 打?。ū闅v)該鏈表(依次打印出表中元素值); 在鏈表中查找第i個(gè)元素,i合法返回元素值,否則,返回false; 在鏈表中查找與一已知字符相同的第一個(gè)結(jié)點(diǎn),有則返回true,否則,返回false; 在鏈表中按照有序方式插入一已知字符元素; 在線性表中刪除第i個(gè)結(jié)點(diǎn); 計(jì)算鏈表的長(zhǎng)度。實(shí)驗(yàn)步驟c源程序代碼 #include#include#include#define elemtype char#define size 15static int n=0;typedef struct nodeelemtype data;struct node * next;n

11、ode,*linklist;void init(linklist *l)*l=(linklist)malloc(sizeof(node);(*l)-next=*l;n=0;void creat(linklist l)int i=0,j;node *s,*r;elemtype csize,t;r=l-next;printf(請(qǐng)輸入字符型元素(最多15個(gè),輸入字符結(jié)束):);scanf(%s,c);while(ci!=)n+;i+;i=0;for(i=0;in;i+)for(j=i;jn-i-1;j+)if(cjcj+1)t=cj;cj=cj+1;cj+1=t;for(i=0;idata=t;r-

12、next=s;r=s;void length(linklist l)printf(鏈表長(zhǎng)度為:%d,n);void show(linklist l)int j;node *p;p=l;if(!p)printf(表為空!);return;for(j=0;jnext-data);p=p-next;int isempty(linklist l)node *pre;pre=l;if(pre-next=l)return 1;return 0;void find4(linklist l,int i)int j=0;node *p;if(isize)printf(查找位置錯(cuò)誤!);p=l;while(jne

13、xt;j+;if(i=j)printf(%c,p-data);void find5(linklist l,elemtype k)int i=1,j;node *p;p=l-next;if(n=0)printf(表為空!n);return;for(j=0;jdata!=k)p=p-next;else printf(第%d個(gè)元素是要查找的元素%c,i,k);return;printf(鏈表中無(wú)此字符!);void insert(linklist l,elemtype t)node *r,*s;int i=0;r=l;if(n=size)printf(表已滿!);return;for(i;in-1&

14、tnext-data;i+)i+;r=r-next;s=(node *)malloc(sizeof(node);s-data=t;s-next=r-next;r-next=s;printf(插入成功!);n+;return;void del(linklist l,int i)int j=0;node *p,*r;if(in) printf(刪除位置不對(duì)!);return;p=l;while(jnext;printf(開(kāi)始刪除);r=p-next;p-next=r-next;free(r);printf(刪除成功!);n-;void menu()printf(.n);printf(0.退出程序.

15、n);printf(1.初始化單循環(huán)鏈表.n);printf(2.創(chuàng)建任意字符型有序(遞減排序 最長(zhǎng)15)單循環(huán)鏈表.n);printf(3.打?。ū闅v)該鏈表(依次打印出表中元素值).n);printf(4.在鏈表中查找第i個(gè)元素.n);printf(5.在鏈表中查找與一已知字符相同的第一個(gè)結(jié)點(diǎn).n);printf(6.在鏈表中按照有序方式插入一已知字符元素.n);printf(7.在線性表中刪除第i個(gè)結(jié)點(diǎn).n);printf(8.計(jì)算鏈表的長(zhǎng)度.n);printf(.n);void main()int cz,i,j,k;char key,t;linklist l;menu();printf

16、(請(qǐng)輸入你要執(zhí)行的操作的序號(hào):);i=scanf(%d,&cz);while(1)if(!i)printf(n只能輸入數(shù)值);elsebreak;printf(n再輸入一次:);rewind(stdin);i=scanf(%d,&cz);while(cz)switch(cz)case 1:init(&l);break;case 2:if(isempty(l)creat(l);elseprintf(表已存在,請(qǐng)先初始化單循環(huán)鏈表!n);break;case 3:show(l);break;case 4:printf(請(qǐng)輸入查找的第i個(gè)元素的i值:);j=scanf(%d,&i);while(1)if(!j)printf(n只能輸入數(shù)值);elsebreak;printf(n再輸入一次:);rewind(stdin);j=scanf(%d,&cz);find4(l,i);break;case 5:printf(請(qǐng)輸入要查找的字符:);rewind(stdin);scanf(%c,&key);find5(l,key);break;case 6:printf(請(qǐng)輸入要插入的字符:);rewind(stdin);scanf(%c,&t);insert

溫馨提示

  • 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)論