1.1 線性表的定義
乙個線性表是n(n>=0)個元素的有限序列,通常表示為(a1,a2,a3…,an)。非空線性表的特點如下:
1)存在唯一的表頭和表尾
2)除第乙個元素外,序列中的每個元素均只有乙個直接前驅。
3)除最後乙個元素外,序列中的每個元素均只有乙個直接後驅。
1.2 線性表的儲存結構
線性表的儲存結構分為順序儲存和鏈式儲存
1)順序儲存
用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰,在這種儲存方式下,元素的邏輯關係無需占用額外的空間來儲存。
以loc(ai)表示線性表中第乙個元素的儲存位置,在順序儲存結構中,第i個元素ai對儲存位置為:
loc(ai)=loc(a1)+(i-1)*l
l是表中每個資料元素所佔空間的位元組數
優點:可以隨機儲存表中的元素
缺點:插入和刪除的操作需要移動元素
舉例說明:體育課排隊,按個字從高到矮從左到右排隊,這時候突然遲到的中等個子小王同學來了,老師讓他進入佇列,那麼就要從比他高一點點的小李同學後面呼出乙個空位讓小王插入,而比小王矮的同學因為小王的插入都需要往右移動一位。
2)鏈式儲存
用節點來儲存資料
資料域用於儲存資料元素的值,指標域則儲存當前元素的直接前驅或者直接後繼的位置資訊,指標域中的資訊稱為指標or鏈
儲存各資料元素的結點的位址並不要求是連續的,因此儲存資料元素的同時必須儲存元素之間的邏輯關係
優點:插入和刪除操作無需移動元素,操作方便
缺點:增加了儲存空間的開銷,不能隨機訪問
舉例說明:帶一幫小朋友去看電影,但是電影院沒有連續的座位了,這個時候怎麼安排呢?有一種方式就是小明同學先坐下(1排1座),然後讓他記住小紅同學的座位(3排5座),再讓小紅同學記下小芳同學的座位(7排4座)……依次,即使中間來了乙個小風同學,也可以讓小郭同學記下小風的座位號,然後讓小風去記下小郭同學本來記的那位同學的座位號,這個可以理解為鏈式儲存
3)其它鍊錶結構
1.3 棧和佇列
1)棧的定義
棧是只能通過訪問它的一端來實現資料儲存和檢索的一種線性資料結構,按照先進後出的原則進行。在棧中進行插入和刪除操作的一端稱為棧頂(top),相應地,另一端稱為棧底(bottom)。
順序儲存:用一組位址連續的儲存單元依次儲存自棧頂到棧底的資料元素,同時附設指標top指示棧頂元素的位置。在順序棧中,需要判斷是否棧滿(棧空間中沒有空閒單元),否則如果棧滿,元素入棧會發生上溢現象。
鏈式儲存:棧中元素的插入和刪除僅在棧頂一段進行,因此不必另外設定頭指標,鍊錶的頭指標就是棧頂指標
舉例說明:平時洗碗洗碟子的時候,洗完的碟子總是從下往上堆起來,如果下次要用到這堆碟子,肯定是從最上方的碟子拿起,而這個最上方的碟子,就是上一次洗碗的時候最後洗完的那乙隻碟子。這就是先進後出原則。
2)佇列
佇列是一種先進先出(first in first out,fifo)的線性表,它只允許在表的一段插入元素,而在表的另一端刪除元素。在佇列中,允許插入元素的一段稱為隊尾(rear),允許刪除元素的一端稱為隊頭(front)
佇列的順序儲存:順序佇列,它是利用一組位址連續的儲存單元存放佇列中的元素。由於佇列中元素的插入和刪除限定在表的兩段進行,因此設定隊頭和隊尾指標,分別指出當前的隊首和隊尾
佇列的鏈式儲存:鏈佇列,給鏈佇列新增乙個頭結點,並令頭指標指向頭結點。因此,隊列為空的判斷條件是頭指標和尾指標的值相同,且均指向頭結點。
舉例說明:我們在排隊買票的時候,插入的人是在隊伍最後排插入,而買完票的人會從隊伍最前排離開,這就是先進先出。如果隊伍中沒人,那麼頭指標和尾指標的值是相同的,而且都指向賣票口,這就是隊列為空
1.4 串
1)串的定義
串是僅由字元構成的有限序列,是取值範圍受限的線性表。
s=』a1a2…an』
其中s是串名,單引號括起來的字串行是串值
2)串的幾個基本概念
軟體設計師 資料結構
資料結構是指資料元素的集合及元素間的相互關係和構造方法。元素之間相互關係是資料的邏輯結構,資料元素及元素之間關係的儲存稱為儲存結構。資料結構是演算法設計的基礎,設計合理的資料結構可使演算法簡單高效。資料結構按邏輯關係分為線性結構和非線性結構。非線性結構又可分為樹結構和圖結構。一 線性結構 線性結構的...
軟體設計師考試 第三章 資料結構 線性結構
二 棧和佇列 2 棧的儲存結構 2.佇列 2 佇列的儲存結構 3 佇列的應用 三 串 2.串的儲存結構 3.串的模式匹配 線性結構是一種基本的資料結構,主要用於對客觀世界中具有單一前驅和後繼的資料關係進行描述。特點是資料元素間呈現一種線性關係,即元素 乙個接乙個排列 常採用順序儲存和鏈式儲存。乙個線...
複習 軟體設計師之資料結構與演算法基礎
1.常用資料結構 陣列 靜態陣列,動態陣列 線性表鍊錶 單向鍊錶,雙向鍊錶,迴圈鍊錶 佇列棧樹 二叉樹,查詢樹,平衡樹,線索樹,堆 圖hash 儲存位址計算,衝突處理 2.常用演算法 i 排序演算法,查詢演算法,數值計算法,字串處理方法,資料壓縮演算法,遞迴演算法,圖的相演算法 ii 演算法與資料結...