20XX數(shù)據(jù)結(jié)構(gòu)實驗報告_第1頁
20XX數(shù)據(jù)結(jié)構(gòu)實驗報告_第2頁
20XX數(shù)據(jù)結(jié)構(gòu)實驗報告_第3頁
20XX數(shù)據(jù)結(jié)構(gòu)實驗報告_第4頁
20XX數(shù)據(jù)結(jié)構(gòu)實驗報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、20XX數(shù)據(jù)結(jié)構(gòu)實驗報告課程名稱:實驗項目:實驗地點:專業(yè)班級:學生姓名:指導教師:數(shù)據(jù)結(jié)構(gòu)實驗線性表博學樓B座 學號: 20XX楊崇艷20XX年11月02日實驗一線性表二.實驗例題問題描述用鏈表形式存儲一個字符串,插入、刪除某個字符,最后按正序、逆序兩種方式輸出字符串。輸入初始字符串,插入位置,插入字符,刪除字符。輸出 已建立鏈表,插入字符后鏈表,刪除字符后鏈表,逆轉(zhuǎn)后鏈表。存儲結(jié)構(gòu)采用鏈式存儲結(jié)構(gòu)算法的基本思想 建立鏈表:當讀入字符不是結(jié)束符時,給結(jié)點分配存儲空間,寫數(shù)據(jù)域,將新結(jié)點插到表尾;插入字符:根據(jù)讀入 的字符在鏈表中找插入位置,將新結(jié)點插入到該位置之前;刪除字符:根據(jù)讀入的刪除字

2、符在鏈表中找到被刪結(jié)點后, 將其從鏈表中刪除;鏈表逆轉(zhuǎn):從鏈表的第一個結(jié)點開始對所有結(jié)點處理,將每個結(jié)點的前驅(qū)變?yōu)樗暮罄^;打印鏈表: 從鏈表的第一個結(jié)點開始,依次打印各個結(jié)點的數(shù)據(jù)域。#define NULL 0typ edef struct nodechar a;struct node *link; node,*nodelink;nodelink p,q;void readlink(nodelink head)char c;p=head;p rintf( scanf(while(c!=n) q=(nodelink)malloc(sizeof(node);q-a=c;p-li nk=q; p

