乙個陣列實現兩個棧

2021-07-15 14:49:44 字數 1402 閱讀 4425

乙個陣列實現兩個棧,和 共享棧其實是很類似的。

有兩種方式實現:

看圖就知道:一種是兩個棧增長方向一樣的;另一種起始位置分別在棧的兩端,往中間增長。

方法一:增長方向一樣

方法:把陣列下標分為奇數和偶數 分別給兩個棧使用

**如下:---(我在程式中注釋的**部分,可以放開  看看是什麼效果,注釋掉的那部分是我剛開始的想法,相信很多初學者都會這麼想的

templateclass doublestack_by_onearray

void push(const t& data, size_t which) //輸入0則放在_top1 其他的 則是放在_top2

if(which == 0 )

else

}void pop(size_t which)

else

}t& top(size_t which)

else

}bool empty(size_t which)

t size(size_t which)

private:

t arr[maxsize];

int _top1;

int _top2;

};

方法二:起始位置分別在棧的兩端,往中間增長方法: 位於陣列起始位置的棧往後增長 , 位於陣列末端往起始位置增長 , 當兩個棧頂相遇,則證明棧滿了

//實現2:往中間增長 

templateclass doublestack_by_onearray_tomid

void push(const t& data, size_t which) //輸入0則放在_top1 其他的 則是放在_top2

if (which == 0)

else

}void pop(size_t which)

else

}else

else

}} t& top(size_t which)

else

}bool empty(size_t which)

t size(size_t which)

private:

bool isfull() //maxsize 為奇數=>top1==top2 為偶數top1+1 == top2

else

}private:

t arr[maxsize];

int _top1;

int _top2;

};

乙個陣列實現兩個棧

題目 乙個陣列a 1.n 來實現兩個棧,使得兩個棧中的元素總和不到n時,兩個都不會發生上溯。思路 1 建立乙個陣列,分別從兩邊開始,依次往中間走。思路 2 建立乙個陣列,乙個走奇數字,乙個走偶數字。奇偶方式 define crt secure no warnings includeusing nam...

乙個陣列實現兩個棧

乙個陣列實現兩個棧 用乙個陣列實現兩個棧,有多種方法,但基本思路就下面三種方法,幾種演算法的實現區別不大,主要在與擴容時的條件,第一種 以中間向兩邊壓棧 可以採用兩個棧底分別在陣列中間,棧頂向兩邊移動,當兩個棧頂任意乙個到達陣列的兩邊時,陣列擴容。此種演算法有兩個擴容條件,二者滿足其一便擴容 即只要...

乙個陣列實現兩個棧

用乙個陣列實現兩個棧 方案一 奇偶下標依次儲存 將陣列下標為0的位置作為第乙個棧的棧底,下標為1的位置作為第二個棧的棧底,將整個陣列中偶數下標部分依次儲存在第乙個棧中,將陣列中奇數下標部分依次儲存在第二個棧中。方案二 從中間分別向兩邊壓棧 將陣列的中間位置看做兩個棧的棧底,壓棧時棧頂分別向兩邊移動,...