C 儲存資料結構之一List

2021-06-13 17:21:06 字數 2509 閱讀 6364

分類: vc++

list是雙向迴圈鍊錶,,每乙個元素都知道前面乙個元素和後面乙個元素。在stl中,list和vector一樣,是兩個常被使用的容器。和vector不一樣的是,list不支援對元素的任意訪問。list中提供的成員函式與vector類似,不過list提供對錶首元素的操作push_front、pop_front,這是vector不具備的。和vector另一點不同的是,list的迭代器不會存在失效的情況,他不像vector會保留備份空間,在超過容量額度時重新全部分配記憶體,導致迭代器失效;list沒有備份空間的概念,出入乙個元素就申請乙個元素的空間,所以它的迭代器不會失效。還是舉《c++之vector》中的例子:

int data[6]=;
listlidata(data, data+6);
lidata.push_back(6);
...
list初始化時,申請的空間大小為6,存放下了data中的6個元素,當向lidata插入第7個元素「6」時,list申請新的節點單元,插入到list鍊錶中,資料存放結構如圖1所示:

圖1 list的儲存結構

list每次增加乙個元素,不存在重新申請記憶體的情況,它的成本是恆定的。而vector每當增加關鍵元素的時候,都需要重新申請新的更大的記憶體空間,會呼叫元素的自身的複製建構函式,存在構造成本。在銷毀舊記憶體的時候,會呼叫析構函式,存在析構成本。所以在儲存複雜型別和大量元素的情況下,list比vector更有優勢! 

list是乙個雙向鍊錶,雙鏈表既可以向前又向後鏈結他的元素。

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

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 listlistint;

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

typedef listlistchar;

void main(void)

資料結構之一

堆疊 strack 是指這樣一段記憶體,我們它可以理解為乙個筒結構,先放進筒中的資料被後放進筒中的資料 壓住 只有後放進筒中的資料都取出後,先放進去的資料才能被取出,稱為 後進先出 堆疊的長度可隨意增加。堆疊結構可用鍊錶實現。設計乙個鍊錶結構需包含兩個成員 乙個存放資料,乙個為指向下乙個節點的指標。...

資料結構 list

實現單鏈表的資料插入和刪除。include include typedef struct listlist void print list list head void insert list list head,int d void delete list list head,int d else...

資料結構 C語言版 之一

第1章 緒論 1.2基本概念和術語 1.2.1資料 資料元素 資料項和資料物件 資料是客觀事物的符號表示,是所有能輸入到計算機中並被電腦程式處理的符號的總稱。資料元素是資料的基本單位。資料元素通常用於完整地描述乙個物件。例如一名學生記錄。資料項是組成資料元素的 有獨立含義的 不可分割的最小單位。例如...