多棧共享技術,雙端棧的初始化 進棧 出棧操作

2021-07-12 04:21:17 字數 633 閱讀 1049

棧的應用非常廣泛,經常會出現乙個程式中需要同時使用多個棧的情況。若使用順序棧,會因為對棧空間大小難以準確估計,從而產生有的棧溢位、有的棧空間還很空閒的情況。為了解決這個問題,可以讓多個棧共享乙個足夠大的陣列空間,通過利用棧的動態特性來使其儲存空間互相補充,這就是多棧的共享技術。

在順序棧的共享技術中,最常用的是兩個棧的共享技術,即雙端棧。它主要利用了棧的棧底位置不變,而棧頂位置動態變化的特性。

實現**如下:

#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...