鍊錶是一種資料結構。
鍊錶有乙個「頭指標」變數,以head表示,只要有頭指標就可以得到這條鍊錶的所有資訊。它不儲存資料只存放乙個位址,該位址指向下乙個元素。
鍊錶中每乙個元素稱為「結點」,每個結點都應包括兩個部分:
資料域:使用者需要用的實際資料
head指向第乙個元素,第乙個元素又指向第二個元素;……,直到最後乙個元素,該元素不再指向其它元素,它稱為「表尾」,它的位址部分放乙個「null」(表示「空位址」),鍊錶到此結束,單鏈表示意圖如下:
slist/list是stl對於鍊錶的一種實現。
slist:迭代器屬於單向的forward iterator(可讀寫)。
list :迭代器屬於雙向的bidirectional iterator(可以雙向讀寫)。
看起來slist的功能應該會不如list,但由於其單向鍊錶的實現,其消耗的空間更小,某些操作更快。
這裡重點介紹list,雙向煉表示意圖如下:
1、list的建構函式
lista
list
a(n)
//宣告乙個n個元素的列表,每個元素都是0
list
a(n, m)
//宣告乙個n個元素的列表,每個元素都是m
2、push_back()和push_front()插入乙個元素到list中
push_back():從list的末端插入(尾插)
push_front():從list的頭部插入。(頭插)
呼叫list容器的成員函式begin():得到乙個指向容器起始位置的iterator可以呼叫list容器的end()函式:得到list末端下一位置
3、clear()
清空list中的所有元素
4、front()和back(),pop_back()和pop_front()
front():獲得list容器中的頭部元素
back():獲得list容器的最後乙個元素
pop_back():刪掉尾部第乙個元素
pop_front():刪掉頭部第乙個元素
鍊錶為空時呼叫不會報錯,故最好先呼叫empty()函式判斷。
5、reverse()
可以實現list的逆置
6、insert()
在指定位置插入乙個或多個元素
a.
insert
(a.begin()
,100);
//在a的開始位置(即頭部)插入100
a.insert
(a.begin()
,2,100);
//在a的開始位置插入2個100
7、erase()用迭代器遍歷刪除,執行後it會指向下乙個元素。
list
::iterator it;
for(it = list.
begin()
; it != list.
end();
)
8、實現首尾相連的環形
list l;
list
::iterator it;
for(it = l.
begin()
;;it++
)
hdoj-1276士兵佇列訓練問題problem description某部隊進行新兵佇列訓練,將新兵從一開始按順序依次編號,並排成一行橫隊,訓練的規則如下:從頭開始一至二報數,凡報到二的出列,剩下的向小序號方向靠攏,再從頭開始進行一至三報數,凡報到三的出列,剩下的向小序號方向靠攏,繼續從頭開始進行一至二報數。。。,以後從頭開始輪流進行一至二報數、一至三報數直到剩下的人數不超過三人為止。
input
本題有多個測試資料組,第一行為組數n,接著為n行新兵人數,新兵人數不超過5000。
output
共有n行,分別對應輸入的新兵人數,每行輸出剩下的新兵最初的編號,編號之間有乙個空格。
sample input
2
2040
sample output
1 7 19
1 19 37
#include
.h>
using namespace std;
#define fio ios:
:sync_with_stdio(0
);cin.
tie(0)
;cout.
tie(0)
;int
main()
flag ==
2? flag =
3: flag =2;
//2、3交替輪流進行
}for
(it = l.
begin()
; it != l.
end(
); it++
) cout <<
*it;
} cout <
}}
STL之鍊錶
鍊錶,通過指標來實現。鍊錶是一種資料結構,而list只是stl對於鍊錶的一種實現,一萬個人有可能寫出一萬種不同的鍊錶來。文字內容 很長很詳細的鍊錶所有操作 理解 這篇寫的棧佇列都很好理解 鍊錶是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。它可以根據需要開闢記憶體單元。鍊錶有乙個 頭指...
list 鍊錶STL應用
首先要保證標頭檔案必須有,其次建立list,有好幾種方法都可以 include include 這個標頭檔案時list鍊錶所需的 using namespace std int main cout 接下來操作返回首元素值以及返回末值以及排序 以及在有序鍊錶中插入值 include include 這...
STL之鍊錶list(C )
2 鍊錶 list 的常用方法 鍊錶 list 是乙個雙向鍊錶,可高效地進行插入刪除元素。如圖,list的結構 運用 list,必須宣告請標頭檔案 include。list 型別定義於 namespace std 中,是個 class template namespace std第乙個 templa...