題目:
乙個陣列a[1..n]來實現兩個棧,使得兩個棧中的元素總和不到n時,兩個都不會發生上溯。
思路(1):
建立乙個陣列,分別從兩邊開始,依次往中間走。
思路(2):
建立乙個陣列,乙個走奇數字,乙個走偶數字。
//奇偶方式
#define _crt_secure_no_warnings
#includeusing namespace std;
templateclass twostack
~twostack()
}void push(int index, int data);
t pop(int index);
bool isempty(int index);
void disp();
t top(int index);
private:
int _top1;
int _top2;
int _len;
t* _arr;
};templatevoid twostack::push(int index, int data)
//}//else
////}
int flag = _len % 2;
if (index == 0)
}if (flag == 1)
}if (_top1 == -1)
else}/
else
}if (flag == 1)
}///
if (_top2 == -1)
else}}
templatet twostack::pop(int index)
else
}else
else
}return ret;
}templatebool twostack::isempty(int index)
templatevoid twostack::disp()}}
templatet twostack::top(int index)
if (1 == index && _top2 >=1)
cout <
exit(0);
}void test1()
~twostack()
}void push(int index, int data);
t pop(int index);
bool isempty(int index);
void disp();
t top(int index);
private:
int _top1;
int _top2;
int _len;
t* _arr;
};templatevoid twostack::push(int index, int data)
if (index == 0)
else
}templatet twostack::pop(int index)
else
}return ret;
}
templatebool twostack::isempty(int index)
templatevoid twostack::disp()}}
templatet twostack::top(int index)
if (1 == index && _top2
cout <
exit(0);
}void test1()
void test2()
~twostack() }
void push(int index, int data);
t pop(int index);
bool isempty(int index);
void disp();
t top(int index);
void increasecapcity();
private:
int _top1;
int _top2;
int _len;
t* _arr;
int _capacity;
};templatevoid twostack::increasecapcity()
for (int j = top1 + 1; j
}if (_arr != null)
_arr = tmp;
_len = newlen;
_top2 = _len;
}templatevoid twostack::push(int index, int data)
if (index == 0)
else }
templatet twostack::pop(int index)
else
}return ret;
}
templatebool twostack::isempty(int index)
templatevoid twostack::disp() }}
templatet twostack::top(int index)
if (1 == index && _top2
cout <
exit(0);
}void test1()
void test2()
{ twostacks;
s.push(0, 1);
s.push(0, 2);
s.push(0, 3);
s.push(0, 4);
s.push(0, 5);
s.push(1, 6);
s.push(1, 7);
s.push(1, 8);
s.push(1, 9);
s.push(1, 10);
//cout<
本文出自 「fun」 部落格,請務必保留此出處
乙個陣列實現兩個棧
乙個陣列實現兩個棧,和 共享棧其實是很類似的。有兩種方式實現 看圖就知道 一種是兩個棧增長方向一樣的 另一種起始位置分別在棧的兩端,往中間增長。方法一 增長方向一樣 方法 把陣列下標分為奇數和偶數 分別給兩個棧使用 如下 我在程式中注釋的 部分,可以放開 看看是什麼效果,注釋掉的那部分是我剛開始的想...
乙個陣列實現兩個棧
乙個陣列實現兩個棧 用乙個陣列實現兩個棧,有多種方法,但基本思路就下面三種方法,幾種演算法的實現區別不大,主要在與擴容時的條件,第一種 以中間向兩邊壓棧 可以採用兩個棧底分別在陣列中間,棧頂向兩邊移動,當兩個棧頂任意乙個到達陣列的兩邊時,陣列擴容。此種演算法有兩個擴容條件,二者滿足其一便擴容 即只要...
乙個陣列實現兩個棧
用乙個陣列實現兩個棧 方案一 奇偶下標依次儲存 將陣列下標為0的位置作為第乙個棧的棧底,下標為1的位置作為第二個棧的棧底,將整個陣列中偶數下標部分依次儲存在第乙個棧中,將陣列中奇數下標部分依次儲存在第二個棧中。方案二 從中間分別向兩邊壓棧 將陣列的中間位置看做兩個棧的棧底,壓棧時棧頂分別向兩邊移動,...