《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告模板(級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè))_第1頁
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告模板(級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè))_第2頁
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告模板(級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè))_第3頁
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告模板(級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè))_第4頁
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告模板(級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè))_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、院 系: 計(jì)算機(jī)科學(xué)學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 年 級(jí): 課程名稱: 數(shù)據(jù)結(jié)構(gòu) 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 201年 3 月 1日年級(jí)班號(hào)學(xué)號(hào)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)姓名實(shí)驗(yàn)名稱順序表的相關(guān)操作演示實(shí)驗(yàn)類型設(shè)計(jì)型綜合型創(chuàng)新型實(shí)驗(yàn)?zāi)康幕蛞髮?shí)驗(yàn)?zāi)康模和ㄟ^上機(jī)實(shí)踐,使學(xué)生進(jìn)一步掌握線性表的邏輯定義、存儲(chǔ)結(jié)構(gòu)以及相關(guān)應(yīng)用。 實(shí)驗(yàn)要求:自定義存儲(chǔ)結(jié)構(gòu),用c或c+語言編寫程序,要求程序模塊清晰,菜單界面,有運(yùn)行結(jié)果。四個(gè)題目任選一個(gè)寫入實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)原理(算法流程) 1.編寫頭文件。定義數(shù)據(jù)類型。分別寫各個(gè)函數(shù)如listinsern_sq,listdelete_sq,locateelem等函數(shù)。2

2、.編寫主函數(shù)。在主函數(shù)里構(gòu)造空的線性表,然后利用listinsert函數(shù)使用戶初始化線性表。然后調(diào)用函數(shù)操作,操作結(jié)果用printlist_sq打印出線性表的內(nèi)容3.運(yùn)行程序組內(nèi)分工(可選) 無實(shí)驗(yàn)結(jié)果分析及心得體會(huì)函數(shù)頭,是一個(gè)函數(shù)指針,值向調(diào)用的函數(shù),這個(gè)調(diào)用的函數(shù)即為主函數(shù)中的上面一段的意思即:在主函數(shù)中調(diào)用這個(gè)locateelem_sq函數(shù),然后其中就是的*compare指向cmp這個(gè)函數(shù)的入口,所以compare=cmp,locateelem_sq函數(shù)中將調(diào)用cmp函數(shù)。2.使用malloc函數(shù)需要包含一個(gè)頭文件#include成績?cè)u(píng)定教師簽名: 2014年 月 日備注:源代碼附后,

3、源代碼要求有注釋說明年級(jí)班號(hào)學(xué)號(hào)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)姓名實(shí)驗(yàn)名稱括號(hào)匹配的檢驗(yàn)實(shí)驗(yàn)類型設(shè)計(jì)型綜合型創(chuàng)新型實(shí)驗(yàn)?zāi)康幕蛞髮?shí)驗(yàn)?zāi)康模和ㄟ^上機(jī)實(shí)踐,使學(xué)生進(jìn)一步掌握棧這種特殊線性表的邏輯定義、存儲(chǔ)結(jié)構(gòu)以及初始化棧、入棧、出棧、棧判空等基本操作的具體實(shí)現(xiàn),使學(xué)生能夠應(yīng)用棧的思想解決相關(guān)實(shí)際問題。 實(shí)驗(yàn)要求:自定義存儲(chǔ)結(jié)構(gòu),用c或c+語言編寫程序,要求程序應(yīng)用棧的操作,模塊清晰,菜單界面,有運(yùn)行結(jié)果。三個(gè)題目任選一個(gè)寫入實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)原理(算法流程) 假設(shè)表達(dá)式中允許包括兩種括號(hào):圓括號(hào)和方括號(hào),其嵌套的順序隨意,即(【】()或【(【】【】)】等為正確的格式,【(】)或(【()等均為不正確格式。在設(shè)計(jì)程

4、序的時(shí)候,借助于棧,將每個(gè)元素遍歷一遍,根據(jù)一定的條件來確定是出棧還是入棧,如果最后棧為空,則括號(hào)是匹配的,否則不會(huì)匹配。組內(nèi)分工(可選) 無實(shí)驗(yàn)結(jié)果分析及心得體會(huì)數(shù)據(jù)結(jié)構(gòu)是一個(gè)棧遇到左括號(hào),括號(hào)進(jìn)棧遇到一個(gè)右括號(hào),棧頂括號(hào)出棧,只到輸入結(jié)束,檢查棧是否空只是最簡單的括號(hào)匹配堅(jiān)持成績?cè)u(píng)定教師簽名: 年 月 日備注:源代碼附后,源代碼要求有注釋說明年級(jí)班號(hào)學(xué)號(hào)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)姓名實(shí)驗(yàn)名稱二叉樹的基本操作演示 實(shí)驗(yàn)類型設(shè)計(jì)型綜合型創(chuàng)新型實(shí)驗(yàn)?zāi)康幕蛞髮?shí)驗(yàn)?zāi)康模和ㄟ^上機(jī)實(shí)踐,使學(xué)生進(jìn)一步掌握二叉樹的遞歸結(jié)構(gòu)定義、存儲(chǔ)結(jié)構(gòu)、二叉樹的創(chuàng)建、遍歷等相關(guān)操作及其應(yīng)用。 實(shí)驗(yàn)要求: 用c或c+語言編寫程序

