




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
鏈表線性鏈表雙向鏈表鏈式棧鏈式隊列數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第1頁。5鏈表--線性鏈表順序存儲方式結構簡單,可以根據(jù)下標隨機存取數(shù)據(jù),但是也有缺點:插入或刪除操作時需要移動大量元素,效率低;對于長度可變的線性表,要預先分配足夠的空間。
鏈式存儲:用一組任意的存儲單元存儲線性表中的數(shù)據(jù)元素。用這種方法存儲的線性表簡稱線性鏈表。1.線性鏈表存儲鏈表中結點的一組任意的存儲單元可以是連續(xù)的,也可以是不連續(xù)的,甚至是零散分布在內存中的任意位置上的。
鏈表中結點的邏輯順序和物理順序不一定相同。數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第2頁。結點元素:值與指針。存儲指示其直接后繼結點的地址(或位置),稱為指針(pointer)或鏈(link),如下圖所示。鏈表是通過每個結點的指針域將線性表的n個結點按其邏輯次序鏈接在一起的。每一個結只包含一個指針域的鏈表,稱為單鏈表。為操作方便,總是在鏈表的第一個結點之前附設一個頭結點(頭指針)head指向第一個結點。頭結點的數(shù)據(jù)域可以不存儲任何信息(或鏈表長度等信息)。datanext圖
鏈表結點結構data:數(shù)據(jù)域,存放結點的值。next:指針域,存放結點的直接后繼的地址。5鏈表--線性鏈表數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第3頁。
headfat1100bat1300…………cat1305eat3700hatNULL…………1100370013001305batcateatfat
hat?head
圖
帶頭結點的單鏈表的邏輯狀態(tài)、物理存儲方式單鏈表是由表頭唯一確定,因此單鏈表可以用頭指針的名字來命名。例1、線性表L=(bat,cat,eat,fat,hat)其帶頭結點的單鏈表的邏輯狀態(tài)和物理存儲方式如圖所示。5鏈表--線性鏈表36953695數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第4頁。結點的描述與實現(xiàn)
C語言中用帶指針的結構體類型來描述typedefstructLnode{ElemTypedata;/*數(shù)據(jù)域,保存結點的值*/structLnode*next;/*指針域*/}LNode;/*結點的類型*/結點的實現(xiàn)
結點是通過動態(tài)分配和釋放來的實現(xiàn),即需要時分配,不需要時釋放。實現(xiàn)時是分別使用C語言提供的標準函數(shù):malloc(),realloc(),sizeof(),free()。5鏈表--線性鏈表數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第5頁。常見的指針操作①
q=p;pa……操作前pa……q操作后②
q=p->next;bpa……操作前操作后qbpa……③
p=p->next;bpa……操作前操作后pba……數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第6頁。常見的指針操作④
q->next=p;c…pbqa……操作前操作后qb……ac…p(a)操作前ypx……bqa…操作后ypx……bqa…(b)數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第7頁。⑤
q->next=p->next;(a)xy…pbqa……操作前操作后qb……axy…p操作前ypx……bqa…操作后ypx……bqa…(b)數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第8頁。線性鏈表的基本運算:查找、插入、刪除(1)單鏈表的查找按值查找是在鏈表中,查找是否有結點值等于給定值key的結點?若有,則返回首次找到的值為key的結點的存儲位置;否則返回NULL。查找時從開始結點出發(fā),沿鏈表逐個將結點的值和給定值key作比較。5鏈表--線性鏈表的基本操作數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第9頁。(2)單鏈表的插入
插入運算是將值為e的新結點插入到表的第i個結點的位置上,即插入到ai-1與ai之間。因此,必須首先找到ai-1所在的結點p,然后生成一個數(shù)據(jù)域為e的新結點q,q結點作為p的直接后繼結點。具體操作語句:q->next=p->next;p->next=q;5鏈表--線性鏈表的基本操作ai-1nextainextenextpqai-1nextainextenextpq插入前插入后×數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第10頁。(3)單鏈表的刪除為了刪除第i個結點ai,必須找到結點的存儲地址。該存儲地址是在其直接前趨結點ai-1的next域中,因此,必須首先找到ai-1的存儲位置p,然后令p–>next指向ai的直接后繼結點,即把ai從鏈上摘下。最后釋放結點ai的空間,將其歸還給“存儲池”。具體操作:p->next=(p->next)->next5鏈表--線性鏈表的基本操作ai-1nextainextai+1nextpai-1nextainextai+1nextp××操作前操作后數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第11頁。5.5鏈表--循環(huán)鏈表2.循環(huán)鏈表(CircularLinkedList):是一種頭尾相接的鏈表。其特點是最后一個結點的指針域指向鏈表的頭結點,整個鏈表的指針域鏈接成一個環(huán)。從循環(huán)鏈表的任意一個結點出發(fā)都可以找到鏈表中的其它結點,使得表處理更加方便靈活。下圖是帶頭結點的單循環(huán)鏈表的示意圖??毡?/p>
單循環(huán)鏈表示意圖非空表a1
a2
……anhead
head
數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第12頁。循環(huán)鏈表的操作對于單循環(huán)鏈表,除鏈表的合并外,其它的操作和單線性鏈表基本上一致,僅僅需要在單線性鏈表操作算法基礎上作以下簡單修改:⑴判斷是否是空鏈表:head->next==head;⑵判斷是否是表尾結點:p->next==head;5鏈表--循環(huán)鏈表數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第13頁。
雙向鏈表(DoubleLinkedList):指的是構成鏈表的每個結點中設立兩個指針域:一個指向其直接前趨的指針域prior,一個指向其直接后繼的指針域next。這樣形成的鏈表中有兩個方向不同的鏈,故稱為雙向鏈表。和單鏈表類似,雙向鏈表一般增加頭指針也能使雙鏈表上的某些運算變得方便。
將頭結點和尾結點鏈接起來也能構成循環(huán)鏈表,并稱之為雙向循環(huán)鏈表。雙向鏈表是為了克服單鏈表的單向性的缺陷而引入的。5鏈表--雙向鏈表數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第14頁。datanextprior
雙向鏈表結點形式……非空雙向鏈表head?a2a1an?空雙向鏈表head??帶頭結點的雙向鏈表形式5鏈表--雙向鏈表數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第15頁。3.鏈式棧棧的鏈式存儲結構稱為鏈式棧,是運算受限的單鏈表。其插入和刪除操作只能在表頭位置上進行。因此,鏈棧沒有必要像單鏈表那樣附加頭結點,棧頂指針top就是鏈表的頭指針。右圖是棧的鏈式存儲表示形式??諚op?非空棧top
a4
a3
a1?
a2鏈棧存儲形式5鏈表--鏈式棧(選講)數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第16頁。4.隊列的鏈式存儲表示隊列的鏈式存儲結構簡稱為鏈隊列,它是限制僅在表頭進行刪除操作和表尾進行插入操作的單鏈表。需要兩類不同的結點:數(shù)據(jù)元素結點,隊列的隊首指針和隊尾指針的結點,如圖所示。數(shù)據(jù)元素結點data指針結點front
rear鏈隊列結點示意圖5鏈表--鏈式隊列(選講)數(shù)據(jù)結構與算法:鏈表全文共18頁,當前為第17頁。鏈隊的操作實際上是單鏈表的操作,只不過是刪除在表頭進行,插入在表尾進行。插入、刪除時分別修改不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 長治市重點中學2025屆初三下期末考試(一模)物理試題試卷含解析
- 江蘇省泰興市黃橋達標名校2025屆初三畢業(yè)班摸底調研考試語文試題含解析
- 版?zhèn)€人綜合消費信用合同
- 吉林省延邊朝鮮族自治州2024-2025學年五年級數(shù)學第二學期期末學業(yè)水平測試模擬試題含答案
- 沈陽農業(yè)大學《舞蹈專業(yè)教學法(1)》2023-2024學年第二學期期末試卷
- 四川省西昌市航天校2025年初三下學期第二次月考-數(shù)學試題試卷含解析
- 山東省鄒平市一中學2025年高考模擬考試英語試題試卷含解析
- 山西省永濟市2025年初三化學試題下學期開學考試試題含解析
- 西南交通大學希望學院《臨床醫(yī)學遺傳學》2023-2024學年第二學期期末試卷
- 漯河醫(yī)學高等??茖W?!冻鞘性O計概論》2023-2024學年第二學期期末試卷
- 2024年離婚不離家互不干涉的婚姻協(xié)議書范文
- 對我國地方檔案立法原則的探討
- 新209道100以內四個數(shù)字的加減法混合題目
- 山東省煙臺市2024-2025學年高二地理下學期期末考試試題
- 偉大的改革開放+教案 高中政治統(tǒng)編版必修一中國特色社會主義
- 【詞匯】近五年高考英語超綱詞+音標+詞義
- JGJ64-2017飲食建筑設計標準(首發(fā))
- 《成人四肢血壓測量的中國專家共識(2021)》解讀
- 杜甫人物介紹課件
- 第13課《賣油翁》教學課件2023-2024學年統(tǒng)編版語文七年級下冊
- 膿毒血癥疑難病例討論護理
評論
0/150
提交評論