




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗一 線性表的應(yīng)用1實驗名稱商品信息管理程序。2實驗學(xué)時4學(xué)時。3. 實驗?zāi)康模?)復(fù)習(xí)和鞏固線性表中的相關(guān)概念和知識;(2)熟悉線性表的順序存儲或鏈式存儲結(jié)構(gòu)的具體實現(xiàn)方法;(3)掌握線性表的建立、插入、刪除、查找、輸出等基本操作算法;(4)提高靈活運用所學(xué)算法、采用順序線性表或鏈式線性表處理實際問題的能力;(5)提高學(xué)生綜合運用所學(xué)知識分析問題和解決問題的能力。4實驗要求本實驗要求使用高級編程語言C語言編寫一個商品信息管理程序,商品信息表采用順序存儲結(jié)構(gòu)或鏈式存儲結(jié)構(gòu)存放。該程序中各功能均需采用獨立的模塊實現(xiàn);程序應(yīng)具有菜單選擇功能;并允許用戶在運行該程序過程中多次選擇執(zhí)行不同的功能。要
2、求學(xué)生對整個系統(tǒng)的框架進行設(shè)計,規(guī)劃數(shù)據(jù)的存儲結(jié)構(gòu),編寫出重要模塊的算法。每人一組完成,上機之前要有預(yù)習(xí)準備。有興趣的同學(xué)可在程序中增加商品入庫的功能。實驗設(shè)備:PC機一臺,C語言IDE編程環(huán)境Micorosoft Visual C+ 6.0或者Turbo C 2.0。5. 實驗內(nèi)容編寫一個超市商品信息管理程序,實現(xiàn)超市商品信息管理中的錄入、插入、刪除、查找、銷售及顯示等功能。商品信息包括商品的編號、名稱、單價和數(shù)量等四項。具體商品信息的數(shù)據(jù)類型定義如下:typedef struct goodstype long int num; char name20; int price;int stoc
3、k;GOODS; (1)錄入功能:錄入商品信息表中所有商品的信息,以順序或鏈式存儲結(jié)構(gòu)存放,原始商品信息表中的商品信息按商品編號升序排列;(2)插入功能:輸入一種新商品的信息,將新商品信息插入到線性表中的恰當位置,使商品信息表中的商品信息依然按商品編號有序排列;(3)刪除功能:給定一種商品的編號,刪除線性表中該商品的信息;(4)查找功能:給定一種商品的編號,在線性表中查找該商品的信息;(5)顯示功能:輸出線性表中所有商品的信息;(6)銷售功能:輸入客戶選擇的商品編號和所需數(shù)量,若該商品存在,計算應(yīng)付的錢數(shù)并修改該商品的庫存量;若無該商品或商品數(shù)量不足,則給出相應(yīng)的提示信息;(必做)能夠一次售出
4、多種不同的商品并打印購物小票(選做)6. 算法說明(1)錄入功能即完成線性表的建立,輸入商品信息時,最好以結(jié)束標志控制輸入過程的進行。例如當輸入的商品編號為-1時,商品信息錄入結(jié)束。參考程序一:(順序線性表)typedef struct GOODS listMAXLEN; int length;SeqList; /順序表類型定義,list為存放元素值的一維數(shù)組,length用于存放表長void Init_List(SeqList* L)/初始化順序表,以輸入商品編號為-1作為輸入結(jié)束標志long tnum; int n=0; printf("input num:"); sc
5、anf("%ld",&tnum); while (tnum!=-1) L->listn.num=tnum; printf("input name:"); scanf("%s",(L->listn).name); printf("input price:"); scanf("%d",&(L->listn.price); printf("input stock:"); scanf("%d",&(L->listn.
6、stock); n+; printf("input num:"); scanf("%ld",&tnum); L->length=n;參考程序二:(鏈式線性表)/結(jié)點類型定義,data用于存放結(jié)點的數(shù)據(jù)值,next用于存放下一結(jié)點的地址typedef struct nodetypeGOODS data; struct nodetype* next; NODE; NODE* Create_Link() /尾接法創(chuàng)建鏈表,以輸入商品編號為-1作為輸入結(jié)束標志NODE *head,*p,*s; GOODS x; long tnum; head=(N
7、ODE*)malloc(LEN); head->next=NULL; p=head; printf("input num:"); scanf("%ld",&tnum); while (tnum!=-1) x.num=tnum; printf("input name:"); scanf("%s",); printf("input price:"); scanf("%f",&x.price); printf("input stock:&
8、quot;); scanf("%d",&x.stock); s=(NODE*)malloc(LEN); s->data=x; s->next=NULL; p->next=s; p=s; printf("input num:"); scanf("%ld",&tnum); return(head); (2)插入功能編寫該插入算法的關(guān)鍵是要找到插入的恰當位置;若從線性表的前端向后找插入位置,則需找到第一個比待插元素的關(guān)鍵字大的元素,新元素插在該元素之前;若從線性表的后端向前找插入位置,則需找到第一個比待插元
9、素關(guān)鍵字小的元素,新元素插在該元素之后。插入算法的程序流程圖如圖1-1所示。注意:在鏈式線性表的查找只能從前向后找;順序線性表插入新元素之前,必然要對插入位置后面的所有元素進行后移。開始從線性表的前端向后(或從后向前)找插入位置未找到比待插元素大(或小)的元素且未找完整個線性表?繼續(xù)向后(前)查找NY將新元素插入到相應(yīng)位置上結(jié)束圖1-1 插入算法的程序流程圖(3)刪除功能編寫該算法的關(guān)鍵是先要在線性表上找到待刪元素,之后才能進行刪除。刪除算法的程序流程圖如圖1-2所示。開始從線性表的前端向后(或從后向前)找刪除位置未找到待刪元素且未找完整個線性表?繼續(xù)向后(前)查找NY將待刪元素從線性表中刪除
10、結(jié)束圖1-2 刪除算法的程序流程圖(4)查找功能查找的過程和思想與刪除算法中進行的查找相同。參考程序一:(順序線性表)int SearchList(SeqList* L,long tnum)/在順序表上從后向前查找編號為tnum的元素/查找成功返回元素所在的位置,查找失敗返回-1int i; i=L->length-1; while(L->listi.num!=tnum&&i>=0) i-; return(i);參考程序二:(鏈式線性表)NODE* SearchLink(NODE* head,long knum)/在單鏈表上從前向后查找編號為tnum的結(jié)點/查
11、找成功返回結(jié)點的地址,查找失敗返回空指針NULLNODE *p; p=head->next; while(p!=NULL&&p->data.num!=knum) p=p->next; return(p);(5)顯示功能即對線性表中的元素從前到后逐個進行輸出。參考程序一:(順序線性表)void OutputList(SeqList* L)/顯示功能函數(shù),逐個輸出順序表中各個元素的值int i;printf(" num name price stockn");for(i=0;i<L->length;i+) printf("
12、%6ld%16s%10d%6dn",L->listi.num,L->,L->listi.price,L->listi.stock);參考程序二:(鏈式線性表)void OutputLink(NODE *head)/顯示功能函數(shù),逐個輸出鏈表中各個結(jié)點的數(shù)據(jù)值NODE* p; p=head->next; printf(" num name price stockn"); while(p!=NULL) printf("%6ld%16s%10.2f%6dn",p->data.num,p->
13、,p->data.price,p->data.stock); p=p->next;(6)銷售功能基本的銷售功能流程如下圖所示,若要實現(xiàn)一次售出多種貨物則需在此基礎(chǔ)上加入循環(huán)結(jié)構(gòu),另外需累計所有商品的錢數(shù)并將所有售出的商品信息存儲下來(可存放在一個一維數(shù)組中)以便打印出購物小票。最基本的銷售功能算法的程序流程圖如圖1-3所示。開始輸入待銷售的商品的編號和所需數(shù)量找到了嗎?修改該商品庫存數(shù)量并計算應(yīng)付錢數(shù)NY結(jié)束在線性表中查找該商品的信息數(shù)量夠賣嗎?Y輸出應(yīng)付的錢數(shù)輸出“無此商品”輸出“數(shù)量不足”N圖1-3 銷售功能算法的程序流程圖(7)菜單函數(shù)輸出系統(tǒng)功能菜單
14、信息并允許用戶輸入選項。參考程序:int menu()/菜單函數(shù),返回用戶輸入的選項int ch; printf("*n"); printf("* 1-input *n"); printf("* 2-output *n"); printf("* 3-insert *n"); printf("* 4-delete *n"); printf("* 5-search *n");printf("* 6-sale *n"); printf("* 0- ex
15、it *n"); printf("*n"); printf("please input your choice:(0-6)n"); scanf("%d",&ch); return(ch);(8)主函數(shù)主要是利用循環(huán)結(jié)構(gòu)實現(xiàn)對系統(tǒng)各個功能的多次選擇,每次選擇之前應(yīng)先輸出系統(tǒng)功能菜單信息,當用戶選擇后根據(jù)用戶的選項調(diào)用相應(yīng)功能模塊,完成特定的任務(wù)。參考程序:(主要給出主函數(shù)的框架語句,具體功能的實現(xiàn)語句在此略去)void main() int ch; /主函數(shù)中其它變量的定義在此略去 ch=1; while(ch!=0)
16、 ch=menu(); switch (ch) case 1: /調(diào)用線性表的錄入函數(shù),語句略 break; case 2: /調(diào)用線性表的顯示函數(shù),語句略 break; case 3: /進行線性表的插入,語句略 break; case 4: /進行線性表的刪除,語句略 break; case 5:/進行線性表的查找,語句略break; case 6: /調(diào)用商品的銷售函數(shù),語句略 /*switch*/ /*while*/實驗二 棧、隊列的應(yīng)用1實驗名稱回文數(shù)的判斷2實驗學(xué)時 4學(xué)時3實驗?zāi)康模?) 掌握棧的先進后出和隊列先進先出的基本思想;(2) 掌握順序棧和鏈棧、循環(huán)隊列和鏈隊的建立方法
17、及其基本操作算法的實現(xiàn)(3) 靈活運用棧和隊列解決實際問題。4實驗要求本實驗要求使用高級編程語言C語言編寫一個判斷任意正整數(shù)是否回文數(shù)或?qū)⒁粋€十進制數(shù)轉(zhuǎn)換為二進制數(shù)的程序。回文數(shù)的判斷(用棧和隊列)、數(shù)制轉(zhuǎn)換(用棧)可選擇一個實驗,其中都是對整型數(shù)的操作。存儲方式可采用順序或鏈式存儲,但兩種存儲方式及其上的操作都應(yīng)該掌握。要求獨立功能盡量用函數(shù)來實現(xiàn),要有菜單選擇。每人一組完成,上機之前要有預(yù)習(xí)準備。實驗設(shè)備:PC機一臺,C語言IDE編程環(huán)境Micorosoft Visual C+ 6.0或者Turbo C 2.0。5實驗內(nèi)容(1)首先建立?;蜿犃校崿F(xiàn)如初始化、入隊(入棧)、出隊(出棧)等
18、功能函數(shù)。(2)建立菜單能夠?qū)崿F(xiàn)用戶的選擇調(diào)用及有退出功能。(3)運用取余及取整的方法,來得到各個數(shù)位相應(yīng)的數(shù)字。(4)將取得的數(shù)字依次入隊列或棧中,利用棧的后進先出和隊列的先進先出的特性來判斷是否為回文數(shù)。6. 算法說明此程序以鏈式存儲為例。(1)定義結(jié)點類型typedef struct nodeint data;struct node *next; NodeType;(2)定義棧類型typedef structNodeType *top; Linstack;(3)定義隊列類型,采用鏈隊列typedef struct NodeType *front;NodeType *rear;LinQue
19、ue;void InitStack(Linstack * s)/鏈棧初始化,帶頭節(jié)點s->top = (NodeType *)malloc(sizeof(NodeType);if(!s->top)printf("n存儲分配失敗!");else s->top->next=NULL;(4)判斷一個棧是否為空,若空返回1,非空返回0int StackEmpty(Linstack *s)return(s->top->next = NULL);(5)入棧函數(shù)void PushStack(Linstack *s, Int x) NodeType *
20、node;node = (NodeType *)malloc(sizeof(NodeType);if(!node)printf("存儲分配失敗!n");else node->data = x; node->next = s->top->next; s->top->next = node;(6)出棧函數(shù)Int PopStack(Linstack *s) Int x;NodeType *p;if(StackEmpty(s)printf("empty");exit(1);p = s->top->next;x =
21、p->data;s->top->next = p->next;free(p);return x;(7)隊列初始化,帶頭結(jié)點void InitQueue(LinQueue * q)q->front=q->rear=(NodeType *)malloc(sizeof(NodeType);if(!q->front)printf("n存儲分配失敗!");else q->front->next=NULL;(8)判隊空,空返回1,非空返回0int QueueEmpty(LinQueue *q)return(q->front=q
22、->rear);(9)入隊函數(shù)void EnQueue(LinQueue *q,Int x)NodeType *p;p = (NodeType *)malloc(sizeof(NodeType);if(!p)printf("n存儲分配失敗!");return;p->data=x;p->next = NULL;q->rear->next = p;q->rear = p;(10)出隊函數(shù)Int DelQueue(LinQueue *q) /出隊NodeType * p;Int x;if(QueueEmpty(q)printf("隊空
23、!");exit(1);p = q->front->next;x = p->data;q->front->next = p->next;if(q->rear = p)q->rear = q->front;free(p);return(x);實驗三 樹的存儲和遍歷1實驗名稱二叉樹的存儲和遍歷。2實驗學(xué)時4學(xué)時。3. 實驗?zāi)康模?)復(fù)習(xí)和鞏固二叉樹的相關(guān)概念和知識;(2)掌握二叉樹的存儲結(jié)構(gòu);(3)掌握二叉樹的的建立及各種遍歷算法,進一步理解遞歸的執(zhí)行過程;(4)掌握二叉排序樹的建立及查找算法。4實驗要求本實驗要求使用高級編程語言C語
24、言編寫一個有關(guān)二叉樹的建立、遍歷、查找操作的程序。分別要實現(xiàn)普通二叉樹的建立功能和二叉排序樹的建立功能。二叉樹的存儲方式采用鏈式存儲結(jié)構(gòu)。要求獨立功能盡量用函數(shù)來實現(xiàn),要有菜單選擇。有興趣的同學(xué)可選做統(tǒng)計二叉樹的葉子結(jié)點數(shù)。每人一組完成,上機之前要有預(yù)習(xí)準備。實驗設(shè)備:PC機一臺,C語言IDE編程環(huán)境Micorosoft Visual C+ 6.0或者Turbo C 2.0。5實驗內(nèi)容(1)二叉樹的建立:將一棵普通二叉樹通過補空格變成滿二叉樹,遞歸構(gòu)造二叉樹。(2)二叉排序樹的建立:輸入一個序列,按課本的程序生成二叉排序樹。(3)二叉樹的遍歷:針對上面建立的二叉樹或二叉排序樹,進行三種遍歷。(
25、4)二叉排序樹的查找:在一棵二叉排序樹上查找一個指定的結(jié)點。6算法說明(1)二叉樹的數(shù)據(jù)結(jié)構(gòu)定義struct BiTNodechar data;struct BiTNode * lchild;struct BiTNode * rchild;typedef struct BiTNode BiTNode , *BiTree;(2)二叉樹的建立參考程序:void CreateBiTree(BiTree *Tree)char ch;if(ch = getchar() = ' ')*Tree = NULL;else *Tree = (BiTree)malloc(sizeof(BiTNod
26、e);(*Tree)->data = ch;CreateBiTree(&(*Tree)->lchild);CreateBiTree(&(*Tree)->rchild);(3)二叉排序樹的建立二叉排序樹的建立過程是,逐個順次插入結(jié)點,插入結(jié)點時要注意找到應(yīng)該插入的位置。參考程序:BiTree CreateBST()int i,ele;BiTree Tree = NULL;for(i = 0; i < N; i+)scanf("%d", &ele);InsertBST(&Tree, ele);return Tree;voi
27、d InsertBST(BiTree* Tree, int ele)BiTree pos, p = *Tree;while(p)if(p->data = ele) return;pos = p;if(ele < p->data) p = p->lchild;else p = p->rchild;p = (BiTree)malloc(sizeof(struct BiTNode);p->data = ele;p->lchild = p->rchild = NULL;if(! *Tree) *Tree = p;else if(ele < pos-
28、>data) pos->lchild = p;else pos->rchild = p;(4)二叉樹的遍歷注意:二叉樹的遍歷是一個遞歸的過程,如先序遍歷是,先遍歷根,再先序遍歷左子樹,再先序遍歷右子樹,程序代碼非常簡潔,但實際執(zhí)行過程較復(fù)雜,希望同學(xué)能理解。void PreOrder(BiTree Tree)/二叉樹的先序遍歷算法if (Tree) putchar(Tree->data);PreOrder(Tree->lchild);PreOrder(Tree->rchild);void InOrder(BiTree Tree)/二叉樹的中序遍歷算法if(T
29、ree)InOrder(Tree->lchild);putchar(Tree->data);InOrder(Tree->rchild);void PostOrder(BiTree Tree)/二叉樹的后序遍歷算法if(Tree)PostOrder(Tree->lchild);PostOrder(Tree->rchild);putchar(Tree->data);(5)二叉排序樹的查找參考程序:BiTree SearchBST(BiTree Tree, int ele)while(Tree != NULL)if(ele = Tree->data) ret
30、urn Tree;elseif(ele < Tree->data) Tree = Tree->lchild;else Tree = Tree->rchild;return NULL;實驗四 查找算法的應(yīng)用1實驗名稱哈希表的創(chuàng)建及查找。2實驗學(xué)時4學(xué)時。3. 實驗?zāi)康模?) 進一步了解查找算法的用途;(2) 復(fù)習(xí)鞏固哈希函數(shù)及哈希表等有關(guān)概念;(3) 掌握哈希表的創(chuàng)建及查找的過程和方法;(4) 比較哈希查找與其它查找算法的不同,體會哈希查找的優(yōu)缺點。4實驗要求本實驗完成一個查找算法的應(yīng)用程序,使用高級編程語言C語言編寫,算法要求采用哈希查找算法。最好使用復(fù)雜的結(jié)構(gòu)體類型作
31、為元素的類型,查找關(guān)鍵字應(yīng)為整型??上葎?chuàng)建一個哈希表,輸出哈希表的內(nèi)容,驗證其是否正確;哈希表正確后,再給定關(guān)鍵字進行查找,驗證查找結(jié)果是否正確。原始的數(shù)據(jù)元素可以先放在一個線性表中,再將其放入哈希表中。但建議同學(xué)每輸入一個元素,將其直接放入哈希表中。每人一組完成,上機之前要有預(yù)習(xí)準備。實驗設(shè)備:PC機一臺,C語言IDE編程環(huán)境Micorosoft Visual C+ 6.0或者Turbo C 2.0。5. 實驗內(nèi)容預(yù)先給定N個元素,用除留余數(shù)法設(shè)計哈希函數(shù),結(jié)合線性探測再散列的方法建立哈希表,在哈希表中進行查找,并在屏幕上顯示哈希表及查找結(jié)果。6. 算法說明(1)哈希函數(shù)的構(gòu)造在哈希查找中,
32、哈希函數(shù)的構(gòu)造十分關(guān)鍵。對于不同的問題,應(yīng)根據(jù)數(shù)據(jù)的實際情況選擇合適的哈希函數(shù),使數(shù)據(jù)的哈希地址分布均勻,避免或減少沖突的出現(xiàn)。除留余數(shù)法是一種最簡單、最常用的哈希函數(shù)構(gòu)造方法。 取關(guān)鍵字被某個不大于哈希表表長m的數(shù)p除后所得的余數(shù)作為哈希地址,其形式為:H(k) = k % p 此方法中p的選擇十分重要,選擇不當時會造成大量沖突。一般情況下,可以選p為不大于m的最大質(zhì)數(shù)。 哈希表表長m必須大于等于數(shù)據(jù)元素的個數(shù),雖然m較大時,沖突的概率較小,但空間浪費嚴重。根據(jù)數(shù)學(xué)分析可知:一般給定N個元素,則m取大于N的最小質(zhì)數(shù)。例如:給定10個元素,則m = p = 11最合理;給定20個元素,則m =
33、 p = 23最合理。(2)沖突的解決方法 構(gòu)造合適的哈希函數(shù)雖然能夠減少沖突,但是卻難以避免沖突。因此,如何處理沖突是構(gòu)造哈希表不可缺少的另一個重要方面。其中常用的沖突處理方法是開放定址法。 這種方法的基本思想是:若在某個地址處發(fā)生了沖突,則沿著一個特定的探測序列在哈希表中探測下一個空單元,一旦找到,則將新元素存入此單元中。其探測的序列可用下式描述: Hi = ( H(k) + di ) % m (i = 1,2,3, ) 當di取1,2,3,,m 1時,稱為線性探測再散列; 在開放地址法處理沖突所生成的哈希表中進行查找時,首先按照哈希函數(shù)計算出待查關(guān)鍵字所對應(yīng)的地址;然后用此地址元素的關(guān)鍵
34、字和待查關(guān)鍵字相比較,若相等,則查找成功,若不等,則沿著建立哈希表時的探測序列繼續(xù)在哈希表中查找,直至查找成功或者探測到一個空位(查找失?。?。 注意:在建立哈希表之前必須將表中所有單元置空。(3)主函數(shù) 主函數(shù)負責(zé)整個程序運行過程的調(diào)度,這里給出流程圖,具體的每個功能需要調(diào)用相應(yīng)的函數(shù)來完成。 要求每位同學(xué)在設(shè)計程序的時候,盡量采用模塊化的設(shè)計,將各個重要功能分散到不同的函數(shù)中,主函數(shù)應(yīng)該盡量簡短。(4) 哈希函數(shù)/*哈希函數(shù)算法:利用除留余數(shù)法作為哈希函數(shù),公式:hash(k) = k % p參數(shù):1個,要計算的關(guān)鍵字值返回值:計算出的哈希地址*/ int hash(int k) int h
35、; h=k%p; /*p為一個常數(shù)*/ return h; /*hash*/(5)哈希表查找函數(shù) 哈希表查找的過程實質(zhì)上就是按照建立哈希表時處理沖突的方法,根據(jù)哈希地址在哈希表上查找指定關(guān)鍵字的元素。 由于沖突的存在,在哈希查找過程中對關(guān)鍵字的比較次數(shù)可能不只一次。 注意:該示例程序采用結(jié)構(gòu)體類型的數(shù)組,允許使用簡單的整型數(shù)組來完成。/*哈希查找函數(shù)算法:利用線性探測再散列的方法,在哈希表htm上查找關(guān)鍵字為k的元素參數(shù):2個,1-哈希表,2-要查找的關(guān)鍵字值返回值:-1表示未找到,否則為元素的存儲位置*/int hashsearch1(list ht, int k) int h,i; /*m
36、為一個常數(shù)*/ h=hash(k); /*h用于存放哈希地址*/ i=0; while(i<m)&&(hth.key!=k) i+; h=(h+1)%m; /*線性探測進行查找*/ if(i<m) return(h); /*若查找成功,返回元素所在的位置*/ else return(-1); /*若查找失敗,則返回-1*/ /*hashsearch1*/(6) 哈希表生成函數(shù) 哈希表的建立過程就是不斷進行線性探測的過程,直到為每一個元素找到空位為止。實驗五 排序算法的應(yīng)用1實驗名稱五種排序算法的實現(xiàn)。2實驗學(xué)時4學(xué)時。3. 實驗?zāi)康模?)復(fù)習(xí)和鞏固排序中的相關(guān)概念和
37、知識;(2)熟悉排序算法的具體實現(xiàn)方法;(3)掌握冒泡排序、插入排序、選擇排序、快速排序、歸并排序等基本操作算法;(4)提高學(xué)生綜合運用所學(xué)知識分析問題和解決問題的能力。4實驗要求本實驗要求使用學(xué)生用C語言編寫并完成排序的各種算法。程序應(yīng)具有菜單選擇功能;并允許用戶在運行該程序過程中多次選擇執(zhí)行不同的功能。要求學(xué)生對整個系統(tǒng)的框架進行設(shè)計,編寫出各種排序算法的具體實現(xiàn)。實驗設(shè)備:PC機一臺,編程環(huán)境采用Micorosoft Visual C+ 6.0或者Turbo C 2.0。5. 實驗內(nèi)容(1) 建立循環(huán)菜單,以保證用戶可以多次選擇執(zhí)行不同的排序算法;(2) 每次調(diào)用排序算法之前,對待排序數(shù)
38、據(jù)表中的數(shù)組元素進行初始化,使數(shù)據(jù)無序;(3) 實現(xiàn)冒泡排序、插入排序、選擇排序、快速排序、歸并排序等五種排序算法;(4) 編寫函數(shù)完成對排序后的數(shù)據(jù)表進行輸出。6. 算法說明(1)數(shù)據(jù)結(jié)構(gòu)的定義typedef structint key; datatype;(2)菜單函數(shù)參考程序:void menu()printf("nnn");printf("tt1. Bubble sort nn");printf("tt2. Insertion sortnn");printf("tt3. Select sortnn");pr
39、intf("tt4. Quick sort nn");printf("tt5. Merge sortnn");printf("tt0.exitnn");printf("nnntplease select:");(3)主函數(shù)參考程序:#include <stdio.h>#define MAX 15void menu();void main()int n,m=1;datatype RMAX;while(m)int i;menu();scanf("%d",&n);printf(&q
40、uot;nn"); initialization(R);/每次對待排序數(shù)據(jù)表中的數(shù)組元素進行初始化,使數(shù)據(jù)無序/數(shù)據(jù)表初始化函數(shù)由學(xué)生自己編寫switch(n)case 1:/由學(xué)生自己書寫語句,完成調(diào)用冒泡排序函數(shù)/由學(xué)生自己書寫語句,完成調(diào)用數(shù)據(jù)表輸出函數(shù)break;case 2: /由學(xué)生自己書寫語句,完成調(diào)用插入排序函數(shù) /由學(xué)生自己書寫語句,完成調(diào)用數(shù)據(jù)表輸出函數(shù)break;case 3:/由學(xué)生自己書寫語句,完成調(diào)用選擇排序函數(shù)/由學(xué)生自己書寫語句,完成調(diào)用數(shù)據(jù)表輸出函數(shù)break;case 4: /由學(xué)生自己書寫語句,完成調(diào)用快速排序函數(shù)/由學(xué)生自己書寫語句,完成調(diào)用數(shù)據(jù)表輸出函數(shù)break;case 5: /由學(xué)生自己書寫語句,完成調(diào)用歸并排序函數(shù)/由學(xué)生自己書寫語句,完成調(diào)用數(shù)據(jù)表輸出函數(shù)break; case 0: m=0;(4)冒泡排序參考算法void Bubble_Sort(datatype R,int n)int i,j,swap;for(i=1;i<n-1;i+)swap=0;for(j=1;j<=n-i;j+)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度專科門診技術(shù)合作項目合同
- 二零二五年度并購重組財務(wù)顧問并購重組財務(wù)顧問保密合同
- 二零二五年度區(qū)域協(xié)調(diào)發(fā)展招商引資合同性質(zhì)與產(chǎn)業(yè)協(xié)同效應(yīng)
- 2025年度裝配行業(yè)技術(shù)引進終止合同協(xié)議
- 二零二五年度自建房施工合同變更管理合同
- 2025年度旅游景區(qū)旅游研學(xué)旅行合作開發(fā)合同
- 二零二五年度房產(chǎn)買賣代理合同
- 二零二五年度叉車安全操作規(guī)范編制及維護合同
- 文化藝術(shù)領(lǐng)域版權(quán)保護合作合同
- 地磚采購合同
- 新湘版小學(xué)科學(xué)四年級下冊教案(全冊)
- 紅土鎳礦濕法冶煉技術(shù)綜述
- 隧道開挖作業(yè)臺車計算書
- 水利水電工程金屬結(jié)構(gòu)與機電設(shè)備安裝安全技術(shù)規(guī)程
- 新視野大學(xué)英語讀寫譯4U校園第一單元課后測試答案
- 《紅樓夢》專題(文化)
- 國學(xué)基本知識(課堂PPT)
- 獨資公司章程范本下載
- OQC出貨檢驗報告
- FMEA培訓(xùn)資料(共38頁).ppt
- DB62∕T 4472-2021 農(nóng)村互助老人幸福院運行管理規(guī)范
評論
0/150
提交評論