兩棧共享空間 java實現

2021-07-02 06:47:31 字數 1405 閱讀 7395

如果我們有兩個相同型別的棧,我們為他們各自開闢了陣列空間,極有可能第乙個棧已經滿了,再進棧就溢位了,而另乙個棧還有很多儲存空間空閒。這時,我們可以充分利用順序棧的單向延伸的特性,使用乙個陣列來儲存兩個棧,讓乙個棧的棧底為陣列的始端,另乙個棧的棧底為陣列的末端,每個棧從各自的端點向中間延伸。

如下圖所示:

其中,top1和top2分別為棧1和棧2的棧頂指標,size為整個陣列空間的大小,棧1的底固定在下標為0的一端,棧2的底固定在下標為size-1的一端。

實現**:

package com.dhy.seqstack;

/** * 兩棧共享空間

* @author administrator

* */

public class bothstack

/*** 壓棧

* @param i 第幾個棧

* @param o 入棧元素

* @return

*/public boolean push(int i , object o)else if(i == 2)else

throw new runtimeexception("輸入錯誤!");

return true; }

/*** 出棧

* @param i

* @return

*/@suppresswarnings("unchecked")

public t pop(int i) else if(i == 2) else

throw new runtimeexception("輸入錯誤!");

} /**

* 獲取棧頂元素

* @param i

* @return

*/@suppresswarnings("unchecked")

public t get(int i) else if(i == 2) else

throw new runtimeexception("輸入錯誤!"); }

/*** 判斷棧是否為空

* @param i

* @return

*/public boolean isempty(int i) else if(i == 2) else

throw new runtimeexception("輸入錯誤!"); }

/*** 遍歷

*/@suppresswarnings("unchecked")

@override

public string tostring()

str1 += "]";

for(int i=top2;i

棧 兩棧共享空間

對於乙個棧,我們只能盡量考慮周全,設計出合適大小的陣列處理。但是,對於兩個相同型別的棧,我們卻可以做到最大限度地利用其事先開闢的儲存空間進行操作。我們可以用乙個陣列來儲存兩個棧,只不過需要一點小技巧。陣列有兩個端點,兩個棧有兩個棧底,讓乙個棧的棧底為陣列的始端,即下標為0處。另乙個棧的棧底為陣列的末...

兩棧共享空間

include include include define ok 1 define error 0 define maxsize 20 typedef int selemtype typedef int status typedef struct sqdoublestack 雙頭棧的初始化 sta...

兩棧共享空間

1.共有棧的實現 package edu.tcu.soft 兩棧共享空間 public class mybothstack 入棧操作 public void push int i,e e else 如果i 2,入右棧 if i 2 出棧操作 suppresswarnings unchecked pu...