棧的應用非常廣泛,經常會出現乙個程式中需要同時使用多個棧的情況。若使用順序棧,會因為對棧空間大小難以準確估計,從而產生有的棧溢位、有的棧空間還很空閒的情況。為了解決這個問題,可以讓多個棧共享乙個足夠大的陣列空間,通過利用棧的動態特性來使其儲存空間互相補充,這就是多棧的共享技術。
在順序棧的共享技術中,最常用的是兩個棧的共享技術,即雙端棧。它主要利用了棧的棧底位置不變,而棧頂位置動態變化的特性。
實現**如下:
#include
using namespace std;
#define true 1
#define false 0
#define m 100
//雙端順序棧的儲存結構
typedef struct
}dqstack;
//初始化雙端順序棧
void initstack(dqstack *s)
//雙端順序棧進棧操作
int push(dqstack *s,int x,int i)//把資料元素x壓入i號堆疊
//雙端順序棧出棧操作
int pop(dqstack *s, int *x, int i)//從i號堆疊中彈出棧頂元素並送到x中
本文出自 「巖梟」 部落格,請務必保留此出處
關於順序棧的初始化,進棧,出棧,棧滿,棧空的操作
本程式在vc環境下執行。順序棧比較簡單。本程式只是插入乙個資料之後直接刪除該資料。不夠完善請原諒。seqstack.h檔案。include include define maxsize 50 define false 0 define true 1 typedef structseqstack se...
棧(順序棧,多棧共享技術,動態順序棧,鏈棧)
include include define stacksize 10 建立 typedef struct seqstack seqstack 初始化 void initstack seqstack s 入棧 int push seqstack s,int elem s top s elem s t...
鏈棧的初始化
include include using namespace std template class linkedstack 類宣告 template 全域性的operator 函式都要在類定義前宣告 istream operator istream is,linkedstack s templat...