棧的理解就好比是堆盤子,想要拿最底下的盤子我們只能先拿走上面的盤子。所以棧遵循「後進先出」的原則。
堆疊指的是具有一定約束的線性表
性質//插入和刪除都只能在表的一端進行
//一端叫棧頂(top),另一端就叫棧底
操作
壓棧或入棧(push)
出棧(pop)
當然pop與push可以交叉進行;//例
對於入棧 abc
操作1:push(s,a);push(s,b);push(s,c);
pop(s);cba//出棧結果
操作2:push(s,a);pop(s);push(s,b);push(s,c);pop(s);
pop(s);acb//輸出結果
棧的順序儲存
struct stack;
建立空棧
struct stack*
creatstack
(intmaxsize)
壓棧操作壓棧的時候我們必須得先判斷棧是否已滿在進行下一步的語句
void
push
(struct stack*s,
int x)
出棧操作出棧的操作,我們必須先判斷是否棧已空
int
pop(
struct stack*s)
;
建立空鏈棧
struct snode*creatstack
鏈棧的出棧pop
int
pop(
struct snode*s)
q=s-
>next;
temp=q-
>data;
s->next=s-
>next-
>next;
//刪除第乙個結點//
free
(q);
return temp;
}
這裡必須申明一點鏈棧中top棧頂是在頭結點之後的第乙個結點的位置//
棧的應用:表示式求值
資料結構 棧與佇列
題目 1.編寫函式,採用鏈式儲存實現棧的初始化 入棧 出棧操作 2.編寫函式,採用順序儲存實現棧的初始化 入棧 出棧操作 3.編寫函式,採用鏈式儲存實現佇列的初始化 入隊 出隊操作 4.編寫函式,採用順序儲存實現佇列的初始化 入隊 出隊操作 5.編寫乙個主函式,在主函式中設計乙個簡單的選單,分別除錯...
資料結構 棧與佇列
棧的原則是後進先出,即插入與刪除元素均在棧頂進行。獲取棧頂元素 s.top 佇列的原則是先進先出,即插入資料在隊尾進行,刪除資料在隊頭進行。獲取隊頭元素 q.front 思路 用兩個棧,乙個棧用來進隊,乙個棧用來出隊,當資料進入佇列的時候,我們將其壓入乙個棧,當資料出隊的時候,我們將儲存在棧內的資料...
資料結構 棧與佇列
1.順序棧 基本操作 typedef int elemtype 定義 順序棧 typedef struct sqstack 判空 bool stackempty sqstack s 進棧 bool push sqstack s elemtype x 出棧操作 bool pop sqstack s e...