資料結構中的線性表(線性資料)

2021-08-19 20:06:25 字數 2009 閱讀 9762

看了大話資料結構的線性表這一章,我同事在旁邊弱弱的說了一句「這麼基礎的東西啊,看它幹嘛。。。」

好吧承認我很弱。。。所以我要溫故而知新。

大話資料結構其實很不錯,將的非常的詳細,及時對於這方面的知識你已經了解了,也不防看看。(至於原因嗎,你打遊戲也很無聊,不如看看有助於睡眠,而且睡覺前的記憶力很猛的,睡著後大腦活動率降低,你學習的知識不容易被覆蓋,個人推測。。)

1。線性表的定義

線性表(lsit):零個或多個資料元素的有限序列

首先它是乙個序列,也就是說,元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最以後乙個元素無後繼,其他每個元素都有且乙個前驅和後繼。

2。線性表的順序儲存結構

線性表的順序儲存結構,指的是用一段位址連續的 儲存單元依次儲存線性表的資料元素。

說白了就是在記憶體中找了一塊地方,通過佔位的形式,吧一定記憶體空間給佔了。然後把相同資料型別的元素依次存放在這個空地中。

如果我就佔了5個地方,去了4個人 。這樣剩餘了乙個空位。

如果我佔了5個地方,去了6個人。這就裝不下了。

所以順序儲存結構需要的三個屬性:

(1)儲存空間的起始位置:陣列data 他的儲存位置就是儲存空間的儲存位置。

(2)線性表的最大儲存容量: 陣列長度 maxsize

(3)線性表的當前長度: length

優點

無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。

可以快速的訪問表中的任一位置的元素

缺點

插入和刪除操作需要移動大量的元素

當線性表長度變化較大時,難以確定儲存空間的容量。

造成儲存空間的「碎片」

3。線性表的鏈式儲存結構

順序儲存結構缺點是插入刪除需要移動大量的元素,這顯然非常耗時,所以鏈式儲存就出現並解決這一難題。

線性表的鏈式儲存結構的特點是用一組任意任意的儲存單元儲存線性表的資料元素。這租儲存單元可以是連續的,也可以是不連續的。這就意味著,這些資料元素可以存在記憶體未被占用的任意位置。

以前的順序結構中,每個元素只需要儲存資料元素資訊可以了,現在鏈式結構中,除了要儲存資料元素資訊外,還要儲存它的後繼元素的儲存位址。

單鏈表結構 與 順序儲存結構優缺點

1.若線性包需要頻繁的查詢,很少進行插入和刪除操作時,宜採用順序儲存結構

若需要頻繁的插入和刪除,宜採用單鏈表結構。

2.當線性表中的元素個數變化較大或根本就不知道有多大時,最好用單鏈表結構,這樣可以不需要考慮儲存空間大小的問題。而如果事先知道線性表的大致長度,這種用順序儲存結構效率會高很多。

4。迴圈鍊錶

迴圈表與單鏈表的差別在於迴圈的判斷條件上。迴圈表把最後乙個元素的指標放到了第乙個元素裡。

合併兩個迴圈表,a b ,a表的最後元素指定針指向b表單的第乙個元素,b表的最後乙個元素的指標指向a表的第乙個元素上。

5。雙向鍊錶

是在單鏈表的每個節點中,在設定乙個指向前驅的指標域。所以在雙向鍊錶中的節點都有兩個指標域,乙個指向直接後續,乙個指向直接前驅。

插入操作是個比較容易弄混的地方。a元素 c元素 將b元素插入到他們中間

先將a元素賦值給 b的前驅。

再將c元素賦值給b的後繼。

在將b元素賦值個c的前驅。

在將b元素賦值給a的後繼。

刪除簡單了 刪除b元素

將a元素賦值給c元素的前驅。

將c元素賦值給a元素的後繼。

線性表     

順序儲存結構

鏈式儲存結構: 單鏈表 靜態鍊錶 迴圈鍊錶 雙向鍊錶

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...

資料結構 線性表

線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...