數(shù)據(jù)結(jié)構(gòu)--線性表_第1頁
數(shù)據(jù)結(jié)構(gòu)--線性表_第2頁
數(shù)據(jù)結(jié)構(gòu)--線性表_第3頁
數(shù)據(jù)結(jié)構(gòu)--線性表_第4頁
數(shù)據(jù)結(jié)構(gòu)--線性表_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2021-7-21 2021-7-22 a1a3a4ana2 2021-7-23 2021-7-24 2021-7-25 2021-7-26 a1 ai-1 ai an 空閑空閑 d Loc(ai) 0 i-2 i-1 n-1 MaxSize-1 Loc(a1) Loc(ai)=Loc(a1) + (i - -1)d 隨機(jī)存取隨機(jī)存?。涸谠贠(1)時間內(nèi)存取數(shù)據(jù)元素時間內(nèi)存取數(shù)據(jù)元素 2021-7-27 2021-7-28 2021-7-29 2021-7-210 2021-7-211 o順序存儲出現(xiàn)的問題:線性表的順序存儲結(jié) 構(gòu)的特點(diǎn)是邏輯關(guān)系上相鄰的兩個元素在物 理位置上也相鄰,因此可以快

2、速地存取表中 各元素。然而,在做插入或刪除元素的操作 時,會引起大量的數(shù)據(jù)元素移動;對于長度 變化較大的線性表,要一次性地分配足夠的 存儲空間,但這些空間常常又得不到充分的 利用;線性表的容量難以擴(kuò)充。 2021-7-212 o鏈?zhǔn)酱鎯Y(jié)構(gòu)的提出:為解決順序表所遇到 的困難,提出線性表鏈?zhǔn)酱鎯Y(jié)構(gòu),它不要 求邏輯上相鄰的元素在物理位置上也相鄰。 o鏈?zhǔn)酱鎯Y(jié)構(gòu):是指用一組任意的存儲單元 (可以連續(xù),也可以不連續(xù))存儲線性表中 的數(shù)據(jù)元素。用鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲的線性表 稱為鏈表。根據(jù)鏈表結(jié)點(diǎn)的不同結(jié)構(gòu),鏈表 分為單鏈表、循環(huán)鏈表和雙鏈表。 2021-7-213 data next 單鏈表的結(jié)點(diǎn)結(jié)構(gòu)

3、:單鏈表的結(jié)點(diǎn)結(jié)構(gòu): 數(shù)據(jù)域數(shù)據(jù)域指針域指針域 typedef struct LNode /*單鏈表的存儲結(jié)構(gòu)單鏈表的存儲結(jié)構(gòu)*/ DataType data; /*數(shù)據(jù)域數(shù)據(jù)域*/ struct LNode * next; /*指針域指針域*/ LNode,* LinkList; 2021-7-214 上圖所示為線性表(Sun,Mon,Tue,Wed,Thu, Fri,Sat)的線性鏈?zhǔn)酱鎯Y(jié)構(gòu)。這種鏈表有一個頭 指針(H),如果線性表非空,H指向鏈表中第一個結(jié) 點(diǎn),否則它為空指針(即不指向任何結(jié)點(diǎn)的指針,通 常用NULL或表示)。由于最后一個結(jié)點(diǎn)設(shè)有直接后 繼,所以它的指針域為空。 202

4、1-7-215 2021-7-216 2021-7-217 o按序號查找 o算法描述:設(shè)帶頭結(jié)點(diǎn)的單鏈表的頭指針為L,要查 找表中第i個結(jié)點(diǎn),則需從單鏈表的頭指針L出發(fā),從 頭結(jié)點(diǎn)開始,順著鏈域掃描。用指針p指向當(dāng)前掃描 到的結(jié)點(diǎn),初值指向第一個結(jié)點(diǎn)(p=L-next)。用j 做計數(shù)器,累計當(dāng)前掃描過的結(jié)點(diǎn)數(shù)(初值為1), 當(dāng)j=i時,指針p所指的結(jié)點(diǎn)就是要找的第i個結(jié)點(diǎn)。 2021-7-218 o按值查找 o算法描述:按值查找是指在單鏈表中查找是否有結(jié) 點(diǎn)值等于e的結(jié)點(diǎn),若有,則返回首次找到的其值 為e的結(jié)點(diǎn)的地址,否則返回NULL。查找過程從單 鏈表的頭指針指向的頭結(jié)點(diǎn)出發(fā),順著鏈逐個將結(jié)

5、 點(diǎn)的值和給定值e比較。 2021-7-219 o結(jié)點(diǎn)插入到鏈表的第一個結(jié)點(diǎn)前 o算法描述:逆位序輸入n個元素的值,建立帶頭結(jié) 點(diǎn)的單鏈表。該方法從一個空表開始,逐個讀入數(shù) 據(jù),生成新結(jié)點(diǎn),將讀入數(shù)據(jù)存放到新結(jié)點(diǎn)的數(shù)據(jù) 域中,然后將新結(jié)點(diǎn)插入到當(dāng)前鏈表的表頭上。 2021-7-220 o結(jié)點(diǎn)插入到兩個結(jié)點(diǎn)之間 o算法描述:正位序輸入n個元素的值,建立含有幾 個元素的帶頭結(jié)點(diǎn)的單鏈表。頭插法建立鏈表的算 法雖然簡單,但生成的鏈表中結(jié)點(diǎn)的次序和輸入的 順序相反。若希望二者次序一致,可采用尾插法建 表。該方法是將新結(jié)點(diǎn)插入到當(dāng)前鏈表的表尾上, 為此必須增加一個尾指針r,使其始終指向當(dāng)前鏈 表的尾結(jié)點(diǎn)

6、。 2021-7-221 o結(jié)點(diǎn)插入到鏈表的最后一個結(jié)點(diǎn)后 o算法描述:在線性表兩個數(shù)據(jù)元素值分別為a和b的 結(jié)點(diǎn)間插入值為x的結(jié)點(diǎn),已知p指向a。 2021-7-222 o單鏈表的刪除操作 o算法描述:單鏈表中刪除b,設(shè)p指向a。 2021-7-223 2021-7-224 循環(huán)單鏈表與單鏈表的結(jié)點(diǎn)類型完全相同,循環(huán) 單鏈表的運(yùn)算和單鏈表基本一樣,差別僅在于: 當(dāng)需要從頭到尾掃描整個鏈表時,是否到表尾的 條件不同。在單鏈表L中判斷某結(jié)點(diǎn)鏈域值是否 為“空”,在循環(huán)鏈表中則判斷某結(jié)點(diǎn)P的鏈域 值是否等于頭指針。 struct CNode /*循環(huán)鏈表的存儲結(jié)構(gòu)*/ int data; struct CNode* next; C

溫馨提示

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

最新文檔

評論

0/150

提交評論