freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

華中科技大學(xué)數(shù)據(jù)結(jié)構(gòu)實驗報告(存儲版)

2025-06-22 18:12上一頁面

下一頁面
  

【正文】 iTree T) { if (T) return FALSE。 return ERROR。}//遍歷二叉樹的非遞歸算法,建立遞歸工作棧status Pre_order_b(BiTree T, status(*visit)(TElemType e)) { BiTNode *st[MAXSIZE], *p。 }}//先序遍歷的另一種算法思想是直接//在第一次訪問根結(jié)點時對根結(jié)點進行操作status Mid_order_b(BiTree T, status(*visit)(TElemType e)) { BiTree st[MAXLENG]。 } } while (top || T)。 flag = 1。 flag = 0。 while (top) { p = st[top]。 //置空棧 st[top++] = T。 if (T) { if ((Tlchild!=NULLamp。 if (T1 != NULL) return T1。 T1 = LeftSibling(Trchild, e)。 //遞歸調(diào)用對左子樹進行操作 if (T1 != NULL) return T1。 p = LeftChild(Trchild, e)。 if (p != NULL) return p。 }//若LR為0,插入c為T中p所指結(jié)點的左子樹 else { crchild = prchild。 } if (LR == 0) { crchild = plchild。 if (p != NULL) return p。 p = LeftChild(Tlchild, e)。Tlchilddata == e) return Trchild。 T1 = LeftSibling(Tlchild, e)。 if (T1 != NULL) return T1。 } } return ERROR。 //若二叉樹為空,返回Error BiTNode *st[MAXLENG], *p。 int top = 0。//彈出已訪問的根結(jié)點 pre = T。 T = Tlchild。 //彈出根指針 if(!visit(Tdata)) return ERROR。 //將右子樹的根結(jié)點存入棧中 if (plchild != NULL) st[top++] = plchild。 return ERROR。 else return 1+MAX(BiTreeDepth(Tlchild), BiTreeDepth(Trchild))。 Trchild = NULL。 scanf(%d, amp。ch)。 T = NULL。 return OK。//typedef是將結(jié)構(gòu)類型定義struct BiTNode取別名為BiTNodetypedef BiTree QElemType。 }//end of switch system(cls)。 getchar()。 getchar()。 getchar()。 if (ListInsert(L[t], i, e) == ERROR) printf(插入失敗!\n)。 else printf(數(shù)據(jù)元素%d的后繼數(shù)據(jù)元素為%d!\n, cur, next_e)。 getchar()。 getchar()。 case 7: printf(請輸入需定位的數(shù)據(jù)元素的值!\n)。 scanf(%d, amp。 getchar()。 else printf(線性表清空失敗!\n)。 case 2: //printf(\nDestroyList功能待實現(xiàn)!\n)。 printf( 請選擇你的操作[0~12]:\n)。 printf( 2. DestroyList 9. NextElem\n)。 int next_e。 while (t) { printf(請輸入對哪一個線性表進行操作199,輸入0退出!\n)。 return FALSE。 return OK。 int i。}status ListTrabverse(SqList L) { int i。 p = amp。 *q = e。 = newbase。 j != ) { next_e = [j]。 j != 1) { pre_e = [j 2]。 j = 1。L) { if ( == 0) return TRUE。 } return ERROR。 = LIST_INIT_SIZE。typedef struct { ElemType * elem。圖230 驗證二叉樹為空 實驗小結(jié)黑體4號加粗,通過本次實驗,熟悉了二叉樹的基本操作,學(xué)會了用二叉樹去解決一些問題,學(xué)習(xí)中的主要收獲為以下幾點: 加深了對二叉樹的概念和邏輯結(jié)構(gòu)的理解。圖220 查找結(jié)點的左兄弟測試結(jié)果2,在原二叉樹的基礎(chǔ)上插入子樹,測試結(jié)果如圖221所示。圖212 求二叉樹深度測試結(jié)果,求二叉樹的根結(jié)點,測試結(jié)果如圖213所示。圖26 二叉樹創(chuàng)建,根據(jù)其前序遍歷、中序遍歷、后續(xù)遍歷的結(jié)果是否與預(yù)期一致判斷結(jié)構(gòu)是否正確。 頭文件及預(yù)定義常量說明頭文件 include include include 預(yù)定義常量(1)函數(shù)結(jié)果狀態(tài)宏定義 define TRUE 1define FALSE 0define OK 1define ERROR 0define OVERFLOW 2(2)類型表達式 typedef int status。經(jīng)分許,該算法的時間復(fù)雜度為O(n)。1 獲得右孩子結(jié)點的算法思想是:算法思想同上。1 獲得左兄弟結(jié)點的算法思想是:將獲得左孩子結(jié)點寫成函數(shù),函數(shù)的參數(shù)是二叉樹的頭指針,如果頭指針為空,返回NULL;否則,如果二叉樹的根結(jié)點的右孩子關(guān)鍵字與給定關(guān)鍵字一致,返回根結(jié)點的左孩子。經(jīng)分析,該算法的時間復(fù)雜度為O(1)。經(jīng)分析,該算法的時間復(fù)雜度為O(n)。Op初始化為1,以便第一次能進入循環(huán)。其中,在主函數(shù)中完成函數(shù)調(diào)用所需實參值的準備和函數(shù)執(zhí)行結(jié)果的顯示,并給出適當(dāng)?shù)牟僮魈崾?。⒂插入子樹:函?shù)名稱是InsertChild(T,p,LR,c);初始條件是二叉樹T存在,p指向T中的某個結(jié)點,LR為0或1,,非空二叉樹c與T不相交且右子樹為空;操作結(jié)果是根據(jù)LR為0或者1,插入c為T中p所指結(jié)點的左或右子樹,p 所指結(jié)點的原有左子樹或右子樹則為c的右子樹。⑾獲得左孩子結(jié)點:函數(shù)名稱是LeftChild(T,e);初始條件是二叉樹T存在,e是T中某個節(jié)點;操作結(jié)果是返回e的左孩子結(jié)點指針。⑷清空二叉樹:函數(shù)名稱是ClearBiTree (T);初始條件是二叉樹T存在; 操作結(jié)果是將二叉樹T清空。要求構(gòu)造一個具有菜單的功能演示系統(tǒng),其中,在主程序中完成函數(shù)調(diào)用所需實參值的準備和函數(shù)執(zhí)行結(jié)果的顯示,并給出適當(dāng)?shù)牟僮魈崾?。圖119 遍歷輸出線性表中元素的測試結(jié)果 實驗小結(jié)黑體4號加粗, 經(jīng)過本次試驗,我充分了解到了線性表的物理結(jié)構(gòu),并且通過切身的體會熟練掌握了線性表的基本操作,提高了自己寫有關(guān)線性表的代碼的能力,尤其是在寫的過程中遇到了許多困難,在多次尋求同學(xué)的幫助下終于解決了。圖111 判斷線性表非空的測試結(jié)果,求線性表的長度,測試結(jié)果如圖112所示。圖14 系統(tǒng)演示1,進入菜單演示界面,如圖15所示。經(jīng)分析,該算法的時間復(fù)雜度為O(n)。8. 獲得后繼算法思想:將獲得后繼寫成函數(shù),函數(shù)的參數(shù)是結(jié)構(gòu)體類型變量以及特定數(shù)據(jù)元素的值。經(jīng)分析,該算法的時間復(fù)雜度為O(1)。演示系統(tǒng)結(jié)構(gòu)如圖11. 運算算法思想與設(shè)計 線性表運算算法思想與設(shè)計如下:1. 初始化線性表思想:將線性表初始化過程寫成函數(shù),其中傳入函數(shù)的參數(shù)是主函數(shù)中定義的結(jié)構(gòu)型變量L的引用,在函數(shù)中,首先使用malloc函數(shù)分配LISTSIZE大小的連續(xù)內(nèi)存空間,由于線性表的長度為0,即完成了線性表的初始化。 系統(tǒng)設(shè)計黑體4號加粗, 數(shù)據(jù)物理結(jié)構(gòu)線性表的數(shù)據(jù)物理結(jié)構(gòu)如下: typedef struct { //順序表(順序結(jié)構(gòu))的定義 ElemType *elem。⑿遍歷表:函數(shù)名稱是ListTraverse(L,visit()),初始條件是線性表L已存在;操作結(jié)果是依次對L的每個數(shù)據(jù)元素調(diào)用函數(shù)visit()。⑷判定空表:函數(shù)名稱是ListEmpty(L);初始條件是線性表L已存在;操作結(jié)果是若L為空表則返回TRUE,否則返回FALSE。定義了線性表的初始化表、銷毀表、清空表、判定空表、求表長和獲得元素等基本運算對應(yīng)的函數(shù),并給出適當(dāng)?shù)牟僮魈崾撅@示,可選擇以文件的形式進行存儲和加載,即將生成的線性表存入到相應(yīng)的文件中,也可以從文件中獲取線性表進行操作。在非空表中的每個數(shù)據(jù)元素都有一個確定的位置,如a1是第一個數(shù)據(jù)元素,an是最后一個數(shù)據(jù)元素,ai是第i個數(shù)據(jù)元素。⑺查找元素:函數(shù)名稱是LocateElem(L,e,pare());初始條件是線性表已存在;操作結(jié)果是返回L中第1個與e滿足關(guān)系pare()關(guān)系的數(shù)據(jù)元素的位序,若這樣的數(shù)據(jù)元素不存在,則返回值為0。附錄 A 提供了簡易菜單的框架。 //當(dāng)前分配的存儲容量(以 sizeof(ElemType)為單位) }SqList。在函數(shù)中,,。6. 查找元素的算法思想:將查找線性表特定值的數(shù)據(jù)元素寫成函數(shù),其中函數(shù)的參數(shù)是主函數(shù)中定義的結(jié)構(gòu)類型變量L以及查找的數(shù)據(jù)元素的值,通過循環(huán)對線性表中的每一個元素與給定值比較看是否相等,如果相等就返回該元素的次序。9. 插入元素算法思想:將插入函數(shù)寫成函數(shù),函數(shù)的參數(shù)是結(jié)構(gòu)型變量以及插入元素的值大小以及插入位置。圖內(nèi)容:字體大小參考宋體5號,居中 系統(tǒng)實現(xiàn)黑體4號加粗, 編程環(huán)境、運行環(huán)境、項目工程描述 本次實驗采用Microsoft Visual Studio 2015編程軟件編寫,并用VS2015進行編譯運行,項目名稱是linear datastructer。圖16 演示系統(tǒng)3,退出演示系統(tǒng),結(jié)束操作,如圖17所示。圖114 查找元素的前驅(qū)數(shù)據(jù)元素,確定值為2的數(shù)據(jù)元素的后繼數(shù)據(jù)元素,測試結(jié)果如圖115所示。還有對“amp。 數(shù)據(jù)關(guān)系R: 若D=Φ,則R=Φ,稱BinaryTree為空二叉樹; 若D≠Φ,則R={H},H是如下二元關(guān)系:(1) 在D中存在唯一的成為根的數(shù)據(jù)元素root,它在關(guān)系H中無前驅(qū);(2) 若D{root}≠Φ,則存在D{root}={D1,Dr},且D1∩Dr=Φ。⑺獲得根結(jié)點:函數(shù)名稱是Root(T);初始條件是二叉樹T已存在;操作結(jié)果是返回T的根。若e無右孩子,則返回NULL。⒄前序遍歷:函數(shù)名稱是PreOrderTraverse(T,Visit());初始條件是二叉樹T存在,Visit是對結(jié)點操作的應(yīng)用函數(shù);操作結(jié)果:先序遍歷t,對每個結(jié)點調(diào)用函數(shù)Visit一次且一次,一旦調(diào)用失敗,則操作失敗。 系統(tǒng)設(shè)計黑體4號加粗, 數(shù)據(jù)物理結(jié)構(gòu)二叉樹的數(shù)據(jù)物理結(jié)構(gòu)如下:typedef struct BiTNode { TElemType data。經(jīng)分析,該算法的時間復(fù)雜度為O(1)。 判定空二叉樹的算法思想:將判定空二叉樹寫成函數(shù),對于一個二叉樹,若根結(jié)點不存在則為空二叉樹,否則不是空二叉樹,那么只需要判斷指向根結(jié)點的結(jié)構(gòu)類型指針T是否為空即可。經(jīng)分析,該算法的時間復(fù)雜度為O(n)。1 獲得右兄弟結(jié)點的算法思想是:算法思想同上。經(jīng)分析,該算法的時間復(fù)雜度為O(n)。1 非遞歸中序遍歷的算法思想是:將非遞歸中序遍歷寫成函數(shù),函數(shù)的形參是二叉樹的頭指針,首先將根結(jié)點的值壓入堆棧,然后一直向左,將根結(jié)點依次壓入堆棧,判斷堆棧非空,將棧頂元素彈出,訪問該結(jié)點,如果其右子樹非空,對其右子樹執(zhí)行循環(huán)操作。(3)系統(tǒng)常量定義define MAXLENG 10define MAXSIZE 2define QMAXSIZE 5 演示系統(tǒng)操作。圖28 中序遍歷二叉樹的測試結(jié)果,后序遍歷二叉樹,測試結(jié)果如圖29所示。圖215 對指定結(jié)點重新賦值測試結(jié)果,輸入查找關(guān)鍵字為E的結(jié)點的左孩子,測試結(jié)果如圖216所示。圖222 先序遍歷的測試結(jié)果圖223 層序遍歷的測試結(jié)果圖224 后序遍歷的測試結(jié)果以上遍歷結(jié)果與預(yù)期相吻合,說明插入后得到的新二叉樹滿足結(jié)構(gòu)正確性。 通過非遞歸算法的編寫加深了對遞歸內(nèi)在機制的分析以及學(xué)會了如何用堆棧去代替遞歸達到相同的目的。}SqList。L) { if ( != NULL) { free()。 else { = 0。e) { if (i1 || iListLength(L)) return OVERFLOW。}status PriorElem(SqList L, ElemType cur, ElemType amp。}status NextElem(SqList L, ElemType cur, ElemType amp。}status ListInsert(SqList amp。([i
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1