5、,要求程序模塊清晰,菜單界面,有運(yùn)行結(jié)果。1、自定義結(jié)點(diǎn)結(jié)構(gòu),以二叉鏈表為存儲(chǔ)結(jié)構(gòu)(1) 創(chuàng)建二叉樹(2) 輸出二叉樹的先序、中序和后序遞歸和非遞歸遍歷下的結(jié)點(diǎn)訪問次序(3) 輸出二叉樹所有的葉子節(jié)點(diǎn)和葉子節(jié)點(diǎn)個(gè)數(shù)(4) 輸出二叉樹的按層次遍歷序列。(5) 輸出二叉樹的高度2、任意給定一段電文,為其中出現(xiàn)的字符設(shè)計(jì)赫夫曼編碼,使總電文編碼長度最短。兩個(gè)題目任選一個(gè)寫入實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)原理(算法流程) (1)輸入字符序列,建立二叉鏈表。(2)先序、中序、后序遍歷二叉樹:遞歸算法。(3)中序遍歷二叉樹:非遞歸算法。(最好也能實(shí)現(xiàn)先序、后序非遞歸算法)(4)求二叉樹的高度 。(5)求二叉樹的葉子個(gè)數(shù)。

6、(6)借助隊(duì)列實(shí)現(xiàn)二叉樹的層次遍歷。(7)在主函數(shù)中設(shè)計(jì)一個(gè)簡單的菜單,分別調(diào)試上述算法。 組內(nèi)分工(可選) 無實(shí)驗(yàn)結(jié)果分析及心得體會(huì)實(shí)現(xiàn)了實(shí)驗(yàn)的基本要求,對(duì)于二叉樹也有了更深的了解,其中對(duì)于遞歸的應(yīng)用真是太奇妙了,花了很長時(shí)間才搞出來,遞歸果然是天才想出來的算法。對(duì)于算法的研究真是無止境啊。成績?cè)u(píng)定教師簽名: 年 月 日備注:源代碼附后,源代碼要求有注釋說明年級(jí)班號(hào)學(xué)號(hào)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)姓名實(shí)驗(yàn)名稱圖遍歷的演示 實(shí)驗(yàn)類型設(shè)計(jì)型綜合型創(chuàng)新型實(shí)驗(yàn)?zāi)康幕蛞髮?shí)驗(yàn)?zāi)康模和ㄟ^上機(jī)實(shí)踐,使學(xué)生進(jìn)一步掌握?qǐng)D的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和圖在采用領(lǐng)接表的存儲(chǔ)結(jié)構(gòu)下的深度優(yōu)先搜索和廣度優(yōu)先搜索算法以及圖的相關(guān)應(yīng)用。

