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

2021-08-18 13:58:59 字數 1120 閱讀 8599

問題分析:

在順序棧的實現中,元素入棧是從下標為0的位置向上增長的,出棧是通過size--實現的。要想用乙個陣列實現2個棧,可以除了下標從0開始增長,還同時讓另乙個棧下標從size-1處開始減少。

問題解決:

定義top1,top2分別代表2個棧棧頂的下乙個位置的下標。棧1入棧時,元素放入top1位置,再使top1++;棧2入棧時,元素放入top2位置,再使top2--。出棧時,棧1 top1--;棧2 投top2 ++。

**實現:

//共享棧

#define size 10

typedef struct sharedstack

sharedstack;

void initshared(sharedstack* s);

void pushshared1(sharedstack* s, stacktype elem);

void pushshared2(sharedstack* s, stacktype elem);

void popshared1(sharedstack*s);

void popshared2(sharedstack*s);

int topshared1(sharedstack* s, stacktype* top);

int topshared2(sharedstack* s, stacktype* top);

void initshared(sharedstack* s)

void pushshared1(sharedstack* s, stacktype elem)

void pushshared2(sharedstack* s, stacktype elem)

void popshared1(sharedstack*s)

void popshared2(sharedstack*s)

int topshared1(sharedstack* s, stacktype* top)

int topshared2(sharedstack* s, stacktype* top)

乙個陣列實現兩個棧

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

乙個陣列實現兩個棧

乙個陣列實現兩個棧,和 共享棧其實是很類似的。有兩種方式實現 看圖就知道 一種是兩個棧增長方向一樣的 另一種起始位置分別在棧的兩端,往中間增長。方法一 增長方向一樣 方法 把陣列下標分為奇數和偶數 分別給兩個棧使用 如下 我在程式中注釋的 部分,可以放開 看看是什麼效果,注釋掉的那部分是我剛開始的想...

乙個陣列實現兩個棧

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