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...