7、 實(shí)驗(yàn)要求: 自定義存儲(chǔ)結(jié)構(gòu),用c或c+語言編寫程序,要求程序模塊清晰,菜單界面,有運(yùn)行結(jié)果。三個(gè)題目任選一個(gè)寫入實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)原理(算法流程)首先從圖中某個(gè)頂點(diǎn)v0出發(fā),訪問此頂點(diǎn),然后依次從v0相鄰的頂點(diǎn)出發(fā)深度優(yōu)先遍歷,直至圖中所有與v0路徑相通的頂點(diǎn)都被訪問了;若此時(shí)尚有頂點(diǎn)未被訪問,則從中選一個(gè)頂點(diǎn)作為起始點(diǎn),重復(fù)上述過程,直到所有的頂點(diǎn)都被訪問??梢钥闯錾疃葍?yōu)先遍歷是一個(gè)遞歸的過程 廣度優(yōu)先遍歷 基本思想:首先,從圖的某個(gè)頂點(diǎn)v0出發(fā),訪問了v0之后,依次訪問與v0相鄰的未被訪問的頂點(diǎn),然后分別從這些頂點(diǎn)出發(fā),廣度優(yōu)先遍歷,直至所有的頂點(diǎn)都被訪問完。 組內(nèi)分工(可選) 無實(shí)驗(yàn)結(jié)果分

8、析及心得體會(huì)圖的遍歷是這一章所有算法的基礎(chǔ)。雖然圖的拓?fù)渑判蛩惴ㄔ诮Y(jié)構(gòu)上與遍歷算法不同,可是拓?fù)渑判虻倪^程仍然或多或少有著遍歷的影子。對(duì)遍歷算法的深刻認(rèn)識(shí)直接決定了圖的算法設(shè)計(jì)的成敗。遍歷算法分兩種,深度遍歷和廣度遍歷。深度遍歷是重點(diǎn)。書上算法7.5給出的是一個(gè)簡單深度優(yōu)先遍歷。所謂簡單深度優(yōu)先遍歷,是沒有回溯,嚴(yán)格的先根遍歷。它的解題能力很有限,大約只能解決判斷vi,vj之間是否連通之類的問題。成績?cè)u(píng)定教師簽名: 年 月 日備注:源代碼附后,源代碼要求有注釋說明程序代碼1#include /順序表的 創(chuàng)建 查找 插入 刪除 輸出 合并#define listsize 100/最大的順序表的長

9、度宏定義 有點(diǎn)浪費(fèi)內(nèi)存 后期可以改動(dòng)typedef struct int datalistsize;/數(shù)值 int length;/長度seqlist;/結(jié)構(gòu)體的定義及其名稱的更改int nmax;/全局變量來存放用戶定義的順序表的長度int list = 0 ;void main()/主程序 void createlist(seqlist *l,int n); void printlist(seqlist *l); void locateelem(seqlist *l); void listinsert(seqlist *l); void listdelete(seqlist *l); vo

10、id exlist(seqlist *l, int list); void mixlist(seqlist *l0,seqlist *l1); int i=0; seqlist l2; /新建一個(gè)結(jié)構(gòu)體來存放必要的數(shù)據(jù) l0.length=0; /初始化結(jié)構(gòu)體的長度標(biāo)示,默認(rèn)為0 int flag = 0; /定義標(biāo)志符 /是否創(chuàng)建順序表的標(biāo)示符char flagc = n; /標(biāo)示符用于判斷用戶的字符輸入 int choose; /標(biāo)示符標(biāo)示用戶的輸入if(flag = 0) /默認(rèn)為沒有順序表達(dá)的創(chuàng)建 printf(還未創(chuàng)建順序表是否創(chuàng)建(n/y)?n); scanf_s( %c ,& f

11、lagc); /詢問用戶是否創(chuàng)建順序表,并修改創(chuàng)建標(biāo)示 if(flagc = n| flagc = n)/exit(); /如果用戶不創(chuàng)建則退出程序 else flag = 1; createlist(&l0,1); /修改標(biāo)示符并開始創(chuàng)建順序表 for(i = 0 ; i 2) printf (超出可建表的范圍n); printf(請(qǐng)輸入線性表長度:); scanf_s(%d,&nmax); n = nmax; printf(請(qǐng)輸入順序表元素:n); for(i=0,j= 1 ; i datai); l - length = j; /輸出順序表void printlist(seqlist *

12、l) int i; printf(順序表為:); for( i = 0 ;i length ;i+) printf(%d ,l-datai); /查找元素void locateelem(seqlist *l) int i,*p,n,flag = 0; p = l-data; printf(請(qǐng)輸入要查找的元素n:); scanf_s(%d,&n); for( i = 0 ; i length ; i + ) if(n = l-datai) printf(要查找的數(shù)的位置為第 %d 個(gè)n,i+1); flag = 1; if(flag = 0) printf(未查找到 d% 元素n,n); /插入

