向量:向量支援隨機讀取和更改 查詢一般 末端刪除快 隨機刪除慢,它是 「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裡面一般是預先估計陣列的大小,然後用雙倍的容量建立陣列,是不是很麻煩?正因為陣列是連續儲存和容量固定,所以注定陣列不方便進行增刪這種改變容量的操作。原因是假如...
向量 鍊錶 棧和佇列
三 不足之處 自學資料結構和演算法到現在時間也不短了,一直猶豫著要不要寫一寫向量等幾個最最基本的資料結構,因為總覺得是最基本的,太容易了,不想花這個時間去寫。然而學著學著慢慢發現,雖然這個很基本,但我並不一定能夠做好 尤其是以前的我 實際上我幾次因為需要寫過簡單的結構,但是沒有專門寫過,而且體驗也不...