棧:
棧是一種特殊的線性表,棧的插入和刪除操作只允許在表尾一端進行,因此棧是操作受限線性表。棧可以是順序儲存,也可以是鏈式儲存。
往棧裡插入乙個元素稱為進棧(push),從棧裡刪除乙個元素稱為出棧(pop)。同時還有乙個棧頂指標(top),總是指向最後乙個進棧的元素,當top=-1 時 表示棧為空,top=maxsize-1 表示棧已滿,再進行插入操作會溢位。
使用標準庫的棧和佇列時,先包含相關的標頭檔案
#include
定義棧如下:
stackstk;
棧提供了如下的操作
s.empty() 如果棧為空返回true,否則返回false
s.size() 返回棧中元素的個數
s.pop() 刪除棧頂元素但不返回其值
s.top() 返回棧頂的元素,但不刪除該元素
s.push() 在棧頂壓入新元素
佇列:
佇列也是一種操作受限的線性表,佇列的插入操作只允許在表尾一端進行,而刪除操作只允許在表頭進行。
佇列設定兩個指標進行管理,乙個指標是隊頭指標front,它指向隊頭元素;另乙個指標是隊尾指標rear,它指向下乙個入隊元素的儲存位置。當front=rear 時,隊中沒有任何元素。
#include
定義佇列如下:
queueq;
q.empty() 如果隊列為空返回true,否則返回false
q.size() 返回佇列中元素的個數
q.pop() 刪除佇列首元素但不返回其值
q.front() 返回隊首元素的值,但不刪除該元素
q.push() 在隊尾壓入新元素
q.back() 返回佇列尾元素的值,但不刪除該元素
迴圈佇列:
當隊列為空時front=rear ,而當所有的佇列空間全佔滿時也有front=rear 。為了區別這種情況,規定迴圈佇列最多只能有maxsize-1 個對列元素,當迴圈佇列中只剩下乙個空儲存單元時,對列就已經滿了。因此,佇列判斷空的條件是front=rear ,而佇列判斷滿的條件是 front=(rear+1)%maxsize 。
在stl中,對佇列的使用很是較完美
下面給出迴圈佇列的運算演算法:
(1)將迴圈佇列置為空
//將佇列初始化
sequeue::sequeue()
(2)判斷迴圈佇列是否為空
int sequeue::empty()
(3)在迴圈佇列中插入新的元素x
void sequeue::addq(elemtype x)
} (4)刪除佇列中隊首元素
elemtype sequeue::delq()
} (5)取佇列中的隊首元素
elemtype sequeue::front()
棧與佇列(C )
佇列的結構體定義 順序棧鏈棧 棧的應用 順序隊 迴圈佇列 鏈隊共享棧和雙端佇列 define maxsize 100typedef struct sqstactk typedef struct lnode lnode typedef struct sqqueue 鏈隊結點的結構體定義typedef ...
C 的棧與佇列
原帖位址 使用標準庫的棧和佇列時,先包含相關的標頭檔案 include include 定義棧如下 stackstk 定義佇列如下 queueq 棧提供了如下的操作 s.empty 如果棧為空返回true,否則返回false s.size 返回棧中元素的個數 s.pop 刪除棧頂元素但不返回其值 s...
棧與佇列 建立棧 佇列
陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...