資料結構1 線性結構

2021-08-15 11:47:17 字數 1472 閱讀 7783

資料結構是指資料元素的結合及元素間的相互關係和構造方法。元素之間的相互關係是資料的邏輯結構,元素關係的儲存形式成為儲存結構。資料結構按照邏輯關係的不同分為線性結構和非線性結構兩大類。其中線性結構是最基本的結構,元素順序排列,常見的有線性表、棧、佇列、陣列、串。

一、線性表

1.線性表是最簡單也是最常用的一種線性結構。乙個線性表示n(n>=0)個元素的有限序列,非空線性表的特點為:

存在唯一的乙個「第乙個」元素;

存在唯一的乙個「最後乙個」元素;

除第乙個元素外,序列中的每個元素均只有乙個直接前驅;

除最後乙個元素外,序列中的每個元素均只有乙個直接後驅;

2.關於線性表的儲存結構,有順序儲存和鏈式儲存兩種方式。順序儲存是用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。鏈式儲存則使用結點來儲存資料元素,結點分為資料域和指標域,資料域用於儲存元素的值,指標域則儲存元素的直接前驅或直接後驅的位址,結點之間通過指標域構成乙個鍊錶。若結點中只有乙個指標域,則稱為單鏈表。

順序儲存結構無須占用額外的空間來表示元素之間的邏輯關係,而且可以隨機訪問表中的元素,但插入、刪除資料的操作比較麻煩,需要順次移動很多元素;鍊錶中各資料元素的結點位址則不要求是連續的,因此必須同時儲存元素之間的邏輯關係,鍊錶的插入、刪除操作都比較方便,只需修改指標域的指向即可。

3.根據結點中指標域的設定方式,還有其他幾種鍊錶結構:

雙向鍊錶:每個階段包含兩個指標,分別指向直接前驅和直接後驅,這樣可以從表中任意的結點出發,從兩個方向遍歷鍊錶。

迴圈鍊錶,在單向鍊錶或雙向鍊錶的基礎上,令表尾結點的指標指向第乙個元素,這樣就可以從任意結點開始遍歷整個鍊錶了。

二、棧和佇列

棧和佇列的邏輯結構和線性表相同,但對其的運算有所限制。

1.棧

棧只能通過訪問它的一端來實現資料的儲存和檢索,即對棧的操作時按照先進後出的原則進行的(last in first out, lifo),這一端稱為棧頂,則另一端為棧底。不含任何元素的棧稱為空棧。

棧的儲存結構也分順序和鏈式,順序儲存是用一組位址連續的儲存單元依次儲存自棧頂到棧底的資料元素,同時用指標top來指示棧頂元素的位置,這種結構的棧也成為順序棧。使用這種儲存方式需要預先定義棧的儲存空間,棧的空間有限,所以元素入棧前,需要判斷棧是否已滿,否則會發生溢位。

鏈式儲存的棧(鏈棧)沒有溢位的問題,鏈棧也無須另外設定top指標

棧在表示式求值、計算機語言的實現、將遞迴過程轉變為非遞迴過程的處理中有重要作用。

2.佇列

佇列則是一種先進先出(first in first out, fifo)的線性表,但只能在佇列的隊尾(rear)插入元素,然後在隊頭(front)刪除元素。

與順序棧類似,順序佇列採用順序儲存結構,並需要設定隊頭指標和隊尾指標。

鏈佇列則為了便於操作,會新增乙個頭結點,並令頭指標指向頭結點,因此如果頭指標和尾指標的值相同,則可判定隊列為空。

佇列常用於處理需要排隊的場合,如列印佇列、訊息佇列等。

資料結構1 線性結構

資料結構是指資料元素的結合及元素間的相互關係和構造方法。元素之間的相互關係是資料的邏輯結構,元素關係的儲存形式成為儲存結構。資料結構按照邏輯關係的不同分為線性結構和非線性結構兩大類。其中線性結構是最基本的結構,元素順序排列,常見的有線性表 棧 佇列 陣列 串。一 線性表 1.線性表是最簡單也是最常用...

資料結構 線性結構

typedef int position typedef struct lnode list struct lnode 初始化 list makeempty 查詢 define error 1 position find list l,elementtype x 插入 bool insert lis...

資料結構 線性結構

線性表基本操作有 1 list makeempty 初始化乙個新的線性表 2 elementtype findkth list l,int i 根據指定的位序i,返回l中相應元素ai i是下標 3 position find list l,elementtype x 已知x,返回線性表l中與x相同的...