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

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)實驗報告題目:線性表班級:網(wǎng)絡工程1401班學號:指導教師:高峰日期:2023/716BitTreeBT;BT=(BitNode*)ma1loc(sizeof(BitNode));BT=NULL;returnBT;)BitTreeBitTreeCreat(BitTree&BT){intch:printf(〃請輸入節(jié)點的內(nèi)容,輸入0時結(jié)束建立!\n");scanf(0%d",&ch);if(ch==0)BT=NULL;else(BT=(BitTree)malloc(sizeof(BitNode));BT->data=ch;BitTreeCreat(BT->1child);BitTreeCreat(BT->rchild);)returnBT;}voidBitTreeEmpty(BitTreeBT){if(BT==NULL)Printf("樹為空!\n");elseprintfC?5!\nO;voidPreOrderTraverse(BitTreeBT){if(BT!=NULL){printf("樹結(jié)點的內(nèi)容為*d\n”,BT->data);PreOrdcrTraverse(BT—>1child);PreOrderTraverse(BT->rchild);))voidInOrderTraverse(BitTreeBT){if(BT!=NULL){In0rderTraverse(BT->lchild);Printf("樹結(jié)點的內(nèi)容為:%d\n\BT->data);InOrderTraverse(BT->rchild);)}voidPostOrdcrTraverse(BitTreeBT){if(BT!=NULL){PostOrderTraverse(BT->1chi1d);Post0rderTraverse(BT->lchi1d);printf("樹結(jié)點的內(nèi)容為:%d\n",BT->data);})intcount(BitTreeBT){if(BT==NULL)return0;elsereturn(count(BT—>1child)+count(BT->rchild)+1);intBinTreeDepth(BitTreeBT){inti=l,j=1;if(BT==NULL)return0;e1se(i=BinTreeDepth(BT->lchi1d);j=BinTreeDepth(BT->rchi1d);if(i>j)return(i+l);elsereturn(j+1);))voidBinTreeC1ear(BitTree&BT){if(BT){if(BT->lchi1d)BinTreeClear(BT->1child);if(BT->rchild)BinTreeC1ear(BT->rchiId);free(BT);BT=NILL;)}mainO{BitTreeBT;while(i!=0){printf("——-區(qū)欠—'n");prinlf(〃請選擇要進行的操作'n〃);printf("l.初始化一棵樹2.建立一棵樹3.判斷樹是否為空\n");printf(〃4.按前序遍歷樹5.按中序遍歷樹6.按后序遍歷樹\n〃);printf("7.求樹的深度8.求樹的結(jié)點數(shù)9.把樹清空\n");。萬1】4'("0.退出操作界面%〃);printf("謝謝使用\n");seanf("%d&j);switch(j){case1:BT=BitTreelnit();printf("樹已經(jīng)初始化!\n");break;case2:BitTreeCreat(BT);break;case3:BitTreeEmpty(BT);break;case4:Pre0rderTraverse(BT);break;case5:InOrderTraverse(BT);break;case6:Post0rderTraverse(BT);break;:1=BinTreeDepth(BT);printf(“樹的深度為:%d\n”,1);break;l=count(BT);printf(“樹的結(jié)點數(shù)為:%d\n",1);break;case9:BinTreeClear(BT);printf(“樹已經(jīng)清空!\n");break;case0:exit(0);}

環(huán)節(jié):.選擇進行的操作.初始化、建立、判斷樹是否空、先/中/后序遍歷、求深度/結(jié)點,清空樹.顯示結(jié)果四:實驗結(jié)果及分析■:'C:\Users\dell\Desktop\Ju?155^\demo\Debug\$.exe,歡迎使用歡迎使用請選鞍進行的操作1,瞬化-醐2建立一喇3州幅為空&著前序遍歷樹5?按巾序撕樹6.按后序遍歷樹7.蝴的深度8,蝴除點數(shù)9,把端空Q點出麻界面蒯使用2請輸入節(jié)點的內(nèi)容,輸入0時結(jié)束建立!342568964請輸入節(jié)點的內(nèi)容,輸入耐結(jié)束建立!歡迎使用請選鞍進行的操作1,瞬化-醐2建立一喇3歡迎使用請選鞍進行的操作1,瞬化-醐2建立一喇3州幅為空&著前序遍歷樹5?按巾序撕樹6.按后序遍歷樹7.蝴的深度8,蝴除點數(shù)9,把端空Q點出麻界面蒯使用2請輸入節(jié)點的內(nèi)容,輸入0時結(jié)束建立!342568964請輸入節(jié)點的內(nèi)容,輸入耐結(jié)束建立!■歡迎使用請選擇要進行的操作1.初始化一棵樹2.建立一棵樹3.判斷樹是否為空4.按前序遍歷樹5.按中序遍歷樹6.按后序遍歷樹7.求樹的深度8.求樹的結(jié)點數(shù)9.把樹清空0.退出操作界面謝謝使用才結(jié)點的內(nèi)容為:3寸結(jié)點的內(nèi)容為:4寸結(jié)點的內(nèi)容為:2寸結(jié)點的內(nèi)容為:5寸結(jié)點的內(nèi)容為:6寸結(jié)點的內(nèi)容為:8寸結(jié)點的內(nèi)容為:9I結(jié)點的內(nèi)容為:6寸結(jié)點的內(nèi)容為:4L初始化一棵樹2.建立一棵樹3.判斷樹是否為空4.按前序遍歷樹5.按中序遍歷樹6.按后序遍歷樹7.求樹的深度8.求樹的結(jié)點數(shù)9.把樹清空0.退出操作界面謝謝使用Q樹的結(jié)點數(shù)為:9歡迎使用請選擇要進行的操作1.初始化一棵樹2.建立一棵樹3.判斷樹是否為空4.按前序遍歷樹5.按中序遍歷樹6.按后序遍歷樹7.求樹的深度8.求樹的結(jié)點數(shù)9.把樹清空0.退出操作界面謝謝使用7樹的深度為:9分析:本程序不僅可以記錄一棵二叉樹中每種類型節(jié)點數(shù)(度為0/1/2的節(jié)點數(shù))。同時讓他有以下功能:1.初始化一棵樹。2.建立一棵樹。3.判斷樹是否為空。4.分別按先/中/后序遍歷樹。5.求樹的深度。6.求樹的結(jié)點數(shù)。7.清空樹。實驗一:線性表一:實驗規(guī)定掌握數(shù)據(jù)結(jié)構(gòu)中線性表的基本概念。純熟掌握線性表的基本操作:創(chuàng)建、插入、刪除、查找、輸出、求長度及合并并運算在順序存儲結(jié)構(gòu)撒謊可以的實驗。純熟掌握鏈表的各種操作和應用。二.實驗內(nèi)容.編程實現(xiàn)在順序存儲的有序表中插入一個元素(數(shù)據(jù)類型為整型)。.編程實現(xiàn)把順序表中從i個元素開始的k個元素刪除(數(shù)據(jù)類型為整型)。三:實驗過程及環(huán)節(jié)源代碼:include<stdio.h>include<ma1loc.h>^defineLIST_INIT_SIZE100fineLISTINCREMENT10typcdefstruct{int*elem;int1ength;int1istsize;}SqList://SqListsq;voidInitList_Sq(SqList*sq)//初始化列表(sq->e1em=(int*)ma11oc(LIST_INIT_SIZE*sizeof(int));sq->lcngth=O;sq->listsize=LIST_INIT_SIZE;PrintfC申請空間成功!\n");)voidGetE1em(SqList*sq,inti)//獲取第i位置元素的值(int*p;p=&(sq->elem[i-1]);printfC%r,*p);printf("\n");}intListlnsert_Sq(SqList*sq,inti,inta)〃在i位置之前插入a(int*p,*q;if(i<=0I|i>sq—>length+1)(printf(*——位置不合法!\n");return0;}if(sq->1ongth>=sq->1istsize)(int*newbase=(int*)realloc(sq—>elem,(sq—>1istsize+LISTINCREMENT)*sizeof(int));if(1newbase)(printf("申請空間溢出\n");return0;)sq->elem=newbase;sq->listsizc+=LISTINCREMENT;}p=&(sq->e1em[i-1]);//p指向第i位置的元素q=&(sq->elem[sq->length-1]);//q指向最后一個元素for(;q>=p;—q)*(q+1)=*q;*p=a;++sq—>1ength;return1;}intListDelete_Sq(SqList*sq,inti)〃刪除i位置上的值(int*p,*q;if(i<1||i>sq->1ength)return0;P=&(sq—>elem[i-l]);//p指向第i位置的元素q=sq—>e1em+sq->1ength—l;//q指向最后一個元素for(++p;p<=q;++p)(*(pT)=*p;)—sq->length;return1;voidvisit(SqList*sq)//輸出數(shù)據(jù)inti=l;for(;i<=sq->length;i++)(int*p;p=&sq->elem[i-l];printf(*%d",*p);printf("");}}voidmain()(inti=1,a=0,boo=1,numbor=0;SqLists,*sq;sq=&s;InitList_Sq(sq);printf("初始化空表\n〃);printfC輸入數(shù)據(jù)個數(shù):\n");scanf(",&number);printf("輸入%€1個數(shù)據(jù):",numbcr);printf\n〃);for(;i<=numbcr;i++)(scanf&a);if(boo=ListInsert_Sq(sq,i,a))printf("插入成功!\n");else(printfC插入不成功,重新插入--!\n");i=i-l;})Printf("輸出所有元素\n");visit(sq);printf('\n〃);Printf("輸出刪除的位置:");scanf&a);if(boo=ListDe1ete_Sq(sq,a))(printf("—數(shù)據(jù)刪除成功!\n");}else(printf("沒有刪除成功\n");)Printf("輸出所有元素:\n〃);visit(sq);prinIf;printf("輸出要顯示數(shù)據(jù)的位置:〃);scanf("/d",&a);printf("輸出%d位置數(shù)值\n",a);if(a<()|a>sq->length)

PrintfC—-—輸出位置的數(shù)據(jù)不存在——\nH);)eIse(GetE1em(sq,a);)環(huán)節(jié):.初始化空表.順序插入數(shù)據(jù)后輸出所有元素.選擇刪除位置,刪除數(shù)據(jù)后輸出所有元素.選擇查看的數(shù)據(jù)位置,輸出選擇杳看的數(shù)據(jù)四:實驗結(jié)果及分析Jtor方\d.1r\C>。,icTo

溫馨提示

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

評論

0/150

提交評論