c 標準庫中,含有鍊錶的類list

2021-09-06 09:50:32 字數 3484 閱讀 2191

lists將元素按順序儲存在鍊錶中. 與 向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢.

stl中 end()指向的總是無效值,取值都用迭代器,用法跟指標差不多。

assign() 給list賦值

back() 返回最後乙個元素

begin() 返回指向第乙個元素的迭代器

clear() 刪除所有元素

empty() 如果list是空的則返回true

end() 返回末尾的迭代器

erase() 刪除乙個元素

front() 返回第乙個元素

get_allocator() 返回list的配置器

insert() 插入乙個元素到list中

max_size() 返回list能容納的最大元素數量

merge() 合併兩個list

pop_back() 刪除最後乙個元素

pop_front() 刪除第乙個元素

push_back() 在list的末尾新增乙個元素

push_front() 在list的頭部新增乙個元素

rbegin() 返回指向第乙個元素的逆向迭代器

remove() 從list刪除元素

remove_if() 按指定條件刪除元素

rend() 指向list末尾的逆向迭代器

resize() 改變list的大小

reverse() 把list的元素倒轉

size() 返回list中的元素個數

sort() 給list排序

splice() 合併兩個list

swap() 交換兩個list

unique() 刪除list中重複的元素

附list用法例項:

#include

#include

#include

#include

using

namespace

std;

//建立乙個list容器的例項listint

typedef list

listint;

//建立乙個list容器的例項listchar

typedef list

listchar;

void main(void

) cout

//使用stl的accumulate(累加)演算法

int result = accumulate(listone.begin(), listone.end(),0

); cout

<<"

sum=

"cout

<<"

------------------

"

//--------------------------

//用list容器處理字元型資料

//--------------------------

//用listchar建立乙個名為listone的list物件

listchar listtwo;

//宣告i為迭代器

listchar::iterator j;

//從前面向listtwo容器中新增資料

listtwo.push_front ('a

');listtwo.push_front ('b

');//從後面向listtwo容器中新增資料

listtwo.push_back ('x

');listtwo.push_back ('y

');//從前向後顯示listtwo中的資料

cout

<<"

listtwo.begin()---listtwo.end():

"

cout

<< char(*j) << "";

cout

//使用stl的max_element演算法求listtwo中的最大元素並顯示

j=max_element(listtwo.begin(),listtwo.end());

cout

<< "

the maximum element in listtwo is:

"<輸出為: the maximum element in listtwo is: y

#include

#include

using

namespace

std;

typedef list

intlist;

//從前向後顯示list佇列的全部元素

void put_list(intlist list, char *name)

//測試list容器的功能

void main(void)

補充:stl標準函式find進行vector 、list鍊錶查詢

#include

#include

#include

using

namespace

std;

class

example

bool

operator==(example const &rhs)

private

:int

i;};

int main(void

)#include

#include

#include

#include

using

namespace

std;

typedef list

listint;

int main(void);

listint ls1;

ls1.assign(a,a+5

); listint::iterator it;

for( it=ls1.begin(); it!=ls1.end(); it++)

cout

<<*it<<"";

cout

ls1.insert( ls1.end(), 4);

for( it=ls1.begin(); it!=ls1.end(); it++)

cout

<<*it<<"";

cout

ls1.remove( 5);

for( it=ls1.begin(); it!=ls1.end(); it++)

cout

<<*it<<"";

cout

<輸出 1 3 6 4 【5元素全部被刪除了】

/*輸出如下

1 5 3 5 6

1 5 3 5 6 4

1 3 6 4

*/

golang標準庫 雙向鍊錶(list)

鍊錶結構大家都不陌生了,與陣列一樣都是儲存資料用的,形成互補。鍊錶增刪快,查詢慢,陣列查詢快,增刪慢 兩者各有各的應用場景。go語言標準庫中實現了雙向鍊錶和環形鍊錶兩種鍊錶結構 雙向鍊錶位於go標準庫 container list type list structroot 為鍊錶的根元素,len為鍊...

尋找單向鍊錶中含有環的入口節點

這是乙個比較基本的鍊錶問題。總結一下,可以擴充套件為以下幾類問題 解法 具體 如下 定義listnode資料結構 public class listnode 判斷單向鍊錶是否有環 param phead return public boolean hasloopinlistnode listnode...

C 標準類庫中的list

lists將元素按順序儲存在鍊錶中.與 向量 vectors 相比,它允許快速的插入和刪除,但是隨機訪問卻比較慢.stl中 end 指向的總是無效值,取值都用迭代器,用法跟指標差不多。assign 給list賦值 back 返回最後乙個元素 begin 返回指向第乙個元素的迭代器 clear 刪除所...