3、=q;scanf(p-link=NULL; void writelink(nodelink head) nodelink q;if (head-link=NULL)o nfor(q=head-link;q;q=q-link)p rintf(p rintf(int insert(nodelinkhead,char k1,char k2) nodelink p,q;p=head-link;while( p-a!=k1 &p) p=p-link;if(P) q=(nodelink)malloc(sizeof(node);q-a=k2;q-link=p-link;p-li nk=q;return 1;

4、else p rintf( int delete(nodelink head,char k) nodelinkp,q;q=head; p=head-link;while( (p-a)!=k )&p) q=q-li nk; p=p-li nk; if(P) q-link=p-link; return 1; else p rintf( nodelink p,q;void op side(nodelinkhead)p=head-link;while( p-link)q=p-link;p-link=q-link;q-link=head-link; head-link=q; main char k1,k

5、2,k3;nodelink head;head=(nodelink)malloc(sizeof(node);head-link=NULL;readlink(head);if (head-link!=NULL)p rintf(if (head-link!=NULL) p rintf(k1=getch ;printf(p rintf( k2=getch ;printf(if (insert(head,k1,k2)p rintf(k3=getch ;p rintf(if (delete(head,k3)P rintf(writelink(head);if(head-link!=NULL)p rint

6、f( writelink(head); free(head); 四.運行結(jié)果Input a linktable(a string):dfkds pogjdj/ Buildlink is :dfkds pogjdjPI ease input a char you want to insert after:sPI ease input a char you want to insert:nAfter pinsert y,link is:dfkds np ogjdjPI ease input a char you want to delete:k/ afterdelete p,linkis:dfds

7、 npogjdjOp siteresultis :jdjgo pn sdfd五.實驗結(jié)果與分析通過本實驗,我熟練掌握線性表的基本操作在順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)上的實現(xiàn),提高分析和解決問題的能 力。豐富了編程經(jīng)驗,提高了對順序存儲結(jié)構(gòu)的知識點的理解和掌握。課程名稱:實驗項目:實驗地點:專業(yè)班級:學生姓名:指導教師:數(shù)據(jù)結(jié)構(gòu)實驗二樹博學樓B座 學號:20XX00楊崇艷20XX年11月02日實驗問題描述任意給定一棵二叉樹。試設計一個程序,在計算機中構(gòu)造該二叉樹,并對它進行遍歷。輸入棵二叉樹的結(jié)點若無子樹,則可將其子樹看作“.”輸入時,按照前序序列的順序輸入該結(jié)點的內(nèi)容。對 其輸入序列為ABD.EH

8、G.。輸出若為空二叉樹,則輸出:THIS IS A EMPTY BINARYTREE若二叉樹不空,按后序序列輸出,對上例,輸出結(jié)果為:DHEBIFGCA 存儲結(jié)構(gòu)采用二叉鏈表存儲。算法的基本思想采用遞歸方法建立和遍歷二叉樹。首先建立二叉樹的根結(jié)點,然后建立其左右子樹,直到空子樹為止。后序遍歷叉樹時,先遍歷左子樹,后遍歷右子樹,最后訪問根結(jié)點。#include #include struct nodechar info;struct node *llink,*rlink;typ edef struct node NODE; NODE *creat charx; NODE *p;scanf( p

9、rintf(if(x!=.) p=( NODE *)malloc(sizeof(NODE);p-in fo=x;p-llink=creat ;p-rlink=creat ;else p=NULL;return p;實驗四查找二.實驗例題問題描述將折半查找算法寫成完整的程序, 并上機通過。輸入有序表及待查找記錄 23,58。輸出輸入23 ,表中存在待查找記錄,則顯示該記錄在表中位置2,輸入58顯示該記錄不存在。存儲結(jié)構(gòu)有序表采用順序方式存儲。算法的基本思想首先用待查找記錄與查找區(qū)間中間位置記錄比較,若相等則查找成功,返回該記錄在表中的位置數(shù),若小于中間位置記錄,則修改區(qū)間上界為中間位置減1,若大

10、于中間位置記錄,則修改區(qū)間下界為中間位置加1,在新的區(qū)間內(nèi)繼續(xù)查找。當查找區(qū)間下界大于上界,則該記錄不存在。三.程序清單#includet yp edefstructint a30; intlength; sqtable; sqtable st; int b=0;void createst(int k) int i;printf( data: 0=-100;node; node afile20;for (i=1;(!b&(itypedef intnode x; int d,dl,n; int l,r,i,j;void q(int l,int r)int p;d+;if(dlx)&(ji)if(

11、ii)i+;if(ia=c;p-li nk=q;p=q;scanf(p-link=NULL; nodelink q;void writelink(nodelink head)if (head-link=NULL)。nfor(q=head-link;q;q=q-link)printf(p rintf(int insert(nodelinkhead,chark1,char k2) nodelink p,q;p=head-link;while( p-a!=k1 &p) p=p-link;if(P) q=(nodelink)malloc(sizeof(node);q-a=k2;q-link=p-lin

12、k;p-li nk=q;return 1;else p rintf( int delete(nodelink head,char k) nodelinkp,q;q=head; p=head-link;while( (p-a)!=k )&p) q=q-li nk; p=p-li nk; if(P) q-link=p-link; return 1; else p rintf( nodelink p,q;void op side(nodelinkhead)p=head-link;while( p-link)q=p-link;p-link=q-link;q-link=head-link; head-l

13、ink=q; mainchar k1,k2,k3;nodelink head;head=(nodelink)malloc(sizeof(node);head-link=NULL;readlink(head);if (head-link!=NULL)p rintf(if (head-link!=NULL) p rintf(k1=getch ;p rintf(p rintf( k2=getch ;printf(if (insert(head,k1,k2)printf(k3=getch ;printf(if (delete(head,k3)p rintf(writelink(head);if(hea

14、d-link!=NULL)p rintf( writelink(head); free(head); 四.運行結(jié)果Input a linktable(a string):dfkds pogjdj/ Buildlink is :dfkds pogjdjPI ease input a char you want to insert after:sPI ease input a char you want to insert:nAfter pinsert y,link is:dfkds np ogjdjPI ease input a char you want to delete:k/ afterd

15、elete p,linkis:dfds npogjdjOp siteresultis :jdjgo pn sdfd五.實驗結(jié)果與分析 通過本實驗,我熟練掌握線性表的基本操作在順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)上的實現(xiàn),提高分析和解決問題的能 力。豐富了編程經(jīng)驗,提高了對順序存儲結(jié)構(gòu)的知識點的理 解和掌握。課程名稱:實驗項目:實驗地點:專業(yè)班級:學生姓名:指導教師:數(shù)據(jù)結(jié)構(gòu)實驗二樹博學樓B座 學號:20XX00楊崇艷20XX年11月02日實驗二樹問題描述任意給定一棵二叉樹。試設計一個程序,在計算機中構(gòu)造該二叉樹,并對它進行遍歷。輸入else p=NULL;return p;棵二叉樹的結(jié)點若無子樹,則可將其子樹看作“.”輸入時,按照前序序列的順序輸入該結(jié)點的內(nèi)容。對其輸入序列為ABD.EH.G.輸出若為空二叉樹,則輸出:THIS IS A EMPTY BINARYTREE若二叉樹不空,按后序序列輸出,對上例,輸出結(jié)果為:DHEBIFGCA 存儲結(jié)構(gòu)采用二叉鏈表存儲。算法的基本思想采用遞歸方法建立和遍歷二叉樹。首先建立二叉樹的根結(jié)點,然后建立其左右子樹,直到空子樹為止

溫馨提示

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

評論

0/150

提交評論