線性表 棧與佇列

2022-04-08 17:53:13 字數 960 閱讀 3457

《大話資料結構》

用一段位址連續的儲存單元依次儲存線性表的資料元素。

可以用c預言的一維陣列來實現順序儲存結構。

順序儲存的三個屬性:起始位置,最大儲存容量,當前長度。

位址計算方法,隨機訪問結構

順序儲存中的操作:

(1)讀取,直接取出第i個值即可

(2)插入,插入位置不合理或者本身的長度已經大於等於陣列長度則丟擲異常,其餘情況,向後移動一部分資料將新資料插入第i個位置。

刪除元素:如果刪除位置不合理,丟擲異常;取出刪除元素,從刪除位置開始遍歷到最後乙個位置,分別將它們都向前移動乙個位置。表長減一。

對於順序儲存結構,存讀資料時,時間複雜度都是o(1),而插入和刪除時,時間複雜度是o(n)(是平均複雜度(n-1)/2化簡得到)。

順序儲存的優點:無需為表示表中元素之間的邏輯關係而增加額外的儲存空間,可以快速的訪問表中任意位置的元素。

缺點:插入和刪除操作需要移動大量元素,當線性表長度變化較大時,難以確定儲存空間的容量。造成儲存空間的碎片。

儲存資料元素資訊的域成為資料域,儲存直接後繼位置的域成為指標域,指標域中的資訊成為指標或者鏈。這兩部分的資訊元素的儲存映像成為結點(node)。

n個結點鏈結成乙個鍊錶,即為線性表就的鏈式儲存結構。此鍊錶的每個結點只包含乙個指標域,所以叫單鏈表。單鏈表通過每個結點的指標域將線性表的資料元素按其邏輯次序鏈結在一起。

鍊錶中第乙個結點的儲存位置叫頭指標,最後乙個結點指標為「空」(null)。

頭結點與頭指標。

頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字,無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。

頭結點是為了操作的同意和方便而設立的,放在第一元素的結點之前,其資料域一般無意義(也可存放鍊錶的長度),有了頭結點,對在第一元素結點前插入結點和刪除第一結點,其操作與其他結點的操作就統一了。頭結點不一定是鍊錶的必要因素。

線性表 棧 佇列

輔助定義 define maxsize 5 define ok 0 define error 1 typedef int selemtype typedef int status 棧 順序 鏈式 相關結構體定義 順序棧 typedef struct sqstack 順序棧共享空間 typedef s...

線性表 棧,佇列

1.3 棧 棧是一種先進後出的資料結構。只能在一端進行插入和刪除操作的特殊線性表。將資料進入棧稱為壓棧,資料出去稱為彈棧。壓棧 public void push t t 彈棧 public t pop 讓首結點指向第乙個結點的下乙個結點 head.next oldfirst.next 元素個數 1 ...

線性表 棧和佇列

線性表是n個元素的有限序列。表示方法有兩種,一種是順序表示,一種是鏈式表示。順序表示即採用一組位址連續的儲存單元依次儲存線性表的資料元素,通常採用陣列來實現 鏈式表示是用一組任意的儲存單元儲存線性表的資料元素,每一結點包含兩個域 資料域和指標域,資料域儲存資料,指標域儲存後繼儲存位址資訊,實現為 i...