棧
棧他是一種後進先出 的線性表,一半在遞迴存斷點的時候會用到它,它定義在標頭檔案中,使用時需要先定義,定義的樣子為stack《需要 往裡存的型別》p,例如你要往棧裡放整數型的數就可以定義為stackp,他還有一些常用操作
stack《型別》s
s.push(x); 入棧
s.pop(); 出棧,注意,出棧操作只是刪除棧頂元素,並不返回該元素。
s.top(); 訪問棧頂元素
s.empty(), 判斷棧空,當棧空時,返回true。
s.size() 訪問棧中元素個數
佇列
佇列和棧一樣也是一種線性表,不過它分為好幾種,有雙向佇列,也就是既可以在佇列前端操作也可以在佇列後面操作,還有就是單向佇列,只能從後端插入,從前端刪除。
先講單向佇列,它定義在標頭檔案中,定義佇列時和棧差不多。
單向佇列的一些操作:
queueq;
入隊,如例:q.push(x); 將x 接到佇列的末端。
出隊,如例:q.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。
判斷佇列空,如例:q.empty(),當佇列空時,返回true。
訪問佇列中的元素個數,如例:q.size()
刪除所有元素 ,p.clear()
然後是雙向佇列,它定義在這個標頭檔案中,功能比單向佇列多很多,它的一些基本操作有:
入隊,如例: p.push_back(x); 將x 接到佇列的末端;p.push_front(x); 將x 接到佇列的前端。
出隊,如例:q.pop_back(); 彈出佇列的最後乙個元素,注意,並不會返回被彈出元素的值;q.pop_front(); 彈出佇列的第乙個元素
訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。
判斷佇列空,如例:q.empty(),當佇列空時,返回true。
訪問佇列中的元素個數,如例:q.size()
刪除所有元素 ,p.clear()
p.max_size() 返回雙向佇列能容納的最大元素個數
其實雙向佇列還有很多功能,在這裡就是先列舉一些常用的。
map
map其實也可說是乙個陣列,但是它比陣列的功能強大很多,它是一種隨用隨開的陣列,也就是說當你操作a[1000000000]=1時它只開了乙個空間,而你要用普通陣列的話你要開1e9的空間,我感覺這也是它很重要的功能之一,而且它還可以以乙個字串型別開,例如a[字串]=1,這也是成立的,下面講一下它的基本操作
1.map基本用法
#include#include//這是它的頭函式
using namespace std;
int main()
//輸出結果為
america:300
china:100
english:200
當然它還可以開二維的,例如map《型別,型別》p[型別],這任然是成立的,把它當成二維陣列用就可以,這樣就可以解決一些數的範圍很大但操作次數很少的題.
他還有一些基本操作
clear() 刪除所有元素
count() 返回指定元素出現的次數
empty() 如果map為空則返回true
erase() 刪除乙個元素
find() 查詢乙個元素
size() 返回map中元素的個數
棧和佇列 單調佇列 單調棧
講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...
棧和佇列 佇列
佇列 又一種特殊的線性表 佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 允許刪除的一端稱為隊頭 front 允許插入的一端稱為隊尾 rear 當佇列中沒有元素時稱為空佇列。佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾 即不允許 加塞 每次離開的成員總是...
棧和佇列(佇列)
列隊類 public class myqueue 帶引數構造方法,引數為陣列大小 public myqueue int maxsize 新增資料 從隊尾插入 public void insert int value arr end value 注意是 end 不是end element 刪除資料,從...