13、元素void listinsert(seqlist *l) int in,n,i,j; printf(n請(qǐng)輸入要插入的數(shù):); scanf_s(%d,&n); printf(請(qǐng)輸入要插入的的位置如(想將插入的數(shù)設(shè)為第一個(gè)請(qǐng)輸入1)n); scanf_s(%d,&in); if ( in l-length + 1) printf(輸入的數(shù)值無效,請(qǐng)重新輸入); printf(請(qǐng)輸入要插入的的位置如(想將插入的數(shù)設(shè)為第一個(gè)請(qǐng)輸入1)n); scanf_s(%d,&in); else + l-length ; /容量增加一個(gè) for( i = 1,j = l- length ; i length +

14、 1 ; i +) / if ( i = in ) /找到插入位置 while(j != in - 1) l-dataj = l-dataj-1; /將元素依次向后移 j-; /直到插入的位置停止 l-datai-1 = n ; printf(輸出新表:n); for(i=0;i length;i+) printf(%d ,l-datai); /刪除元素void listdelete(seqlist *l)int i,j; printf(n請(qǐng)輸入要?jiǎng)h除的數(shù)的位置:如刪除第一個(gè)請(qǐng)輸入1n); scanf_s(%d,&i); if(i l - length ) printf(輸入數(shù)值無效刪除元素失

15、敗!); else for( j = 0 ; j length ; j + ) if(i = j ) l-datai-1 = l-datai; i +; - l - length; for(i = 0 ; i length; i + ) printf(%d ,l-datai); /切換線性表void exlist(seqlist *l ,int n) if(n = 0) list = 1; else list = 0 ;void mixlist(seqlist *l0,seqlist *l1) int length,i; length = l0-length; l0-length += l1

16、- length; for(i = 0 ;length length ;i+ ,length +) l0-datalength = l1-datai; printlist(l0);2#include #include #include #define maxlen 50 typedef struct stack char ch50; int top; st; /棧的初始化 st *st_init() st *st; if (st=(st *)malloc(sizeof(st) st-top=0; return st; return null; /出棧操作 int st_pop(st *st)

17、if (st-top=0) printf(棧為空n); return 0; st-top-; return st-chst-top; void st_push(st *st,char c) if (st-top=maxlen) printf(棧溢出n); return ; st-chst-top=c; st-top+; /符號(hào)檢驗(yàn)函數(shù) void check_symbol(st *st,char *a) int i; st_push(st,a0); for (i=1;ichst-top-1=)|(ai=)&st-chst-top-1=()/出棧的條件 st_pop(st); else st_pu

18、sh(st,ai); if(st-top=0) printf(括號(hào)是匹配的nn); else printf(括號(hào)不匹配nn); void main() while (1) char s50; st *st; st=st_init(); printf(請(qǐng)輸入一串括號(hào):n); scanf(%s,s); if(s0=e) return; check_symbol(st,s); 3#include stdio.h#include malloc.h#definemaxsize 20/二叉樹結(jié)點(diǎn)的結(jié)構(gòu)體表示形式typedef structnodechardata;structnode*left,*righ

