(1)棧實現了後進先出操作。
在棧的陣列實現中,棧頂指標指向棧頂元素,插入時先修改指標再插入,刪除時先取棧頂元素再修改指標。
當top[s]=0時,棧中空的。
(2)陣列棧的結構:
int top;//棧頂指標
int *s];//指向棧陣列
(3)在棧上實現的操作
stack-empty(s)//判斷棧是否為空
push(s, x) //把x壓入到棧頂
pop(s) //取出並返回棧頂元素
#include #include #include using namespace std;
//資料結構
struct stack
// ~stack()
};void print(stack s)
//從底到頂輸出棧
print(s);
//從頂到底出棧
for(int i=0;i<10;i++)
cout<
(1)佇列實現了先進先出操作。
在佇列的陣列實現中,佇列的頭指標指向佇列首元素,刪除時先取佇列首元素再修改指標,佇列的尾指標指向隊尾元素的下乙個元素,插入時先插入再修改指標
當top[s]=0時,棧中空的。
(2)陣列佇列的結構:
int tail;//佇列尾,指向最新進入的元素
int head;//佇列頭,指向最先出的元素
int length;//佇列的長度
int *s;//指向陣列佇列
(3)在佇列上實現的操作
enqueue(q, x) //把x插入到佇列尾
dequeue(q) //取出佇列首元素並返回
#include #include #include using namespace std;
//佇列的資料結構,佇列的頭指向陣列第乙個元素,佇列的尾指向陣列最後乙個元素的下乙個
struct queue
};//從佇列頭到佇列尾輸出
void print(queue q)
//因為迴圈的原因,佇列尾可能在佇列頭的前面
else }
//判斷佇列是否為空
bool queue_empty(queue q)
//入佇列,tail達到尾的時候,重新回到最開始處,此時可能tailvoid enqueue(queue &q, int x)
//出佇列
int dequeue(queue &q)
int main()
**:
《演算法導論》第10章 基本資料結構 2 鍊錶
演算法導論 裡實現的是無序雙向鍊錶。原始檔 list.h 鍊錶的介面,定義鍊錶和結點的型別,以及鍊錶支援的操作。typedef int data type 注意將結構宣告為新型別的語法 struct tagnode typedef struct tagnode node typedef struct...
演算法導論 5 基本資料結構
最基本的資料結構 棧 佇列 鍊錶 二叉樹。這一篇主要實現前三種資料結構,記錄一部分習題的思路。這一篇比較簡單,但算是學習更高階資料結構的良好開端吧。先進後出。最主要的方法是push element 個pop 前者壓入乙個元素,後者彈出乙個元素。用陣列實現乙個簡單的棧。stack template c...
棧與佇列 第10章 基本資料結構
棧 後進先出 last in,first out,lifo 佇列 先進先出 first in,first out,fifo 壓入 push 無元素引數的delete pop s.top 不包含任何元素時,棧為空的。查詢棧是否為空時,用查詢操作 stack empty。對空棧執行彈出操作稱為下溢 un...