線性表是零個或多個資料元素的有限序列。
線性表的資料物件集合為。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係
線性表的順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。簡單的說,線性表的順序儲存結構就是在記憶體中找到一塊連續的空地,通過佔位的形式把記憶體空間給佔了,然後把相同資料型別的資料元素依次存放在這塊空地中。可以使用一維陣列來實現順序儲存結構,即把第乙個資料元素儲存到陣列下表為0的位置中,接著把線性表相鄰的元素儲存在陣列中相鄰的位置。在任意時刻,線性表的長度應該小於等於陣列的長度。
插入演算法的實現思路
如果插入位置不合理,丟擲錯誤
如果線性表長度大於等於陣列長度,則丟擲異常或動態增加容量
從最後乙個元素開始向前遍歷到第i個位置,分別將它們都向後移動乙個位置
將要插入元素填入位置i處
表長加1
刪除操作實現思路
如果刪除位置不合理,丟擲異常
取出刪除元素
從刪除位置開始遍歷到最後乙個元素位置,分別將它們都向前移動乙個位置
表長減1
優點:無需為表示表中元素之間的邏輯關係而增加額外的儲存空間
可以快速地訪問表中任意位置的元素 缺點
線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以是連續的,也可以是不連續的。這就意味著,這些資料元素可以存在記憶體未被占用的任意位置。以前在順序結構中,每個資料元素只需要存資料元素資訊就可以了。現在鏈式結構中,除了要儲存資料元素資訊外,還要儲存它的後繼元素的儲存位址。我們將儲存資料元素資訊的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱作指標或鏈。這兩部分組成了結點
n個結點鏈結成乙個鍊錶,即為線性表的鏈式儲存結構,因為此鍊錶的每個結點中只包含乙個指標域,所以叫單鏈表。單鏈表正是通過每個結點的指標域將線性表的資料元素按其邏輯次序鏈結在一起。
我們把鍊錶中第乙個節點的儲存位置叫做頭指標,那麼整個鍊錶的訪問就必須從頭指標開始進行了。之後的每乙個結點,其實就是上乙個的後繼指標指向的位置。最後乙個節點指標為『空』。
用陣列描述的鍊錶叫做靜態鍊錶。即讓陣列的元素都是有兩個資料域組成,data和cur。也就是說,陣列的每個下標都對應乙個data 和cur。資料域data,用來存放資料元素,也就是我們通常處理的資料;而游標cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標。
我們對陣列元素第乙個和最後乙個元素作為特殊元素處理,不存資料。我們通常把未被使用的陣列元素稱為備用鍊錶。而陣列第乙個元素,即下標為0的元素的cur就存放備用鍊錶的第乙個結點的下標;而陣列的最後乙個元素的cur則存放第乙個有數值元素的下標,相當於單鏈表中的頭結點作用,當整個鍊錶為空時,則為0.
假設我們已經將資料存入靜態鍊錶,比如分別存放著『甲』、『乙』、『丁』、『戊』、『己』、『庚』等資料,則它將處於如下圖所示的這種狀態。
此時『甲』這裡就存有下乙個元素『乙』的游標2,『乙』則存有下一元素『丁』的下標3,而『庚』是最後乙個有值元素,所以它的cur設定為0.而最後乙個元素的cur則因『甲』是第乙個有值元素而存有它的下標為1。而第乙個元素則因空閒空間的第乙個元素下標為7,所以它的cur存有7。
優點:
缺點將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。迴圈鍊錶解決了如何從當中乙個結點出發,訪問到鍊錶的全部結點。
迴圈鍊錶與單鏈表的主要差異就在於迴圈的判斷條件上,原來是判斷p->next是否為空,現在則是p->next不等於頭結點,則迴圈為結束
雙向鍊錶是在單鏈表的每個結點中,在設定乙個指向其前驅結點的指標域。所以在雙向鍊錶中的節點都有兩個指標域,乙個指向直接後繼,另乙個指向直接前驅。
棧是一種特殊的線性表,是限定僅在表尾進行插入和刪除操作的線性表。把允許插入和刪除的一端稱為棧頂,另一端稱為棧底。不含任何資料元素的棧稱為空戰。棧又稱為後進先出的線性表。棧的插入操作叫做進棧,也稱壓棧、入棧。棧的刪除操作叫做出棧,也有的叫做彈棧
佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的線性表,允許插入的一點稱為隊尾,允許刪除的一端稱為隊頭。
資料結構學習 線性表
線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...
資料結構學習 線性表
考試前複習下資料結構,把一些知識點整理在這!主要參考了殷人昆主編的 資料結構 用物件導向方法與c 語言描述 這本書,以及中山大學劉聰老師的課件內容!鍊錶雙鏈表 線性表 linear list 是由n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。維基百科 線性表是乙個...
資料結構學習 線性表
鏈式儲存用指標表示邏輯結構,可以很方便的表示各種邏輯結構。順序儲存結構中,插入和刪除結點需要大量的移動元素,效率很低。順序儲存結構既可以順序訪問也可以隨機訪問,而鏈式結構只可以順序訪問。對n個元素進行排序的時間複雜最快也要o n 初始有序 通常是o nlog2n 或o n 2 單鏈表只能順序查詢插入...