《數(shù)據(jù)結(jié)構(gòu)(C語言版)》實驗指導(dǎo)_第1頁
《數(shù)據(jù)結(jié)構(gòu)(C語言版)》實驗指導(dǎo)_第2頁
《數(shù)據(jù)結(jié)構(gòu)(C語言版)》實驗指導(dǎo)_第3頁
《數(shù)據(jù)結(jié)構(gòu)(C語言版)》實驗指導(dǎo)_第4頁
免費預(yù)覽已結(jié)束,剩余91頁可下載查看

下載本文檔

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

文檔簡介

《數(shù)據(jù)結(jié)構(gòu)(C語言版)》

實驗指導(dǎo)目錄TOC\o"1-5"\h\z\o"CurrentDocument"第1章緒論 1實驗1-1起泡排序 1\o"CurrentDocument"實驗1-2三元組 4\o"CurrentDocument"實驗1-3復(fù)數(shù) 7\o"CurrentDocument"實驗!-4時間復(fù)雜度 11\o"CurrentDocument"第2章線性表 13\o"CurrentDocument"實驗2-1順序表 13\o"CurrentDocument"實驗2-2單鏈表 30\o"CurrentDocument"實驗2-3靜態(tài)鏈表 46\o"CurrentDocument"實驗2-4有序鏈表 46\o"CurrentDocument"第3章棧和隊列 47\o"CurrentDocument"實驗3-1鏈棧 47\o"CurrentDocument"實驗3-2順序棧 51\o"CurrentDocument"實驗3-3鏈隊列 60\o"CurrentDocument"實驗3-4循環(huán)隊列 60\o"CurrentDocument"第6章樹和ニ叉樹 69\o"CurrentDocument"實驗6-1二叉樹的順序存儲 69\o"CurrentDocument"實驗6-2ニ叉鏈表 69\o"CurrentDocument"實驗6-3遍歷ニ叉樹及其應(yīng)用 69\o"CurrentDocument"實驗6-4線索ニ叉樹及其應(yīng)用 75\o"CurrentDocument"實驗6-5樹和森林及其應(yīng)用 75\o"CurrentDocument"實驗6-6赫夫曼樹及其應(yīng)用 75第7章圖 80\o"CurrentDocument"實驗7-1圖的遍歷 80\o"CurrentDocument"實驗7-2最短路徑 85\o"CurrentDocument"實驗7-3關(guān)鍵路徑 89\o"CurrentDocument"第9章査找 90\o"CurrentDocument"實驗9-1順序查找和折半查找 90\o"CurrentDocument"實驗9-2ニ叉排序樹 95\o"CurrentDocument"實驗9-3哈希表 95\o"CurrentDocument"第10章內(nèi)部排序 96\o"CurrentDocument"實驗!0-1插入排序 96\o"CurrentDocument"實驗10-2快速排序 96\o"CurrentDocument"實驗10-3選擇排序 101\o"CurrentDocument"實驗10-4堆排序 101\o"CurrentDocument"實驗!0-5歸并排序 102第1章緒論實驗起泡排序[題目]把起泡排序的算法(課本P16)改寫成C語言程序,并編寫程序進(jìn)行調(diào)試。[目的]把類C語言書寫的算法改寫成C語言程序,并進(jìn)行調(diào)試。[步驟].起泡排序算法(類C語言)(略)參考課本P16。.改寫成C語言程序(略)。.測試程序1)準(zhǔn)備測試數(shù)據(jù),存放在數(shù)組中;2)打印排序前的數(shù)據(jù)3)進(jìn)行起泡排序4)打印排序后的數(shù)據(jù).測試數(shù)據(jù)和結(jié)果包括:準(zhǔn)備好的測試數(shù)據(jù),期望結(jié)果,實際運行結(jié)果(運行程序后填寫,并與期望結(jié)果對照)。.總結(jié)考慮:1)怎樣將類C語言算法改寫成C語言程序?如:怎樣處理局部變量,怎樣處理符號常量等。2)怎樣書寫程序才能提高代碼的可讀性?如:文件的格式,函數(shù)聲明的位置,主函數(shù)的位置,函數(shù)具體實現(xiàn)的位置,采用縮進(jìn)格式等。3)還遇到那些問題?如:應(yīng)當(dāng)熟悉開發(fā)環(huán)境,應(yīng)當(dāng)熟練使用各種調(diào)試エ具等。[源程序]@Title:數(shù)據(jù)結(jié)構(gòu)實驗?Name:く實驗!-1>起泡排序?Object:[實驗?zāi)康模莅哑鹋菖判虻乃惴ǜ膶懗蒀語言程序,并編寫程序進(jìn)行調(diào)試。掌握如何把類C語言書寫的算法改寫成C語言程序。[實驗提示]1)怎樣將類c語言算法改寫成C語言程序?如:怎樣處理局部變量,怎樣處理符號常量等。2)怎樣書寫程序才能提高代碼的可讀性?如:文件的格式,函數(shù)聲明的位置,主函數(shù)的位置,函數(shù)具體實現(xiàn)的位置,采用縮進(jìn)格式等。?Usage:請查看"TO-DO列表’根據(jù)要求完成代碼?Copyright:BTC2004?Author:ZhuangBo?Date:2004?Description://///////////////////////////////////////////////////////////包含頭文件#include<stdio.h>////////////////////////////////////////////////////////////Z對主函數(shù)中調(diào)用的函數(shù)進(jìn)行聲明/Z對數(shù)組a[0..n-1]進(jìn)行起泡排序,使數(shù)據(jù)從小到大有序// //TODO(#1#):這里插入函數(shù)bubble_sort()的聲明// 〃順序打印數(shù)組a中的元素voidprintout(inta[],intn);////////////////////////////////////////////////////////////Z起泡排序主程序intmain()(〃測試數(shù)據(jù)inta[]={82,47,29,74,91,53,82,62,98,51);printf("起泡排序、n");/Z打印排序前的數(shù)據(jù)printf("排序前:'n");printout(a,10);/Z進(jìn)行起泡排序// //T0D0(#1#):這里調(diào)用bubble_sort()對數(shù)組a排序// /Z打印排序后的數(shù)據(jù)printf("排序后:'n");print_out(a,10);////////////////////////////////////////////////////////////Z函數(shù)的實現(xiàn)定義在下面ftdefineTRUE 1#defineFALSE 0/Z對數(shù)組a[〇..n-1]進(jìn)行起泡排序,使數(shù)據(jù)從小到大有序voidbubblesort(inta[],intn)(// //TODO(#1#):這里定義函數(shù)中用到的變量// for(i=n-l,change=TRUE;i>=l&&change;-i){change=FALSE;for(j=0;j<i;++j)if(a[j]>a[j+l]){// //TODO(#1#):這里交換a[j]和a[j+l]// change=TRUE;}//bubble_sort〃順序打印數(shù)組a中的元素voidprint_out(inta[],intn)for(i二〇;i<n;i++)printf(z,%dz/,a[i]);printf("\n'z);實驗1-2三元組[題目]用C語言實現(xiàn)三元組ADT,并編寫測試程序。[目的]把三元組ADT(課本P9,11-13)用C語言實現(xiàn);學(xué)習(xí)使用模塊結(jié)構(gòu);學(xué)習(xí)編寫調(diào)試程序。[步驟].三元組類型的ADT定義。(略)。.三元組類型的實現(xiàn)。1)類型描述(略)。2)基本操作的聲明(略)。3)基本操作的實現(xiàn)(略)。3,模塊設(shè)計主程序:測試三元組模塊的程序。三元組模塊:實現(xiàn)三元組類型的程序。類C通用模塊:包含類C中的預(yù)定義常量和類型。模塊的組織:主程序CXX0102.CPP#include<stdio.h>#include"triplet.h"voidShowMainMenu();intGetChoice();voidmain()voidShowMainMenu()(intGetChoice()三元組模塊TRIPLET.H//防止重復(fù)包含#ifndef_TRIPLET_H_#define_TRIPLET_H_#include"ds.h"typedefintElemSet;/Z用戶自定義類型//三元組類型描述typedefElemSetTriplet[3];//基本操作的實現(xiàn)StatusInitTriplet(TripletsT,ElemSetvl,ElemSetv2,ElemSetv3);StatusInitTriplet(TripletsT,ElemSetvl,ElemSetv2,ElemSetv3)#endif//_TRIPLET_H_類c通用模塊#ifndef_DS_H_#define_DS_H_//函數(shù)結(jié)果狀態(tài)代碼TOC\o"1-5"\h\zconstint TRUE = 1;constint FALSE = 0;constintOK =1;constint ERROR = 0;constintINFEASIBLE =-1;constintOVERFLOW =-2;//Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼typedefintStatus;#endif//_DS_H4.測試程序的設(shè)計測試程序采用菜單命令的方式根據(jù)用戶輸入的命令反復(fù)測試。程序開始顯示菜單提示,根據(jù)用戶輸入進(jìn)行相應(yīng)的測試,然后再顯示菜單,直到用戶選擇退出測試程序。while(TRUE){ShowMainMenu();cmd=GetChoice();switch(cmd){/Z創(chuàng)建三元組break;//...case0:/Z退出return;default:/Z錯誤命令)}顯示菜單的程序:/Z顯示主菜單voidShowMainMenu()(staticchar*menu[]={”三元組類型測試程序”,"1創(chuàng)建三元組”,?2 ”,"0退出程序”);inti;for(i=0;i<sizeof(menu)/sizeof(char*);i++)printf("%s\nn,menu[i]);)選擇菜單的程序:/Z得到用戶選擇的菜單項intGetChoice()(inti;printf(w請輸入您的選擇:;scanf(M%dw,&i);returni;}.錄入源程序參見所附源程序。.測試數(shù)據(jù)和結(jié)果包括:準(zhǔn)備好的測試數(shù)據(jù),期望結(jié)果,實際運行結(jié)果(運行程序后填寫,并與期望結(jié)果對照)。フ總結(jié)考慮:1)怎樣將類C語言算法改寫成C語言程序?2)怎樣書寫程序才能提高代碼的可讀性?如:模塊劃分,函數(shù)聲明的位置,主函數(shù)的位置,函數(shù)具體實現(xiàn)的位置,采用縮進(jìn)格式等。3)編寫頭文件的技巧。如何防止重復(fù)包含。4)還遇到那些問題?[源程序]文件:DS.H類C中通用的常量和類型(略)。文件:TRIPLET.H 三元組的定義和實現(xiàn)(略)。文件:CXX0102.CPP 測試程序(C代表班級,XX代表學(xué)號,0102代表實

