了解過線性表的鏈式儲存結構以後,有人就想出來用陣列來代替指標,來描述單鏈表。看看他們是怎麼做到的。
讓陣列的元素都由兩個資料域組成,data和cur。也就是說,陣列的每個下標都有對應的乙個data和cur。資料域data,用來存放資料元素,而cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標,我們把cur叫做游標。
這種用陣列描述的鍊錶叫做靜態鍊錶,我們把這種描述叫做游標實現法。
另外我們對陣列第乙個和最後乙個元素作為特殊元素處理,不存資料。我們通常把未使用的陣列元素稱為備用鍊錶。
陣列第乙個元素,即下標為0的元素的cur存放備用鍊錶的第乙個節點的下標;而陣列最後乙個元素的cur存放第乙個有數值的元素的下標,相當於單鏈表中的頭節點的作用。
如下圖:
我們對靜態鍊錶的插入和刪除操作簡單了解以下:
靜態鍊錶中要解決的是:如何用靜態模擬動態鍊錶的儲存空間的分配,需要時申請,無用時釋放。
靜態鍊錶的插入
靜態鍊錶的刪除
靜態鍊錶的優缺點對於單鏈表,由於每個結點只儲存了向後的指標,到了尾標就停止了向後鏈的操作,這樣,當某乙個結點就無法找到它的前驅結點了。
將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。
顯然解決了乙個問題:當從乙個結點出發,訪問鍊錶的所有結點。
雙向鍊錶:是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域。
雙向鍊錶的好處:某個結點對前後結點的操作更快;
雙向鍊錶的不足:乙個結點,兩個指標,耗記憶體更大。
既然單鏈表可以由迴圈鍊錶,那麼雙向鍊錶當然也可以是迴圈表,其結構如下:
雙向鍊錶的插入
雙向鍊錶的刪除
資料結構筆記 線性表
思考 怎麼程式設計解決多項式相加問題?1.線性表概念 由同型別資料元素構成的有序序列的線性結構 1.表中元素個數稱為線性表的長度 2.線性表中沒有元素時稱為空表 3.表的起始位置稱為表頭,結束位置稱為表尾。2.線性表的adt描述 3.線性表的順序儲存實現 未測試 include using name...
資料結構筆記 線性表
資料元素的資料型別。struct seqlist seqlist sl create int maxlen void sl free seqlist slist 釋放 刪除 順序表。與sqlst create 配對。void sl makeempty seqlist slist 置為空表。intsl...
資料結構 筆記 線性表
定義 由同型別資料元素構成有序序列的線性結構 型別名稱 list 物件集 n n 0 個元素構成的有序序列 操作集 list makeempty 初始化乙個空線性表l elementtype findkth int k,list l 根據位序k,返回相應元素 int find elementtype...