雙向迴圈鍊錶(為STL LIST 做準備)

2021-07-06 01:09:56 字數 1174 閱讀 6938

struct

list;

struct list;
鍊錶構建容易錯誤的地方在於插入和刪除。

插入:我們把n節點插入p節點之後。需要1.用n的next指標指向p的下乙個節點l。2用l的prev指標指向n。3.用n的prev指標指向p。

刪除:刪除時我們一般

1.建立乙個指標tmp指向所要刪除的p節點的下乙個節點。

2.將p的前乙個節點的next指向p的下乙個節點。將p孤立出來。

3.釋放p的空間並把tmp賦予p,以便刪除下面的節點。

//雙向迴圈鍊錶 

#include

<

new>

#include

template struct listnode;

template

class class_list

bool isempty ( )

bool islast ( position p )

position find ( t x )

void delete ( t x )//刪除乙個值所在的節點

void delete (position p)

position findprevious ( t x )

void insert ( t x , position p )//插入p節點之後

void insert( t x )

void deletelist ( )

delete l;

std::cout

<<

"delete"

<}

position header ( )

position fist ( )

void show()

position p;

for( p = l ; p->next != l ; p=p->next)

std::cout

data

<}

class_list()

class_list( t value[

], int length )

}~class_list ()

};

STL list 雙向鍊錶)

標準模板庫以list的方式向程式設計師提供了乙個雙向鍊錶。list可以有多種初始化方式 可用push front 和push back 在開頭和末尾插入元素 可用insert 在任意位置插入元素 可用erase 刪除list中的元素 可用reverse 反轉list中的元素 可用sort 對list...

STL list 雙向鍊錶 詳解

閒話 當你了解了stl中的一兩個容器之後,再去學習它另外的容器,就會發現它們的重合點非常多。如果你不想看這麼多字,那麼前兩段就可以略過了。list 容器視線裡雙向鍊錶的資料結構,資料元素通過鍊錶指標連城邏輯意義上的線性表,這樣,對鍊錶的任一位置的元素進行插入 刪除和查詢都會是極快的。下圖是list ...

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...