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

正文內(nèi)容

全國計算機(jī)等級考試四級復(fù)習(xí)綱要-資料下載頁

2025-04-16 22:12本頁面
  

【正文】 因此就必須把多維結(jié)構(gòu)映射為一維的結(jié)構(gòu),即把多維結(jié)構(gòu)按一定次序排列成一維的。  四、樹型結(jié)構(gòu)  線性表、棧和隊列等數(shù)據(jù)結(jié)構(gòu)所表達(dá)和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織形式。然而,在計算機(jī)科學(xué)和計算機(jī)應(yīng)用的各個領(lǐng)域中,存在著大量需要用更復(fù)雜的邏輯結(jié)構(gòu)加以表示的問題。因此必須研究更復(fù)雜的邏輯結(jié)構(gòu)及相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。樹形結(jié)構(gòu)就是這些更復(fù)雜的結(jié)構(gòu)中最重要的一類?!   涫且活愔匾臉湫谓Y(jié)構(gòu),其定義如下:樹是n(n0)個結(jié)點的有窮集合,滿足:  (1)有且僅有一個稱為根的結(jié)點?! ?2)其余結(jié)點分為m(m≥0)個互不相交的非空集合,T 1 ,T 2 ,…,T m ,這些集合中的每一個都是一棵樹,稱為根的子樹?! ≡跇渖?,根結(jié)點沒有直接前趨。對樹上任一結(jié)點X來說,X是它的任一子樹的根結(jié)點惟一的直接前趨。為了討論方便,我們引入樹的若干習(xí)慣術(shù)語。樹上任一結(jié)點所擁有的子樹的數(shù)目稱為該結(jié)點的度。度為0的結(jié)點稱為葉子或終端結(jié)點。度大于0的結(jié)點稱為非終端結(jié)點或分支點。一棵樹中所有結(jié)點的度的最大值稱為該樹的度。若樹中結(jié)點A是結(jié)點B的直接前趨,則稱A為B的雙親或父結(jié)點,稱B為A的孩子(即“子女”)或子結(jié)點。易知任何結(jié)點A的孩子B也就是A的一棵子樹的根結(jié)點,父結(jié)點相同的結(jié)點互稱為兄弟。一棵樹上的任何結(jié)點(不包括根本身)稱為根的子孫。反之若B是A的子孫,則稱A是B的祖先,結(jié)點的層數(shù)(或深度)從根開始算起:根的層數(shù)為1,其余結(jié)點的層數(shù)為其雙親的層數(shù)加1。一棵樹中所有結(jié)點層數(shù)的最大值稱為該樹的高度或深度?! ?及一切樹形結(jié)構(gòu))是一種“分支層次”結(jié)構(gòu)。所謂“分支”是指樹中任一結(jié)點的子孫可以按它們所在的子樹的不同而劃分成不同的“分支”。所謂“層次”是指樹上所有結(jié)點可以按它們的層數(shù)劃分不同的“層次”。在實際應(yīng)用中,樹中的一個結(jié)點可用來存儲實際問題中的一個數(shù)據(jù)元素,而結(jié)點間的邏輯關(guān)系(即父結(jié)點與子結(jié)點之間的鄰接關(guān)系)往往用來表示數(shù)據(jù)元素之間的某種重要的、必須加以表達(dá)的關(guān)系?! ∮脠D示法表示任何樹形結(jié)構(gòu)時,箭頭的方向總是從上到下,即從父結(jié)點指向子結(jié)點,因此,可以簡單地用連線代替箭頭?! ? ?、偾蟾鵕OOT(T),引用型運算,其結(jié)果是結(jié)點X在樹T的根結(jié)點?! 、谇箅p親PARENT(T,X),引用型運算,其結(jié)果是結(jié)點X在樹T上的雙親結(jié)點。若X是樹T的根或X不在T上,則結(jié)果為一特殊標(biāo)志?! 、矍蠛⒆覥HILD(T,X,i),引用型運算,其結(jié)果是樹T上的結(jié)點X的第i個孩子。若X不在T上或X沒有第i個孩子,則結(jié)果為一特殊標(biāo)志?! 、芙銫REATE(X,T 1 ,…,T k )k≥1,加工型運算,其作用是建立一棵以X為根,以T 1 ,…,T k 為第1,…k棵子樹的樹?! 、菁糁ELETE(T,X,i),加工型運算,其作用是刪除樹T上結(jié)點X的第i棵子樹。若T無第i棵子樹,則為空操作。    (1)二叉樹的基本概念  二叉樹是結(jié)點的有窮集合,它或者是空集,或者同時滿足下述兩個條件:(1)有且僅有一個稱為根的結(jié)點:  (2)其余結(jié)點分為兩個互不相交的集合T 1 、T 2 ,T 1 與T 2 都是二叉樹,并且T 1 與T 2 有順序關(guān)系(T 1 在T 2 之前),它們分別稱為根的左子樹和右子樹?! 《鏄涫且活惻c樹不同的樹形結(jié)構(gòu)。它們的區(qū)別是:第一,二叉樹可以是空集,這種二叉樹稱為空二叉樹。第二,二叉樹的任一結(jié)點都有兩棵子樹(當(dāng)然,它們中的任何一個可以是空子樹),并且這兩棵子樹之間有次序關(guān)系,也就是說,它們的位置不能交換。相應(yīng)地,二叉樹上任一結(jié)點左、右子樹的根分別稱為該結(jié)點的左孩子和右孩子。另外,二叉樹上任一結(jié)點的度定義為該結(jié)點的孩子數(shù)(即非空子樹數(shù))。除這個幾個術(shù)語之外,樹的其它術(shù)語也適用于二叉樹?! √貏e值得注意的是,由于二叉樹上任一結(jié)點的子樹有左、右之分,因此即使一結(jié)點只有一棵非空子樹,仍須區(qū)別它是該結(jié)點的左子樹還是右子樹,這是與樹不同的。  (2)二叉樹的性質(zhì)  在某些情況下,了解二叉樹的下列性質(zhì)是有幫助的。    二叉樹通常有兩類存儲結(jié)構(gòu),順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)?! ?1)二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu)  二叉樹有不同的鏈?zhǔn)酱鎯Y(jié)構(gòu),其中最常用的是二叉樹鏈表與三叉鏈表。  其中,data域稱為數(shù)據(jù)域,用于存儲二叉樹結(jié)點中的數(shù)據(jù)元素。lchild域稱為左孩子指針域,用于存放指向本結(jié)點左孩子的指針(這個指針及指針域有時簡稱為左指針)。類似地,rchild域稱為右孩子指針域,用于存放指向本結(jié)點右孩子的指針(簡稱右指針)。二叉鏈表中的所有存儲結(jié)點通過它們的左、右指針的鏈接而形成一個整體。此外,每個二叉鏈表還必須有一個指向根結(jié)點的指針,該指針稱為根指針。根指針具有標(biāo)識二叉鏈表的作用,對二叉鏈表的訪問只能從根指針開始。值得注意的是,二叉鏈表中每個存儲結(jié)點的每個指針域必須有一個值,這個值或者是指向該結(jié)點的一個孩子的指針,或者是空指針NULL。  若二叉樹為空,則root=NULL。若某結(jié)點的某個孩子不存在,則相應(yīng)的指針為空。具有n個結(jié)點的二叉樹中,一共有2n個指針域,其中只有n1個用來指向結(jié)點的左右孩子,其余的n+1個指針域為NULL?! 《鏄涞逆?zhǔn)酱鎯Y(jié)構(gòu)操作方便,表達(dá)簡明(二叉樹的邏輯關(guān)系———結(jié)點間的父子關(guān)系———在二叉鏈表和三叉鏈表中被直接表達(dá)成對應(yīng)存儲結(jié)點之間的指針),因而成為二叉樹最常用的存儲結(jié)構(gòu)。然而在某些情況下,二叉樹的順序存儲結(jié)構(gòu)也很有用?! ?2)二叉樹的順序存儲結(jié)構(gòu)  二叉樹的順序存儲結(jié)構(gòu)由一個一維數(shù)組構(gòu)成,二叉樹上的結(jié)點按某種次序分別存入該數(shù)組的各個單元。顯然,這里的關(guān)鍵在于結(jié)點的存儲次序,這種次序應(yīng)能反映結(jié)點之間的邏輯關(guān)系(父子關(guān)系),否則二叉樹的基本運算就難以實現(xiàn)?! ∮啥鏄涞男再|(zhì)5可知,若對任一完全二叉樹上的所有結(jié)點按層編號,則結(jié)點編號之間的數(shù)值關(guān)系可以準(zhǔn)確地反映結(jié)點之間的邏輯關(guān)系。因此,對于任何完全二叉樹來說,可以采用“以編號為地址”的策略將結(jié)點存入作為順序存儲結(jié)構(gòu)的一維數(shù)組。具體地說就是:將編號為i的結(jié)點存入一維數(shù)組的第i個單元。  在這一存儲結(jié)構(gòu)中,由于一結(jié)點的存儲位置(即下標(biāo))也就是它的編號,故結(jié)點間的邏輯關(guān)系可通過它們下標(biāo)間的數(shù)值關(guān)系確定?!   ∮捎诙鏄涞幕具\算在鏈?zhǔn)酱鎯Y(jié)構(gòu)上的實現(xiàn)比較簡單,無需詳加討論。下面研究二叉樹的一種較為復(fù)雜的重要運算———遍歷及其在二叉鏈表上的實現(xiàn)?! ”闅v一棵二叉樹就是按某種次序系統(tǒng)地“訪問”二叉樹上的所有結(jié)點,使每個結(jié)點恰好被“訪問”一次。所謂“訪問”一個結(jié)點,是指對該結(jié)點的數(shù)據(jù)域進(jìn)行某種處理,處理的內(nèi)容依具體問題而定,通常比較簡單。遍歷運算的關(guān)鍵在于訪問結(jié)點的“次序”,這種次序應(yīng)保證二叉樹上的每個結(jié)點均被訪問一次且僅一次?! ∮啥x可知,一棵二叉樹由三部分組成:根、左子樹和右子樹。因此對二叉樹的遍歷也可相應(yīng)地分解成三項“子任務(wù)”: ?、僭L問根根點。 ?、诒闅v左子樹(即依次訪問左子樹上的全部結(jié)點)。③遍歷右子樹(即依次訪問右子樹上的全部結(jié)點)?! ∫驗樽?、右子樹都是二叉樹(可以是空二叉樹),對它們的遍歷可以按上述方法繼續(xù)分解,直到每棵子樹均為空二叉樹為止。由此可見,上述三項子任務(wù)之間的次序決定了遍歷的次序。若以D、L、R分別表示這三項子任務(wù),則人有六種可能的次序:DLR、LDR、LRD、DRL、RDL和RLD。通常限定“先左后右”,即子任務(wù)②在子任務(wù)③之前完成,這樣就只剩下前三種次序,按這三種次序進(jìn)行的遍歷分別稱為先根遍歷(或前序遍歷)、中根(或中序)遍歷、后根(或后序)遍歷。三種遍歷方法的定義如下:  先根遍歷 若需遍歷的二叉樹為空,執(zhí)行空操作。否則,依次執(zhí)行下列操作: ?、僭L問根結(jié)點?! 、谙雀闅v左子樹?! 、巯雀闅v右子樹?! ≈懈闅v 若需遍歷的二叉樹為空,執(zhí)行空操作,否則,依次執(zhí)行下列操作: ?、僦懈闅v左子樹。②訪問根結(jié)點。③中根遍右子樹?! 『蟾闅v 若需遍歷的二叉樹為空,執(zhí)行空操作,否則,依次執(zhí)行下列操作:  ①后根遍歷左子樹。②后根遍歷右子樹。③訪問根結(jié)點?! ★@然,上述三種遍歷方法的區(qū)別在于執(zhí)行子任務(wù)“訪問根結(jié)點”的“時機(jī)”不同。最先(最后、在中間)執(zhí)行此子任務(wù),則為先根(后根、中根)遍歷?! “茨撤N遍歷方法遍歷一棵二叉樹,將得到該二叉樹上所有結(jié)點的訪問序列?!   涫且环N常用的數(shù)據(jù)結(jié)構(gòu)。為了適應(yīng)各種應(yīng)用問題的需要,多種不同的存儲結(jié)構(gòu)也相應(yīng)地建立起來。下面介紹樹的三種常用存儲結(jié)構(gòu)?! ?1)孩子鏈表表示法  孩子鏈表表示法是樹的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)。與二叉樹的二叉鏈表存儲方法類似,孩子鏈表表示法的基本思想是:樹上的一個結(jié)點的內(nèi)容(數(shù)據(jù)元素)以及指向該結(jié)點所有孩子的指針存儲在一起以便于運算的實現(xiàn)。由于樹上的結(jié)點的度(孩子數(shù))沒有限制,而且各個結(jié)點的度可能相差很大,一種自然的表示方法是為樹上的每個結(jié)點X建立一個“孩子鏈表”,以便存儲X中的數(shù)據(jù)元素和指向X的所有孩子的指針。一個孩子鏈表是一個帶頭結(jié)點的單鏈表,單鏈表的頭結(jié)點含兩個域:數(shù)據(jù)域和指針域。其中,數(shù)據(jù)域用于存儲結(jié)點X中的數(shù)據(jù)元素。指針域用于存儲指向該單鏈表中第一個表結(jié)點(首結(jié)點)的指針。為了檢索方便,所有頭結(jié)點組織成一個數(shù)組,稱為表頭數(shù)組。對每個結(jié)點X的孩子鏈表來說,其中的所有表結(jié)點也含兩個域,孩子域(即數(shù)據(jù)域)和指針域。第i個表結(jié)點的孩子域存儲X的第i個孩子在頭結(jié)點數(shù)組中的下標(biāo)值?! ?2)孩子兄弟鏈表表示法  孩子兄弟鏈表中所有存儲結(jié)點的形式相同,均含三個域:數(shù)據(jù)域———用于存儲樹上的結(jié)點中的數(shù)據(jù)元素。孩子域———用于存儲指向本結(jié)點第一個孩子的指針。兄弟域———用于存放指向本結(jié)點下一個兄弟的指針?! ≈档米⒁獾氖?,孩子兄弟鏈表的結(jié)構(gòu)形式與二叉鏈表完全相同。但存儲結(jié)點中指針的含義不同。二叉鏈表中存儲結(jié)點的左、右指針分別指向左、右孩子。而孩子兄弟鏈表中存儲結(jié)點的兩個指針分別指向“長子”和“大弟”。  在孩子兄弟鏈表表示法中,結(jié)點形式統(tǒng)一,結(jié)點間的聯(lián)系比較簡捷。同時,在這種存儲結(jié)構(gòu)上容易實現(xiàn)樹數(shù)據(jù)結(jié)構(gòu)的大多數(shù)運算?! ?3)雙親表示法  樹上每個結(jié)點的孩子可以有任意多個,但雙親只有一個。因此,通過指向雙親的指針而將樹中所有結(jié)點組織在一起形成一種存儲結(jié)構(gòu)是十分簡法的。樹的這種存儲表示方法稱為雙親表示法。在雙親表示法下,每個存儲結(jié)點由兩個域組成:數(shù)據(jù)域———用于存儲樹上結(jié)點中的數(shù)據(jù)元素?!爸羔槨庇颉糜谥甘颈窘Y(jié)點之雙親所在的存儲結(jié)點。值得注意的是,“指針”域的類型定義可以有兩種選擇。第一種是將其定義為高級語言(如C語句)中的指針類型。通過將存儲結(jié)點中的指針域定義為高級語言中的指針類型,就得到各種鏈?zhǔn)酱鎯Y(jié)構(gòu),如單鏈表、二叉鏈表、孩子鏈表等等。第二種選擇是將“指針”域定義為整型、子界型等型。嚴(yán)格地說,無論選擇上述哪種定義,得到的都是鏈?zhǔn)酱鎯Y(jié)構(gòu),因為在這兩種定義之下,各存儲結(jié)點之間的聯(lián)結(jié)是通過“指針”完成的,而且這些指針反映了結(jié)點之間的邏輯關(guān)系。  為了區(qū)別這兩種鏈?zhǔn)浇Y(jié)構(gòu),通常將指針域定義為高級語言中的指針類型的各種鏈?zhǔn)酱鎯Y(jié)構(gòu)(如單鏈表、二叉鏈表等等)稱為“動態(tài)鏈表”,相應(yīng)的指針稱為“動態(tài)指針”。將指針域定義為整型、子界型等類型的各種鍵式存儲結(jié)構(gòu)稱為“靜態(tài)鏈表”,相應(yīng)的“指針”稱為:“靜態(tài)指針”。動態(tài)鏈表中的結(jié)點是通過高級語言中的標(biāo)準(zhǔn)過程例如C語言的庫函數(shù)malloc(size)動態(tài)(即運行期間)生成的(動態(tài)鏈表由此得名),無需事先規(guī)定鏈表的容量,因此動態(tài)鏈表的大小是動態(tài)變化的。相反,靜態(tài)鏈有的容量必須事先說明,因而其大小是固定的。然而,在某些情況下,特別是當(dāng)結(jié)點數(shù)固定不變且可事先確定時,采用靜態(tài)鏈表往往更加方便、直觀?! §o態(tài)雙親鏈表由一個一維數(shù)組樹成。數(shù)組的每個分量包含兩個域:數(shù)據(jù)域和雙親域。數(shù)據(jù)域用于存儲樹上一個結(jié)點中的數(shù)據(jù)元素。雙親域用于存放本結(jié)點的雙親結(jié)點在數(shù)組中的序號(下標(biāo)值)?!   ∨c二叉樹類似,遍歷是樹的一種重要運算。樹的主要遍歷方法有以下三種?! ?1)先根遍歷若樹非空,則 ?、僭L問根結(jié)點?! 、谝来蜗雀闅v根的各個子樹T 1 ,…,T m ?! ?2)后根遍歷若樹非空,則 ?、僖来蜗雀闅v根的各個子樹T 1 ,…,T m 。②訪問根結(jié)點?! ?3)層次遍歷 ?、偃魳浞强眨L問根結(jié)點?! 、谌舻?,…,i(i≥1)層結(jié)點已被訪問,且第i+1層結(jié)點未訪問,則從左到右依次訪問第i+1層結(jié)點?! ★@然,按層次遍歷所得的結(jié)點訪問序列中,各結(jié)點的序號與按層編號所得的編號一致。    一般樹轉(zhuǎn)換為二叉樹的基本思想是:將樹中每個結(jié)點用兩個鏈接表示就可以了,一個指向它最左邊的孩子,另一個指向它右邊的一個兄弟,從圖形上看,具體步驟是: ?、偌泳€:在兄弟結(jié)點直接加一虛線?! 、谀ň€:對每個結(jié)點,除了其最左的一個孩子外,抹去該結(jié)點原來與其余孩子之間的邊線?! 、坌D(zhuǎn):將新加上的虛線改為實線,并將虛線以及有關(guān)的實線順時鐘旋轉(zhuǎn)45度?! 《鏄溥€原為一般樹的步驟是:  ①加線:若某結(jié)點是一父結(jié)點的左孩子,則將該結(jié)點的右孩子以及沿著右鏈搜索到的所有右孩子結(jié)點都用線與那個父結(jié)點連接起來?! 、谀ň€:抹去原二叉樹中所有結(jié)點與其右孩子的連線?! 、坌D(zhuǎn):將虛線及有關(guān)實線逆時鐘旋轉(zhuǎn)約45度,并將幾個結(jié)點按層次排列?!   ∩洲D(zhuǎn)換為二叉樹的步驟是: ?、賹⑸种械拿靠脴滢D(zhuǎn)換為二叉樹?! 、谏种械谝豢脴涞母Y(jié)點就是轉(zhuǎn)換后二叉樹的根結(jié)點,依次將后一棵樹作為前一棵樹根結(jié)點的右子樹?! 《鏄滢D(zhuǎn)換為森林的步驟是: ?、偕值谝豢脴涞母褪嵌鏄涞母! 、诙鏄涞淖笞訕滢D(zhuǎn)換為森林的第一棵樹,二叉樹的右子樹對應(yīng)于森林中其余的樹。③二叉樹右子樹的根結(jié)點作為余下樹中第一棵樹的根結(jié)點……,以此類推?! ∥?、圖  圖的概念  圖是一種較線性表和樹形結(jié)構(gòu)更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在線性表中每個數(shù)據(jù)元素只有一個(直接)前驅(qū)和后繼,即各數(shù)據(jù)元素之間僅有線性關(guān)系。在樹形結(jié)構(gòu)中,數(shù)據(jù)元素之間有明顯的層次關(guān)系,每一層中的數(shù)據(jù)元素只和上一層中的一個元素(即雙親結(jié)點)相關(guān)。而在圖中,任意兩個數(shù)據(jù)元素之間均有可能相關(guān)?! D(graph)是圖型結(jié)構(gòu)的簡稱。它是一種復(fù)雜的非線性數(shù)
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1