19、t;btree;/棧的結(jié)構(gòu)體表示形式typedef structstackelem btree*amaxsize;inttop;stack;/隊(duì)列的結(jié)構(gòu)體的表示形式typedef structqueueelem btree*bmaxsize;intfront,rear;queue;/創(chuàng)建二叉樹,利用遞歸的方法btree*create()charch; scanf_s(%c,&ch); getchar();if(ch=#) returnnull; else btree*btree=(btree*)malloc(sizeof(btree);if(null=btree) returnnull; bt

20、ree-data=ch; btree-left=create(); btree-right=create();returnbtree; /前序遍歷,遞歸的方法voidpreorder(btree*bt)if(null!=bt) printf(%c ,bt-data); preorder(bt-left); preorder(bt-right); /前序遍歷的非遞歸實(shí)現(xiàn)/* 思想:利用棧來實(shí)現(xiàn);根結(jié)點(diǎn)進(jìn)棧,之后棧非空,彈出,接著根節(jié)點(diǎn)的右結(jié)點(diǎn)進(jìn)棧,之后,左節(jié)點(diǎn)進(jìn)棧;接著,彈出棧頂元素(輸出), 此結(jié)點(diǎn)的右結(jié)點(diǎn)進(jìn)棧,之后左節(jié)點(diǎn)進(jìn)棧,彈出棧頂元素(輸出).一直這樣下去,直到棧為空。*/voidpre

21、order2(btree*bt) btree*p; stack st; st.top=-1;if(null=bt) return; else st.top+; st.ast.top=bt;while(st.top!=-1) p=st.ast.top; st.top-; printf(%c ,p-data);if(p-right!=null) st.top+; st.ast.top=p-right; if(p-left!=null) st.top+; st.ast.top=p-left; /中序遍歷,遞歸實(shí)現(xiàn)voidinorder(btree*bt)if(null!=bt) inorder(bt

22、-left); printf(%c ,bt-data); inorder(bt-right); /中序遍歷,非遞歸實(shí)現(xiàn)/* 思想:利用棧。從根節(jié)點(diǎn)開始,循環(huán),只要有左子節(jié)點(diǎn)則進(jìn)棧,直到左子節(jié)點(diǎn)為空。接著彈出棧頂輸出,判斷該結(jié)點(diǎn)是否有右子節(jié)點(diǎn), 若有則進(jìn)棧,若沒有繼續(xù)彈棧。有右子節(jié)點(diǎn)的情況,判斷該節(jié)點(diǎn)是否有左子節(jié)點(diǎn),有則進(jìn)棧,直到左子節(jié)點(diǎn)為空;若該右子節(jié)點(diǎn)沒有 左子節(jié)點(diǎn),則彈棧;判斷彈出的節(jié)點(diǎn),是否有右子節(jié)點(diǎn),若有則進(jìn)棧,沒有繼續(xù)彈棧;接著又要判斷剛進(jìn)棧的這個(gè)節(jié)點(diǎn),是否有左子節(jié)點(diǎn), 有則進(jìn)棧,沒有則繼續(xù)彈棧。重復(fù)下去. btree*p,*q; stack st; st.top=-1;if(nul

23、l=bt) return; else while(bt!=null) st.top+; st.ast.top=bt; bt=bt-left; while(st.top!=-1) p=st.ast.top; st.top-; printf(%c ,p-data);while( p-right!=null ) st.top+; st.ast.top=p-right; q=p-right;while(q-left!=null) st.top+; st.ast.top=q-left; q=q-left; break; /后序遍歷,遞歸實(shí)現(xiàn)voidpostorder(btree*bt)if(bt!=nu

24、ll) postorder(bt-left); postorder(bt-right); printf(%c ,bt-data); /后序遍歷,非遞歸實(shí)現(xiàn)/* 算法思想:利用棧來實(shí)現(xiàn)。從根結(jié)點(diǎn)開始,只要左子節(jié)點(diǎn)非空,則進(jìn)棧,直到左子節(jié)點(diǎn)為空為止。取出棧頂元素(只是取,并去彈棧),判斷 1:取出的棧頂元素是否有右子節(jié)點(diǎn),或者右子節(jié)點(diǎn)是否被訪問過,若滿足條件(無右子節(jié)點(diǎn),或者右子節(jié)點(diǎn)被訪問過),則輸出該結(jié)點(diǎn), 同時(shí)彈棧,并且記錄下該訪問的節(jié)點(diǎn)。 2:取出的棧頂元素,若有右子節(jié)點(diǎn),且未被訪問過,則指針繼續(xù)移動(dòng)到右子節(jié)點(diǎn),重復(fù)一開始是否又左子節(jié)點(diǎn)的判斷。*/voidpostorder2(btree*b

25、t) stack st; st.top=-1; btree*t;intflag;do while(bt!=null) st.top+; st.ast.top=bt; bt=bt-left; t=null; flag=1;while(st.top!=-1&flag) bt=st.ast.top;if(bt-right=t) /t:表示為null,或者右子節(jié)點(diǎn)被訪問過了。 printf(%c ,bt-data); st.top-; t=bt; /t記錄下剛剛訪問的節(jié)點(diǎn)else bt=bt-right; flag=0; while(st.top!=-1);/求二叉樹的高度,遞歸實(shí)現(xiàn)intheight

26、(btree*bt)intdepth1,depth2;if(null=bt) return0; else depth1=height(bt-left); depth2=height(bt-right);if(depth1depth2) return(depth1+1); else return(depth2+1); /層次遍歷二叉樹,用隊(duì)列來實(shí)現(xiàn)voidtraversaloflevel(btree*bt) queue q; q.front=q.rear=0;if(bt!=null) printf(%c ,bt-data); q.bq.front=bt; q.rear=q.rear+1;whil

27、e(q.frontleft!=null) printf(%c ,bt-left-data); q.bq.rear=bt-left; q.rear=q.rear+1; if(bt-right!=null) printf(%c ,bt-right-data); q.bq.rear=bt-right; q.rear=q.rear+1; intmain() btree*btr=create(); printf(前序遍歷:遞歸和非遞歸實(shí)現(xiàn):n); preorder(btr); printf(n); preorder2(btr); printf(n); printf(中序遍歷:遞歸和非遞歸實(shí)現(xiàn):n); i

28、norder(btr); printf(n); inorder2(btr); printf(n); printf(后序遍歷:遞歸和非遞歸實(shí)現(xiàn):n); postorder(btr); printf(n); postorder2(btr); printf(n); printf(二叉樹的高度:n);inthgt=height(btr); printf(%d n,hgt); printf(層次遍歷二叉樹:n); traversaloflevel(btr); printf(n);return0;4#define max 20#include#include typedef struct qnodeint

29、 data;struct qnode *next;qnode;typedef struct qnode *front;qnode *rear;queue;/定義一個(gè)隊(duì)列typedef struct arcnode int adjvex;/鄰接點(diǎn)頂點(diǎn)的位置struct arcnode *nextarc;/指向下一條弧的指針arcnode;typedef struct vnode/頭結(jié)點(diǎn)char data;arcnode *firstarc;/鄰接鏈表頭指針vnode;typedef structvnode adjlistmax;int v,a;/圖的頂點(diǎn)數(shù)和邊數(shù)algraph;int initq

30、ueue(queue *s)/構(gòu)造一個(gè)空的對(duì)列s-front=s-rear=(qnode*)malloc(sizeof(qnode);if(!s-front)return(0);s-front-next=null;return 1; enqueue (queue *s,int e)/入隊(duì)列 qnode *p;p=(qnode*)malloc (sizeof(qnode);if (!p)return(0);p-data=e;p-next=null;s-rear-next=p;s-rear=p;return 1;dequeue (queue *q, int *e)/出隊(duì)列qnode *p;if (

31、q-front=q-rear)return 1;/表示這是空對(duì)列p=q-front-next;*e=p-data;/附值q-front-next=p-next;if (q-rear=p)q-rear=q-front;free(p);return 1;int emptyqueue(queue *q)/判斷隊(duì)列是否為空if(q-front=q-rear)return 1;elsereturn 0;void buildalgraph(algraph *s)/構(gòu)建圖int i,m,n;arcnode *p; printf(請(qǐng)輸入圖的頂點(diǎn)數(shù)和邊數(shù):);scanf(%d%d,&s-v,&s-a);getchar();printf(請(qǐng)輸入%d個(gè)頂點(diǎn)的信息:,s-v);/注意輸入的時(shí)候空格隔開每個(gè)頂點(diǎn)之間for(i=0;iv;i+)scanf(%s,&s-adjlisti.data); /*讀入頂點(diǎn)信息*/s-adjlisti.firstarc=null; /*邊表置為空表*/for(i=0;ia;i+)printf(輸入第%d條邊(起點(diǎn)序號(hào),終點(diǎn)序號(hào)):

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論