stackhtml
堆棧的所有功能,——也就是說實現了一個先進後出(FILO)的數據結構ios
操做 比較和分配堆棧算法
棧的應用——括號匹配問題數據結構
empty() 堆棧爲空則返回真ui
pop() 移除棧頂元素spa
push() 在棧頂增長元素.net
size() 返回棧中元素數目設計
top() 返回棧頂元素3d
#include <iostream> htm
#include <stack>
using namespace std;
int main ()
{
stack<int> mystack;
for (int i=0; i<5; ++i) mystack.push(i);
cout << "Popping out elements...";
while (!mystack.empty())
{
cout << " " << mystack.top();
mystack.pop();
}
cout << endl;
return 0;
}
Queue
隊列(Queue)是一個數據集合,僅容許在列表的一端進行插入,另外一端進行刪除。
進行插入的一端稱爲隊尾(rear),插入動做稱爲進隊或入隊
進行刪除的一端稱爲隊頭(front),刪除動做稱爲出隊
隊列的性質:先進先出(First-in, First-out)
雙向隊列:隊列的兩端都容許進行進隊和出隊操做
queue 的基本操做有:
入隊,如例:q.push(x); 將x 接到隊列的末端。
出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最先被壓入隊列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入隊列的元素。
判斷隊列空,如例:q.empty(),當隊列空時,返回true。
訪問隊列中的元素個數,如例:q.size()
#include <cstdlib>
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int e,n,m;
queue<int> q1;
for(int i=0;i<10;i++)
q1.push(i);
if(!q1.empty())
cout<<"dui lie bu kong\n";
n=q1.size();
cout<<n<<endl;
m=q1.back();
cout<<m<<endl;
for(int j=0;j<n;j++)
{
e=q1.front();
cout<<e<<" ";
q1.pop();
}
cout<<endl;
if(q1.empty())
cout<<"dui lie bu kong\n";
system("PAUSE");
return 0;
}
List
Lists將元素按順序儲存在鏈表中. 與 向量(vectors)相比, 它容許快速的插入和刪除,可是隨機訪問卻比較慢
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中重複的元素
實例:
[cpp] view plaincopy
單鏈表的基本操做
http://www.javashuo.com/article/p-hayqhset-ga.html
排序
冒泡
function bubbleSort(arr) {
var len = arr.length;
for (var i = 0; i < len - 1; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) { // 相鄰元素兩兩對比
var temp = arr[j+1]; // 元素交換
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
快排
void Qsort(int a[], int low, int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];/*用字表的第一個記錄做爲樞軸*/
while(first < last)
{
while(first < last && a[last] >= key)
{
--last;
}
a[first] = a[last];/*將比第一個小的移到低端*/
while(first < last && a[first] <= key)
{
++first;
}
a[last] = a[first];
/*將比第一個大的移到高端*/
}
a[first] = key;/*樞軸記錄到位*/
Qsort(a, low, first-1);
Qsort(a, first+1, high);
}
冒泡
它重複地走訪過要排序的數列,一次比較兩個元素,若是它們的順序錯誤就把它們交換過來。
選擇
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾
插入
構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。
希爾
優先比較距離較遠的元素
歸併
將已有序的子序列合併,獲得徹底有序的序列
快排
經過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另外一部分的關鍵字小
堆
堆排序(Heapsort)是指利用堆這種數據結構所設計的一種排序算法。堆積是一個近似徹底二叉樹的結構,並同時知足堆積的性質:即子結點的鍵值或索引老是小於(或者大於)它的父節點。