驗!-2)(略)。實驗1-3復(fù)數(shù)[題目]用C語言實現(xiàn)復(fù)數(shù)ADT,并編寫測試程序。[目的]用C語言實現(xiàn)復(fù)數(shù)ADT;學(xué)習(xí)使用模塊結(jié)構(gòu);學(xué)習(xí)編寫調(diào)試程序。陟驟].復(fù)數(shù)類型的ADT定義。ADTComplex(數(shù)據(jù)對象:D={r,i|r,iGR)數(shù)據(jù)關(guān)系:Rl={<r,i>|r是復(fù)數(shù)的實部,i是復(fù)數(shù)的虛部)基本操作:CreateComplex(&z,r,i)z2)z2)z2)z2)GetRealPart(z)GetlmagePart(z)AddComplex(&z,z2)z2)z2)z2).復(fù)數(shù)類型的實現(xiàn)。1)類型描述。/Z復(fù)數(shù)類型描述typedefstructComplex{doublerealpart;doubleimagepart;}Complex;2)基本操作的聲明。StatusCreateComplex/Z復(fù)數(shù)基本操作StatusCreateComplexComplex&z,doubler,doubledoubleGetRealPart(Complexz);doubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex(3)基本操作的實現(xiàn)。/Z復(fù)數(shù)基本操作的實現(xiàn)doubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex(3)基本操作的實現(xiàn)。/Z復(fù)數(shù)基本操作的實現(xiàn)(Complexz)Complex&z,ComplexComplex&z,ComplexComplex&z,ComplexComplex&z,Complexzl,zl,zl,zl,ComplexComplexComplexComplexz2);z2);z2);z2);StatusCreateComplex(Complex&z,doubler,double(z.realpart=r;z.imagepart=i;returnOK;doubleGetRealPart(Complexz)(returnz.realpart;)doubleGetImagePart(Complexz)(returnz.imagepart;}StatusAddComplex(Complex&z,Complexzl,Complexz2){z.realpart=zl.realpart+z2.realpart;z.imagepart=zl.imagepart+z2.imagepart;returnOK;StatusSubComplex(Complex&z,Complexz丄,Complexz2)(z.realpart=zl.realpart-z2.realpart;z.imagepart=zl.imagepart-z2.imagepart;returnOK;StatusMulComplex(Complex&z,Complexzl,Complexz2)(z.realpart=zl.realpart*z2.realpart-zl.imagepart*z2.imagepart;z.imagepart=zl.realpart*z2.imagepart+zl.imagepart*z2.realpart;returnOK;}StatusDivComplex(Complex&z,Complexzl,Complexz2)(doubleb;b=z2.realpart*z2.realpart-z2.imagepart*z2.imagepart;if(b==0)returnERROR;else{z.realpart=(zl.realpart*z2.realpart+zl.imagepart*z2.imagepart)/b;z.imagepart=(-zl.realpart*z2.imagepart+zl.imagepart*z2.realpart)/b;returnOK;)3.}模塊設(shè)計主程序:測試復(fù)數(shù)模塊的程序。復(fù)數(shù)模塊:實現(xiàn)復(fù)數(shù)類型的程序。類C通用模塊:包含類C中的預(yù)定義常量和類型。模塊的組織:

主程序CXX0103.CPP#include<stdio.h>#include"complex.hnvoidShowMainMenu();intGetChoice();voidmain()(voidShowMainMenu()(intGetChoice()復(fù)數(shù)模塊COMPLEX.H//防止重復(fù)包含#ifndef_COMPLEX_H_#define_COMPLEX_H_#include”ds.h”/Z復(fù)數(shù)類型描述typedefstructComplex{doublerealpart;doubleimagepart;}Complex;//基本操作的聲明StatusCreateComplex(Complex&z,doubler,doublei);doubleGetRealPartdoubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex(Complexz);doubleGetRealPartdoubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex((Complexz)Complex&z,Complexzl,Complexz2);Complex&z,Complexzl,Complexz2);Complex&z,Complexzl,Complexz2);Complex&z,Complexzl,Complexz2);//////////////////////////////基本操作的實現(xiàn)StatusCreateComplex(Complex&z,doubler,doublei){z.realpart=r;z.imagepart=i;returnOK;}doubleGetRealPart(Complexz)(returnz.realpart;??.(以下省略)#endif//_COMPLEX_H_類C通用極塊#ifndef_DS_H_#define_DS_H_/Z函數(shù)結(jié)果狀態(tài)代碼TOC\o"1-5"\h\zconstint TRUE = 1;constint FALSE = 0;constintOK=1;constint ERROR = 0;constintINFEASIBLE =-1;constintOVERFLOW =-2;//Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼typedefintStatus;#endif//_DS_H_4.測試程序的設(shè)計測試程序采用菜單命令的方式根據(jù)用戶輸入的命令反復(fù)測試。程序開始顯示菜單提示,根據(jù)用戶輸入進(jìn)行相應(yīng)的測試,然后再顯示菜單,直到用戶選擇退出測試程序。while(TRUE){ShowMainMenu();cmd=GetChoice();switch(cmd){/Z創(chuàng)建復(fù)數(shù)break;//...case0:/Z退出return;default:/Z錯誤命令)顯示菜單的程序:/Z顯示主菜單voidShowMainMenu()(staticchar*menu[]={"復(fù)數(shù)類型測試程序","1創(chuàng)建復(fù)數(shù)",?2 ”,"0退出程序”);inti;for(i=0;i<sizeof(menu)/sizeof(char*);i++)printf("%s\n”,menu[i]);な擇菜單的程序:/Z得到用戶選擇的菜單項intGetChoice()inti;printf("請輸入您的選擇:");scanf(n%dn,&i);returni;.錄入源程序參見所附源程序。.測試數(shù)據(jù)和結(jié)果包括:準(zhǔn)備好的測試數(shù)據(jù),期望結(jié)果,實際運行結(jié)果(運行程序后填寫,并與期望結(jié)果對照)。.總結(jié)考慮:い怎樣將類C語言算法改寫成C語言程序?2)怎樣書寫程序才能提高代碼的可讀性?如:模塊劃分,函數(shù)聲明的位置,主函數(shù)的位置,函數(shù)具體實現(xiàn)的位置,采用縮進(jìn)格式等。3)編寫頭文件的技巧。如何防止重復(fù)包含。4)還遇到那些問題?[源程序]文件:DS.H類C中通用的常量和類型(略)。文件:COMPLEX.H復(fù)數(shù)的定義和實現(xiàn)(略)。文件:CXX0103.CPP測試程序(C代表班級,XX代表學(xué)號,0103代表實驗1-3)(略)。實驗1-4時間復(fù)雜度[題目]分析和測試不同程序段的時間復(fù)雜度。[目的]通過統(tǒng)計不同算法中指定語句的執(zhí)行頻度,分析算法的時間復(fù)雜度。陟驟][源程序]文件:FREQ.H用于統(tǒng)計執(zhí)行頻度的算法(程序段)//////////////////////////////File: freq.h//For: 統(tǒng)計語句執(zhí)行頻度//Author://Date:////////////////////////////#ifndef_FREQ_H_#define_FREQ_H_//////////////////////////////函數(shù)聲明intfreql(intn);intfreq2(intn);intfreq3(intn);//////////////////////////////函數(shù)實現(xiàn)intfreql(intn)(inti,k;k=0;for(i=0;i<n;i++){//...k++;)returnk;intfreq2(intn)(inti,j,k;k=0;for(i=0;i<n;i++){for(j=0;j<n;j++){//...k++;})returnk;intfreq3(intn)(inti,j,k;k=0;for(i=0;i<n;i++){for(j=0;j<i;j++){//...k++;returnk;#endif//_FREQ_H_文件:CXX0104.CPP測試程序(C代表班級,XX代表學(xué)號,0104代表實驗1-4)(略)。第2章線性表實驗2-1順序表[題目]實現(xiàn)順序表的基本操作,編寫將兩個順序表合并的算法。[目的]掌握順序表的實現(xiàn);順序表的應(yīng)用。陟驟].問題分析21概要設(shè)計分為主程序模塊、順序表模塊和測試程序模塊。主程序模塊:調(diào)用測試程序。測試程序模塊:包含順序表合并算法和順序表測試程序。順序表模塊:實現(xiàn)順序表的基本操作。.詳細(xì)設(shè)計1)主程序(略)2)測試程序(略)3)順序存儲結(jié)構(gòu)的線性表的實現(xiàn)類型描述。(略)基本操作的聲明。(略)基本操作的實現(xiàn)。(略).調(diào)試分析.測試結(jié)果6?用戶手冊.總結(jié)[源程序]?title:數(shù)據(jù)結(jié)構(gòu)實驗如ame:く實驗2-1>線性表的順序存儲結(jié)構(gòu)?object:[實驗?zāi)康模菥€性表的順序存儲結(jié)構(gòu)及其基本操作的實現(xiàn)[實驗提示].在sqlist.h中實現(xiàn)順序表的基本操作.在dsp0201.cpp中編寫適當(dāng)?shù)拇a,進(jìn)行測試?include:sqlist.h[*]順序表的實現(xiàn)?usage:請查看〃TO-DO列表〃,根據(jù)要求完成代碼?copyright:BTC2005,ZhuangBo?author:ZhuangBo?date:2005?description:#include<stdio.h>#include<stdlib.h>#include〃ds.h”#defineElemTypeint 〃數(shù)據(jù)元素的類型Statusprint(ElemTypee); /Z打印數(shù)據(jù)元素的方法boolequal(ElemTypea,ElemTypeb);〃比較兩個元素相等的方法ttinclude"sqlist.h〃〃打印順序表內(nèi)容voidPrintLinkList(SqListL);intmain()(SqListL;〃D初始化順序表InitList(L);〃2)插入ー些元素:12,23,34,45Listinsert(L,1,12);Listinsert(L,1,23);Listinsert(L,1,34);Listinsert(L,1,45);〃3)打印順序表信息printf("\n開始時順序表內(nèi)容、n");PrintLinkList(L);printf(*ListLength(L):%d\n”,ListLength(L));printf(*ListEmpty(L):%d\n”,ListEmpty(L));〃4)順序表插入printf("\n請輸入一元素:");ElemTypex;read(x);printf("插入開頭:");Listinsert(L,1,x);PrintLinkList(L);printf(〃插入末尾:");Listinsert(L,ListLength(L)+1,x);PrintLinkList(L);〃5)順序表刪除printf("\n請選擇刪除第i(1.?%d)個元素:",ListLength(L));inti;read(i);ElemTypee;if(ListDelete(L,i,e)==OK){Statusprint(ElemTypee);〃聲明print(e)函數(shù)printf("刪除");print(e);printf("成功、n");}elseprintf("刪除失敗.\n");printf("順序表內(nèi)容:");PrintLinkList(L);〃6)元素定位printf("\n請輸入ー個元素以便定位:");read(x);i=LocateElem(L,x);if(i!=0){printf("該元素是表中的第%d個元素.\n",i);}elseprintf("該元素在表中不存在.'n");〃7)清空順序表ClearList(L);printf(z/\n最后順序表內(nèi)容、n");PrintLinkList(L);printf(*ListLength(L):%d\n*?ListLength(L));printf("XistEmpty(L):%d\nzz,ListEmpty(L));〃8)銷毀順序表DestroyList(L);system(ZZPAUSEZZ);return0;)/Z打印數(shù)據(jù)元素的方法Statusprint(ElemTypee){printf("%5d”,e);returnOK;)〃比較兩個元素相等的方法boolequal(ElemTypea,ElemTypeb)(returna==b;)〃打印順序表內(nèi)容voidPrintLinkList(SqListL)(ListTraverse(L,print);〃遍歷順序表并print()每個元素printf("\n〃);Name:sqlist.hCopyright:Author:Date:21-03-0520:21Description:*/#ifndefSQLIST_H_INCLUDEDttdefineSQLIST_H_INCLUDED#include〃ds.h"http://forStatus,OK...#ifndefElemType#defineElemTypeint/?數(shù)據(jù)元素類型默認(rèn)為int*/#defineELEMTYPE_TAGttendif順序表的存儲結(jié)構(gòu)定義defineLIST_INIT_SIZE100/?存儲空間初始分配容量?/defineLISTINCREMENT10/?存儲空間分配的增量?/typedefstruct{ElemType*elemJ 〃存儲空間基址intlength; 〃當(dāng)前長度intlistsize! 〃當(dāng)前已分配的存儲空間(元素個數(shù))}SqList;順序表的基本操作聲;明〃創(chuàng)建并初始化為空表StatusInitList(SqList&L);〃銷毀整個表(從此之后不再可用)StatusDestroyList(SqList&L);〃將表L置空StatusClearList(SqList&L);〃判斷表L是否為空表boolListEmpty(SqListL);〃求表L的長度intListLength(SqListL);〃取表L中的第i個元素,并用e返回.操作成功返回0K,失敗時返回ERRORStatusGetElem(SqListL,inti,ElemType&e);template<typenameT>boolequal(Ta,Tb){returna==b;)〃在表L中定位元素e首次出現(xiàn)的位置.操作成功返回位序,失敗時返回0//compare(a,b)為比較函數(shù),匹配時返回true,否則返回false/Z 這里默認(rèn)使用equal進(jìn)行比較intLocateElem(SqListL,ElemTypee,bool("compare)(ElemType,ElemType)=equal<ElemType>);〃在表L中插入第i個元素e.操作成功返回0K,失敗時返回ERRORStatusListinsert(SqList&L,inti,ElemTypee);〃刪除表L中第i個元素,結(jié)果用e返回.操作成功返回0K,失敗時返回ERRORStatusListDelete(SqList&L,inti,ElemType&e);〃遍歷表L,對每個元素調(diào)用visit(x).StatusListTraverse(SqListL,Status("visit)(ElemType));"順序表的基本操作的實現(xiàn)〃創(chuàng)建并初始化為空表StatusInitList(SqList&L)(//TODO(#1#):創(chuàng)建空表returnERROR;// )〃銷毀整個表(從此之后不再可用)StatusDestroyList(SqList&L)(//TODO(#1#):銷毀表returnERROR;// )〃將表L置空StatusClearList(SqList&L)(〃TODO(#1#):清空表returnERROR;// 〃判斷表L是否為空表boolListEmpty(SqListL)(//TODO(#1#):順序表判空returnfalse;// )〃求表L的長度intListLength(SqListL){//TODO(#1#):求順序表長度return0;// )〃取表L中的第i個元素,并用e返回.操作成功返回0K,失敗時返回ERRORStatusGetElem(SqListL,inti,ElemType&e)(//TODO(#1#):取元素returnERROR;// )〃在表L中定位元素e首次出現(xiàn)的位置.操作成功返回位序,失敗時返回0//compare(a,b)為比較函數(shù),匹配時返回true,否則返回falseintLocateElem(SqListL,ElemTypee,bool(*compare)(ElemType,ElemType))(//TODO(#1#):在表中定位元素e,用compare(a,b)匹配元素for(intj=0;j<L.length;j++)if(compare(L.elem[j],e))returnj;return0;// 〃在表L中插入第i個元素e.操作成功返回0K,失敗時返回ERRORStatusListinsert(SqList&L,inti,ElemTypee)(//TODO(#1#):在鏈表中插入元素returnERROR;// )〃刪除表L中第i個元素,結(jié)果用e返回.操作成功返回0K,失敗時返回ERRORStatusListDelete(SqList&L,inti,ElemType&e)(//TODO(#1#):在順序表中刪除元素returnERROR;// )〃遍歷表L,對每個元素調(diào)用visit(x).StatusListTraverse(SqListL,Status(*visit)(ElemType)){//TODO(#1#):遍歷順序表for(intj=0;j<L.length;j++)if(!visit(L.elem[j]))returnERROR;returnOK;// #ifdefELEMTYPEJTAG#undefElemType#undefELEMTYPE_TAG#endif#endif//SQLIST_H_INCLUDED/*Name:類C通用模塊Copyright:BTC2004Author:ZhuangBoDate:2004Description:[Constants]TRUE/FALSE/OK/ERROR/INFEASIBLE/OVERFLOW[Types]Status[Functions]max(a,b)min(a,b)read(char/int/float/doub1e/char*)write(char/int/float/double/char*)

#ifndef_DS_H_#define_DS_H_/Z函數(shù)結(jié)果狀態(tài)代碼constintTRUE =1;constintFALSE0;constintOK =1;constintERROR0;constintINFEASIBLE=-1;constintOVERFLOW=-2;//Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼typedefintStatus;〃基本函數(shù)#definemax(a,b)(((a)<(b))?(b):(a))#definemin(a,b)(((a)<(b))?(a):(b))ttinclude<stdio.h>〃不用格式串的輸入輸出(目的是為了方便書寫算法)/Z 比如輸入ー個基本類型(char,int,float,double,char*)的/Z變量x,可以直接用read(x);輸入,而打印則用write(x);〇/Z對于自定義類型,可以繼續(xù)擴充。inlineinlineinlineinlineinlineinlineinlineinlineinlineinlinevoidvoidvoidvoidvoidvoidvoidvoidvoidvoidread(char&e)read(int&e)read(float&e)read(double&e)read(char*e)write(chare)write(inte)write(floate)write(doublee)write(char*e){e=getchar();}{scanf("%d〃,&e);}{scanf(〃%f〃,&e);}{scanf(〃%lf”,&e);}{gets(e);}{printf(〃%c",e);){printf(〃%d〃,e);}{printf(〃%f",e);){printf("%lf〃,e);}{printf("%s〃,e);}#endif//_DSH?title:數(shù)據(jù)結(jié)構(gòu)實驗@name:く實驗2-1>線性表(順序表)的應(yīng)用ー我的圖書館?object:[實驗?zāi)康模輵?yīng)用線性表解決問題.有若干圖書,借出的書需要登記下來.用兩個線性表分別保存現(xiàn)有圖書和借書信息,并實現(xiàn)增加新書,借書,還書,打印等功能.學(xué)習(xí)命令式程序界面的編寫方法.[實驗提示].在book,h中描述了描述書的Book類型,還有幾個有關(guān)函數(shù)函數(shù)可以調(diào)用..在sqlist.h中完成順序表的各種操作..借書時,輸入書名,若有存書,則從存書表中刪除,插入借書表..還書時,輸入書名,若借過此書,則從借書表中刪除,插入存書表.?include:用到的頭文件?usage:請查看"TO-DO列表〃,根據(jù)要求完成代碼?copyright:BTC2005,ZhuangBo?author:ZhuangBo?date:2005?description:#include<cstdlib>#include<iostream>usingnamespacestd;#include"book.h"ttdefineElemTypeBook〃使用Book作為線性表元素的類型#include"sqlist.h"SqLists; 〃存書表SqListbJ 〃借書表voidSystemlnitializeO;voidSystemTerminate();voidSystemRunO;intmain(intargc,char*argv[]){Systeminitialize();SystemRunO;SystemTerminate();system("PAUSE");return0;voidSystemlnitialize()(InitList(s);InitList(b);Bookmybooks[]={{〃CProgrammingLanguage"},{“DataStructures"},{"C++ProgrammingLanguage"),{"EffactiveC++"},{"MoreEffactiveC++"},{"DesignPatterns"}};for(inti=0;i<6;i++)Listinsert(s,i,mybooks[i]);}voidSystemRunO(charGetCommandO;voidDoCommand(charcmd);charcmd;do{cmd=GetCommand();DoCommand(cmd);}while(cmd!=,q');}charGetCommand()(charstr[64];cout<<"\na:新書b:借書r:還書p:打印q:退出"<<endl;cout?cin.getline(str,64);returnstr[0];}voidDoComm

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論