1.stack類
**:1)c++ stl棧stack介紹
c++ stack(堆疊) 是乙個容器類的改編,為程式設計師提供了堆疊的全部功能,——也就是說實現了乙個先進後出(filo)的資料結構。
2)c++ stl棧stack的標頭檔案為:
#include
3)stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要的,在不指定容器型別時,預設的容器型別為deque。
定義stack 物件的示例**如下:
stacks1;
stacks2;
4)c++ stl棧stack的成員函式介紹
操作 比較和分配堆疊
empty() 堆疊為空則返回真
pop() 移除棧頂元素
push() 在棧頂增加元素
size() 返回棧中元素數目
top() 返回棧頂元素
5)例項:
#include #include using namespace std;
int main ()
cout << endl;
return 0;
}
2.queue類
**:1)queue 模板類的定義在標頭檔案中。
2)與stack 模板類很相似,queue 模板類也需要兩個模板引數,乙個是元素型別,乙個容器型別,元素型別是必要的,容器型別是可選的,預設為deque 型別。
定義queue 物件的示例**如下:
queueq1;
queueq2;
3)queue 的基本操作有:
入隊,如例:q.push(x); 將x 接到佇列的末端。
出隊,如例:q.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。
判斷佇列空,如例:q.empty(),當佇列空時,返回true。
訪問佇列中的元素個數,如例:q.size()
4)例項:
#include #include #include using namespace std;
int main()
};bool operator < (const t &t1, const t &t2)
main()
return 1;
}輸出結果為(注意是按照z 的順序從大到小出隊的):
3 3 6
2 2 5
1 5 4
4 4 3
再看乙個按照z 的順序從小到大出隊的例子:
#include #include using namespace std;
class t
};bool operator > (const t &t1, const t &t2)
main()
return 1;
}
3.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 plain
copy
#include
#include
#include
#include
using
namespace
std;
//建立乙個list容器的例項listint
typedef
list<
int> listint;
//建立乙個list容器的例項listchar
typedef
list<
int> listchar;
void
main()
cout << endl;
//使用stl的accumulate(累加)演算法
intresult = 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():"
<
for(j = listtwo.begin(); j != listtwo.end(); ++j)
cout << char
(*j) <<
" ";
cout << endl;
//使用stl的max_element演算法求listtwo中的最大元素並顯示
j=max_element(listtwo.begin(),listtwo.end());
cout << "the maximum element in listtwo is: "
<<
char
(*j)<
}
基本資料結構 表 棧和佇列
1 棧 後進先出 的兩種實現方式 指標和表 用指標方式實現棧的基本操作 createstack void h檔案 ifndef stack h struct node struct node typedef struct node ptrtonode typedef ptrtonode stack ...
基本資料結構 佇列
佇列實現的是一種先進先出 first in,first out,fifio 的策略,佇列中的插入的操作稱為入隊 enqueue 佇列的刪除操作稱為出隊 dequeue 定義乙個陣列來實現佇列 public class queue public queue int n public boolean i...
基本資料結構 棧
基本資料結構 棧 一.線性資料結構 我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,...