stl 棧
本文是介紹關於棧的基礎知識,以及其stl 棧的使用。
棧是一種基本的資料結構,滿足先進後出的基本原則(filo),該資料結構可以看作向井中放物品與取物品。
如下圖:
棧的模型可以通過多種途徑實現。較為常見的是陣列模擬棧,也可以以鍊錶模擬棧。
陣列模擬棧:
棧的結構需要儲存空間與棧頂的位置。
int stack[maxn]
;//開闢相應空間以儲存資料
int*pos = stack;
//指向棧頂的指標
ps:這裡也可以直接使用陣列下標來作為棧頂位置的標記。
鍊錶模擬棧:
與陣列相同,但是鍊錶需要額外的標記鍊錶的起點。
struct node
;node *no1 =
new node;
//鍊錶的起點
node *pos = no1;
//指向棧頂的指標
功能
函式名返回值型別
判斷棧是否為空
empty()
bool
棧內元素數量
size()
int元素進棧
push(int n)
void
棧頂元素出棧
pop()
void
顯示棧頂元素
top()
int注:以下**均使用陣列模擬方法
bool
empty()
int
size()
void
push
(int n)
void
pop(
)
void
top(
)
c++ stl中包含了棧的庫,可以直接使用。底層預設運用雙向佇列(deque)。
使用時需要包含相關標頭檔案
#include
stl 棧的部分公有函式
功能函式名
返回值型別
判斷棧是否為空
empty()
bool
棧內元素數量
size()
int元素進棧
push(template t)
void
棧頂元素出棧
pop()
void
顯示棧頂元素
top()
template
stl 棧的部分原始碼
bool
empty()
const
size_type
size()
const
reference
top()
const_reference
top()
const
void
push
(const value_type& __x)
void
pop(
)
資料結構之棧(2 1)應用 括號匹配
編寫乙個演算法,判斷鍵盤輸入的表示式是否配對。假設括號只包含 1 所謂括號配對,就是 2 輸入的字串中,可能包含 也可能沒有 數字,及其他符號。3 每當掃瞄字串元素 現 需要進行括號匹配檢查。檢查方式為 看最近出現的 而用什麼儲存 呢?棧是選擇之一。那棧的儲存狀態是,要麼有 要麼為空。4 根據以上分...
資料結構上機2 1
include include define maxsize 50 typedef char elemtype typedef struct sqlist 尾插法線性表 void initlist sqlist l 初始化線性表 void destroylist sqlist l 銷毀線性表 boo...
資料結構 棧 棧
可以把棧想像成乙個桶 進棧 就是把和桶口一樣大的燒餅往桶裡面扔 出棧 就是把燒餅拿出來 特點 先進後出。先扔進去的燒餅最後才能拿出來,最後扔進去的燒餅,第乙個拿出來 剛開始top 1 top 1 然後把進棧的元素賦值給data top 入棧操作 void push stack s,int x els...