資料結構 棧和佇列

2021-06-19 19:19:31 字數 2643 閱讀 4500

棧 --- 基礎

知識棧 --- 練習題

佇列 --- 基礎知識

棧示意圖(後進先出):

順序棧結構定義:

#define maxsize 1024

struct stack;

操作函式:

push();   //入棧

pop();     //出棧

……….

struct lstack;

鏈棧示意圖:

操作函式:

push();    //入棧

pop();     //出棧

……….

注意:

也可以直接呼叫系統已經寫好的庫函式

#include

int main()

練習題:

//以下是訓練壓棧出棧等,棧的基本用法的簡單題:

括號匹配(棧和佇列)

十進位制與八進位制的轉換(棧和佇列)

相同序列(棧和佇列)

回文(棧和佇列)

佇列示意圖(先進先出):

棧是只對一頭操作,佇列是對兩頭都操作。

線佇列型別定義:

#define maxsize 1024        //佇列最大長度

struct sequeue;

操作函式:

push();    //入隊

pop();     //出隊

…………

注意:

front指向的是第乙個資料的前乙個位置。

rear指向的是最後乙個資料的位置。

迴圈佇列示意圖:

迴圈佇列型別定義:

#define maxsize 1024

struct;

操作函式:

push();    //入隊

pop();     //出隊

……….

注意:

因為是迴圈佇列,所以進隊的時候不能簡單的 +1了。

隊頭指標進1:(rear+1)%maxsize

隊尾指標進1:(front+1)%maxsize

佇列初始化:front=rear=0

隊空條件:front==rear

隊滿條件:(rear+1)%maxsize == front

怎麼判斷隊滿?

正常來說隊滿的時候front會等於rear,這就跟開始一樣了。

所以要做一些設定。

有多種方法。

可以浪費最後乙個位置。

用:if((rear+1)%maxsize ==fiont       //隊滿

來判斷隊滿。

也有庫函式

#include

使用類似棧。

鏈佇列示意圖:

鏈佇列型別定義:

struct lqueue;

操作函式:

push();    //入隊

pop();     //出隊

……….

注意:

鏈佇列是隊尾進,隊首出。

資料結構 棧和佇列

本章的基本內容是 兩種特殊的線性表 棧和佇列 從資料結構角度看,棧和佇列是操作受限的線性表,他們的邏輯結構相同。從抽象資料型別角度看,棧和佇列是兩種重要的抽象資料型別。p棧 限定僅在表的一端進行插入和刪除操作的線性表。p允許插入和刪除的一端稱為棧頂,另一端稱為棧底。p空棧 不含任何資料元素的棧。a ...

資料結構 棧和佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。class solution int pop node stack2.top stack2.pop return node private stack stack1 stack stack2 大家都知道斐波那契數列,現...

資料結構 棧和佇列

棧和佇列是兩種特殊的線性表,它們的邏輯結構和線性表相同,只是其運算規則較線性表有更多的限制,故又稱它們為運算受限的線性表。棧和佇列被廣泛應用於各種程式設計中。棧的順序儲存結構簡稱為順序棧,它是運算受限的順序表。棧的鏈式儲存結構稱為鏈棧。佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運...