棧和佇列都是特殊的線性表,對線性表的插入與刪除操作位置進行了限定。棧是一種先進後出的資料結構,只能在棧頂進行插入與刪除;佇列是一種先進先出的資料結構,只能在隊尾查入隊頭刪除。
與線性表一樣,棧和佇列都可以分別用順序儲存和鏈式儲存的形式實現。
1.棧的順序儲存結構實現
設定空棧標誌為棧頂指標top=-1,入棧top+1,出棧top-1。
template
class seqstack
;(1)入棧push
template
void seqstack :: push(datatype x)
(2)出棧pop
template
datatype seqstack :: pop( )
建構函式和析構函式與線性表的實現並沒有太大差異,不作贅述。
2.棧的鏈式儲存結構實現
首先定義節點
template
struct node
;template
class linkstack
;(1)入棧push
template
void linkstack :: push(datatype x)
(2)出棧pop
template
datatype linkstack :: pop( )
3.佇列的順序結構儲存實現
為了更好的利用記憶體空間,我們使用迴圈佇列實現佇列的順序儲存。並且同時設定隊首rear和隊尾front指標,通過取模實現邏輯上的迴圈。即隊滿標誌為(rear+1)%queuesize=front,其中queuesize為構建佇列時申請的陣列大小。隊空的標誌為rear=front。
const int queuesize = 100; //100是示例性資料,根據需要重新定義
template //定義模板類cirqueue
class cirqueue
;(1)建構函式
設定rear=front=queuesize-1,一般在陣列的高階。
(3)入隊enqueue
template
void cirqueue :: enqueue(datatype x)
(4)出隊dequeue
template
datatype cirqueue :: dequeue( )
4.佇列的鏈式儲存結構實現
struct node
;template
class linkqueue
;(1)入隊enqueue
template
void linkqueue :: enqueue(datatype x)
(2)出隊dequeue
template
datatype linkqueue :: dequeue( )
棧與佇列操作總結
c 有棧和佇列的函式 include include queue int q 定義int型別為例 stack int s stack 堆疊 是乙個容器類的改編,提供了堆疊的全部功能,也就是說實現了乙個先進後出 filo 的資料結構。操作比較和分配堆疊 empty 堆疊為空則返回真 pop 移除棧頂元...
棧與佇列 小總結
棧與佇列都是基於順序表和煉表來實現.棧 後進先出 佇列 先進先出 棧 入棧 把元素放到棧裡頭 出棧 把最後進來的元素給刪除掉 去棧頂元素 獲取到最後乙個進來的元素的結果 1 順序表 核心操作如下 使用順序表來實現棧 public class mystack data size val size 2....
棧與佇列操作總結
c 有棧和佇列的函式 include include queue int q 定義int型別為例 stack int s stack 堆疊 是乙個容器類的改編,提供了堆疊的全部功能,也就是說實現了乙個先進後出 filo 的資料結構。操作比較和分配堆疊 empty 堆疊為空則返回真 pop 移除棧頂元...