#include<vector>
class TwoStack
{
public:
TwoStack()
:size1(0)
, size2(0)
{
v.resize(5);
}
void Push1(int value)
{
CkeckCapacity();
v.insert(v.begin()+size1,value);//vector没有头插,插入就用这种方式
size1++;
}
void Push2(int value)
{
CkeckCapacity();
v.insert(v.end()-size2,value);
size2++;
}
void Pop1()
{
v.erase(v.begin()+size1-1);
size1--;
}
void Pop2()
{
v.erase(v.end()-size2+1);
size2--;
}
int Size1()
{
return size1;
}
int Size2()
{
return size2;
}
int Top1()
{
return v[size1-1];
}
int Top2()
{
return v[v.size()-size2];
}
protected:
void CkeckCapacity()
{
int len = (size1 + size2);
if (len == v.size())
{
v.resize(len+10);
}
}
protected:
vector<int> v;
int size1;
int size2;
};
int main()
{
TwoStack t;
t.Push1(1);
t.Push1(2);
t.Push1(3);
t.Push1(4);
t.Push1(5);
t.Push2(7);
t.Push2(8);
t.Push2(9);
t.Push2(10);
t.Push2(11);
t.Push2(12);
t.Push1(1);
t.Push1(2);
t.Push1(3);
t.Push1(4);
t.Push1(5);
t.Push2(7);
t.Push2(8);
t.Push2(9);
t.Push2(10);
t.Push2(11);
t.Push2(12);
while (t.Size1())
{
cout << t.Top1()<<" ";
t.Pop1();
}
cout << endl;
cout << endl;
system("pause");
}
一个数组实现两个栈
最新推荐文章于 2022-12-01 20:19:02 发布