資料結構C 版 線性表

2022-05-12 00:59:32 字數 1820 閱讀 9293

一、什麼是線性表

線性表是n個資料元素的有限序列。

分類:

二、補充知識點

1、棧和佇列有出操作、入操作,對應線性表(陣列)為插入元素和刪除元素,而線性表中要獲取指定元素值可直接使用getelem()函式,獲取後並不刪除元素,可重複獲取。

【與只能使用一次的棧、佇列有區別】

2、順序表:遍歷和定址非常快,插入、刪除效率低。

3、靜態鍊錶基於陣列,動態鍊錶基於結構體,所以線性表中的鍊錶也有順序儲存結構

4、《鍊錶編碼實戰一》課程筆記:

單鏈表中第乙個節點的資料域是沒有意義的!!!因為這是乙個哨兵節點,沒有別的指標指向這個頭節點的資料域。並且頭節點並不算在鍊錶的長度當中!

5、《鍊錶編碼實戰一》課程筆記:

初始化的過程是建立頭結點,而且與順序表不同的是,鍊錶的表長size是不需要預先定義的,因為他可以從堆中臨時申請,這點與順序表有很大的不同。

按通用的做法,指向頭結點的指標(即頭指標)是固定的,頭結點是不固定的,頭結點不放元素,只放鍊錶第乙個結點的位址。

如果新插入或者刪除的元素不是鍊錶的第乙個帶元素的結點,或者這個位置的結點,頭結點就是固定的。

如果新插入乙個結點到頭結點的下乙個結點,或者刪除頭結點的下乙個結點,頭結點中存放的指標就變了,頭結點也就變了。

6、《鍊錶編碼實戰三》課程筆記:

哨兵節點(sentinel)是乙個啞元節點(dummy node),可以簡化邊界條件。是乙個附加的鍊錶節點,該節點作為第乙個節點,它的值域中並不儲存任何東西,

只是為了操作的方便而引入的。如果乙個鍊錶有哨兵節點的話,那麼線性表的第乙個元素應該是鍊錶的第二個節點。

7、《鍊錶編碼實戰四》課程筆記:

單鏈表是有表頭結點的,表頭結點並不儲存資料,只是乙個牽頭作用,方便我們通過它來尋找到鍊錶的其他所有元素。

因此單鏈表的元素個數也不把它包括在內,第0個結點就是表頭結點的下乙個結點。

三、應用例項-通訊錄

#include #include 

#include

#include

"list.h

"#include

"nodelist.h

"using

namespace

std;

intmenu();

void newperson(nodelist *p);

void deleteperson(nodelist *p);

void

main ( )

}

system(

"pause");

} int

menu()

void newperson(nodelist *p)

void deleteperson(nodelist *p)

node t;

p->listdelete(temp,&t);

cout

<

成功刪除聯絡人

"<

}

資料結構(C語言版) 線性表

1 線性結構的特點 1 存在唯一乙個被稱作 第乙個 的資料元素。2 存在唯一乙個被稱作 最後乙個 的資料元素。3 除第乙個元素之外,每個資料元素均只有乙個前驅。4 除最後乙個元素之外,每個資料元素均只有乙個後繼。2 線性表 n個資料元素的有限序列,是一種邏輯結構。1 同一線性表中的元素具有相同的性質...

資料結構線性表c

time limit 1000ms memory limit 65536k 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。第一行輸入整數個數n 第二行輸入n個無序的整數。依次輸出有序鍊錶的結點值。6 33 6 22 9 44 5 5 6 9 22 33 44 ...

資料結構(線性表)

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