1、slist概述
slist並不在標準規格之內,sllist和list的主要差別在於,slist的迭代器屬於單向的forward iterator,而list的迭代器屬於雙向的bidirectional iterator。由於slist沒有任何方便的辦法可以回頭定出前乙個位置,必須從頭找起,所以對於slist除了起點外其他位置採用insert和erase操作都屬於不智之舉,這是slist相較於list的大缺點。為此,slist特別提供了insert_after()和erase_after()供靈活運用。同樣slist不提供push_back()只提供push_front(),因此slist的元素次序會和元素插入進來的次序相反。
2、slist的節點
slist節點和其迭代器的設計,架構上比list複雜許多,運用了繼承關係,因此在性別轉換上有複雜的表現。__slist_node繼承自__slist_node_base,__slist_iterator繼承自__slist_iterator_base。
;2、slist迭代器
};3、slist資料結構
初始化的slist就乙個head節點物件,head沒有data資料成員只有乙個next成員,head.next=0。
template class slist
__stl_unwind(list_node_allocator::deallocate(node));
return node;
} static void destroy_node(list_node* node)
private:
list_node_base head;
public:
slist()
slist(size_type n, const value_type& x)
slist(int n, const value_type& x)
slist(long n, const value_type& x)
explicit slist(size_type n)
template slist(inputiterator first, inputiterator last)
slist(const_iterator first, const_iterator last)
slist(const value_type* first, const value_type* last)
slist(const slist& l)
slist& operator= (const slist& l);
~slist()
public:
iterator begin()
const_iterator begin() const
iterator end()
const_iterator end() const
size_type size() const
size_type max_size() const
bool empty() const
void swap(slist& l)
public:
reference front()
const_reference front() const
void push_front(const value_type& x)
void pop_front()
}
4、slist元素操作
(1)push_front
inline __slist_node_base* __slist_make_link(__slist_node_base* prev_node,
__slist_node_base* new_node)
void push_front(const value_type& x)
(2)pop_front
void pop_front()
(3)erase_after
list_node_base* erase_after(list_node_base* pos)
(4)insert_after
iterator insert_after(iterator pos, const value_type& x)
list_node* _insert_after(list_node_base* pos, const value_type& x)
inline __slist_node_base* __slist_make_link(__slist_node_base* prev_node,
__slist_node_base* new_node)
鍊錶 反轉單向鍊錶
思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...
鍊錶1 單向鍊錶
鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資料域和乙個指標域,指標域指向鍊錶中的下乙個節點,最後乙個節點的指標域指向乙個空值 鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最...
鍊錶 單向鍊錶
討論單鏈表之前,我們先來討論下面這個問題。順序表存在的一些問題 中間 頭部的插入刪除,時間複雜度為o n 增容需要申請新空間,拷貝資料,釋放舊空間。會有不小的消耗。增容一般是呈2倍的增長,勢必會有一定的空間浪費。例如當前容量為100,滿了以後增容到200,我們再繼續插入了5個資料,後面沒有資料插入了...