C 棧與佇列

2021-07-22 14:01:24 字數 1610 閱讀 2507

棧:

棧是一種特殊的線性表,棧的插入和刪除操作只允許在表尾一端進行,因此棧是操作受限線性表。棧可以是順序儲存,也可以是鏈式儲存。

往棧裡插入乙個元素稱為進棧(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 ...