1 1向量 鍊錶 陣列

2022-03-29 13:06:11 字數 1567 閱讀 8218

向量:向量支援隨機讀取和更改 查詢一般 末端刪除快 隨機刪除慢,它是 「class」. 可作為順序容器,類似陣列,但大小可動態變化。與陣列比較,它浪費儲存空間,用起來麻煩

鍊錶:只有頭結點有名字,不支援隨機讀取和更改 查詢慢 元素較多時刪除時間大約是查詢時間,適用於插入或刪除頻繁,儲存空間需求不定的情況,儲存空間不連續,動態分配記憶體;

陣列:,陣列是「變數,大小不可改變,

陣列無法動態定做,或者要做額外的善後工作,陣列無法整體複製,向量可以,陣列無法擴容。儲存效果高,訪問數度快;

vector(向量)是c++stl(標準模板類庫)的重要一員,使用時,要包含標頭檔案vector即可。

int a[10] = ;

int b[10] = a; //錯

vectorc(10);

vectord = c; //正確

除此之外,向量還有好多種定義方式,還可以從陣列中獲得初值,例如

int a[3] = ;

vectorva(a, a+3);

int n;

cin>>n;

int a[n]; //不正確,陣列大小不確定

若採用動態定做,從而需要釋放空間

int n;

cin>>n;

int* ap = new int[n];

// 一系列資料處理

delete ap;

如果換成向量,則一目了然

int n;

cin>>n;

vectorva(n);

vectotva;

//無法想象對應的陣列操作

for (int a; cin>>a; va.push_bach(a));

向量還有好多常用的操作,這些操作是陣列所不具備,但同時向量又可以像陣列一樣被使用,例如:

vectora;

a.push_bach(5); //在a向量最後位置插入乙個元素

a.pop_back(); //刪除a向量的最後乙個元素

a.clear(); //清空a向量中的元素

int x = a.front(); //將a向量的第乙個元素賦給x

int y = a.back(); //將a向量的最後乙個元素賦給y

bool b = a.empty(); //判斷是否為空

a.resize(10); //將元素個數調至10個,多則刪,少則補

//等等

其中a.begin(),b.end()分別表示向量a的起始元素位置和最後乙個元素之外的元素位置.

輸出向量中的元素可以如下:

for (int i = 0; i < a.size(); ++i)

cout<

還有乙個比較有用的是對向量中的元素進行排序:

sort(a.begin(), a.end()); //從小到大排序

11 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。public listnode partition listnode phead,int x...

表 陣列 鍊錶

陣列 陣列是個表,是個連續儲存的表。在c裡面,首先我們知道陣列容量是固定的,使用前先分配大小,所以使用後就不是很方便調整容量 解決這個問題在c裡面一般是預先估計陣列的大小,然後用雙倍的容量建立陣列,是不是很麻煩?正因為陣列是連續儲存和容量固定,所以注定陣列不方便進行增刪這種改變容量的操作。原因是假如...

向量 鍊錶 棧和佇列

三 不足之處 自學資料結構和演算法到現在時間也不短了,一直猶豫著要不要寫一寫向量等幾個最最基本的資料結構,因為總覺得是最基本的,太容易了,不想花這個時間去寫。然而學著學著慢慢發現,雖然這個很基本,但我並不一定能夠做好 尤其是以前的我 實際上我幾次因為需要寫過簡單的結構,但是沒有專門寫過,而且體驗也不...