使用一維陣列實現共享棧操作

2022-07-21 07:27:12 字數 896 閱讀 1597

所謂的共享棧就是兩個虛擬的棧使用一塊固定大小的陣列元素,涉及到如何不衝突的進行入棧出棧操作。對一維陣列即在陣列兩頭設定兩個棧頂標記(指標)。然後分別這兩個進行入棧出棧操作。當前面的棧標記位置+1=後面棧的位置,那麼不可以進行入棧操作,如果兩個棧有在棧底(對前面的來說是top1-1,後乙個是top2n)是不可以進行出棧操作的。

結構圖如下:

//函式根據operate這個字串內容是push還是pop,flag是1還是2表示是前面一部分棧還是後一部分棧,n表示共享棧stack_array陣列的長度

#include#includeusing namespace std;

int top1,top2;//棧頂指標在整個過程是變化的,記錄著兩個棧棧頂位置,需要設定為全域性變數

char sharestack(char stack_array,int top,int flag,string operate)

if(flag==2)

}if(operate=="pop")

if(flag=2)

}}int main()

;//初始化字元陣列

top1=-1;

top2=10;//初始化1、2號棧棧頂指標

//2號棧入棧基本操作,將top的變化放在main中執行,實現連續入棧或出棧。

if(top1+1!=top2)//棧不滿則入

//2號棧入棧

if(top1+1!=top2)

cout<

在此次編寫的過程中遇到不能進行連續**入棧或者出棧的問題,在每次出入棧都要進行相應的資料操作,可以考慮將其封裝在函式中。

乙個陣列實現兩個棧 共享棧

問題分析 在順序棧的實現中,元素入棧是從下標為0的位置向上增長的,出棧是通過size 實現的。要想用乙個陣列實現2個棧,可以除了下標從0開始增長,還同時讓另乙個棧下標從size 1處開始減少。問題解決 定義top1,top2分別代表2個棧棧頂的下乙個位置的下標。棧1入棧時,元素放入top1位置,再使...

Java實現陣列棧的操作

棧的操作一般有 判斷是否為空 清空棧 檢視棧的長度 進棧 出棧 首先定義乙個棧的類 public class mystack else 清空棧 public void clear size 0 棧長度 public int length 擴充陣列 suppresswarnings unused pr...

陣列實現簡單的棧操作

微控制器開發過程中,常常會用到棧操作,例如多級選單的頁面跳轉,這裡分享乙個自己c語言寫的非常簡單的棧操作檔案供各位參考。include bsp user stk.h uint8 t stack stack size io static int top element 1 指向棧頂元素的指標 void...