演算法導論第10章 基本資料結構 10 1棧和佇列

2021-06-26 15:35:29 字數 1350 閱讀 7744

(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...