棧 --- 基礎
知識棧 --- 練習題
佇列 --- 基礎知識
棧示意圖(後進先出):
順序棧結構定義:
#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 是只允許在一端進行插入,而在另一端進行刪除的運...