資料結構與演算法之線性結構

2021-10-03 01:46:57 字數 1144 閱讀 3760

線性表是由同一型別的資料元素構成的線性結構,特點是:資料元素間呈一種線性關係。線性表是具有相同資料型別的n個資料元素的有限序列,通常記為:

(a1,a2,a3,······,a(i-1),ai,a(i+1),······,an)

線性表(linear list)的分類:陣列、鍊錶、棧、佇列

沒錯我們熟知的陣列就是一種線性表資料結構,它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。由於陣列一般不作插入、刪除操作,也就是說,一旦建立了陣列,則結構的資料元素個數和元素之間的關係就不再變動。

因此,採用順序儲存結構表示陣列自然的事了。儲存單元是一維的結構,而陣列是多個維的結構,則用一組連續儲存單元存放陣列的資料元素就有個次序約定。

線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可連續也可不連續),因此為了表示每個元素與其後繼元素的邏輯關係,對資料元素來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊(即直接後繼的儲存位置)。

1、單鏈表:鍊錶每個資料元素的結點只包含乙個指標域。

2、 迴圈鍊錶:特點是表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。由此,從表任何乙個結點觸發均可找到表中其他結點:

是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧來說,表尾有特殊含義,成為棧頂,表頭端稱為棧底。不含元素表稱為空棧。

棧在我們的日常生活中也是很常見的,比如堆疊的碗總是先取後放進去的晚,這也能給我們帶來很多的啟示比如我們在編寫計算器程式時將中綴表示式轉化為字尾表示式,字尾表示式的求值就是棧的乙個很好的應用,當表示式裡出現括號時要注意其優先順序最高,只有遇到右括號時左括號才會出棧。

佇列是一種先進先出(first in first out)的線性表。它只允許在表的一端進行插入,而在另一端刪除元素。有時我們還會用他的公升級版迴圈佇列:在佇列的順序儲存結構中,除了儲存單元之外。還要附設兩個指標front和rear分別指示佇列頭元素及佇列尾元素的位置。

在迴圈佇列中僅憑q.front = q.rear無法判斷出佇列空間是「空」還是「滿」。可有兩種處理方法:其一,是另設乙個標誌位來區別佇列是「空」還是「滿」;其二,是少用乙個元素空間,約定以「佇列頭指標在佇列尾指標的下一位置上」作為佇列呈「滿」狀態的標誌。

資料結構與演算法(線性結構) 查詢演算法之線性查詢

本篇主要介紹查詢演算法中的線性查詢,由於我們之前一直用的陣列開篇,所以接下來也會用陣列來進行實現。線性查詢其實就是在陣列當中找到某乙個元素,其實說白了就是把陣列所有元素都對比一次找到自己需要的元素。線性查詢也叫順序查詢,這是最基本的一種查詢方法,從給定的值中進行 輪詢 搜尋,從一端開始逐一檢查每個元...

資料結構之線性結構

資料結構學習虛函式,幾個知識點 1 抽象類函式本身不能直接例項化,需要其子類例項化虛函式,才能例項化。繼承抽象類的子類必須重寫虛函式,具體函式可實現,也可不實現。2 const修飾符,若修飾函式,則函式引數不能被改變。若修飾成員變數,則成員變數在使用過程中不被改變。修飾傳入引數,則避免引數被改變。3...

資料結構 線性結構與非線性結構

線性結構是最常用的資料結構,其特點是資料元素之間存在著一對一的線性關係。線性結構有著兩種不同的儲存結構,順序儲存結構 陣列 和鏈式儲存結構 鍊錶。順序儲存的線性表稱為順序表,順序表中的儲存元素是連續的。鏈式儲存的線性表稱為鍊錶,鍊錶中的儲存元素不一定是連續的,並且鍊錶元素節點中存放著資料元素以及相鄰...