資料結構之單鏈表

2021-10-02 06:03:28 字數 1311 閱讀 8684

線性表包括順序表和煉錶兩部分

順序表:用一組位址連續的儲存單元一次儲存線性表的資料元素(陣列)

鍊錶:用一組任意的儲存單元儲存線性表的資料元素(儲存單元可以是連續的,也可以是不連續的),對於每個資料元素除了儲存本身資訊外(資料域),還需儲存指示其後繼的資訊(直接後繼的儲存位置)(指標域)稱為結點,每個結點包含乙個指標域,稱為線性鍊錶或單鏈表。

鍊錶的建立,分為兩種情況

第一種是整個鍊錶乙個結點都沒有,head頭指標為空,那麼我們建立乙個結點p,將頭指標指向結點p,這個鍊錶的頭節點就建立完成了,第二種情況,若增加的結點並非頭節點的話,我們只需要將指標q指向整個鍊錶的最後乙個幾點,將q的next指向新建立的結點,便可以建立出乙個任意長度的鍊錶了

鍊錶的刪除,分為三種情況

第一種情況若刪除的為頭節點,我們只需要將head頭指標指向next,將原來的頭結點刪除掉

第二種情況若刪除的並非頭節點,我們便需要找到要刪除位置的前乙個結點q,將q的next指向q的next的next,刪除需刪除的結點

第三種情況若刪除的結點為尾結點,我們需要找到倒數第二個結點q,刪除q的next結點便可以了

鍊錶的插入,分為兩種情況,新建乙個結點newp

第一種情況,若插入處為頭結點,需要將newp的next指向原來的頭節點,然後將head指向結點newp

第二種情況,插入處為非頭節點,我們需要找到要插入的位置的前乙個結點fq,將新建的結點np的next指向fq結點的next,然後將fq的next指向新結點newp

下面貼**

#includeusing namespace std;

class point;

int point::getdata()

void point::setdata(int data)

point *point::getnext()

void point::setnext(point *next)

class list;

list::list()

bool list::add(int data)else

}bool list::del(int posi)

//2.刪除結點為尾結點

if(posi == length)

}else

}bool list::insert(int posi, int data)else

}int list::find(int posi)

main(void)

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...

資料結構之單鏈表

鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...

資料結構之單鏈表

由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...