棧底分別在陣列的兩端,規定陣列大小為128,int型別。
可以實現的操作為驗空、驗滿、分別向兩個棧新增元素、分別刪除棧頂元素、分別展示棧內所有元素。
**如下:
#include
using namespace std;
typedef int stackelement;
const int stack_capacity = 128;
class stack
public:
stack();
int size1()const;
int size2()const;
bool empty1()const;
bool empty2()const;
bool full()const;
void push1(const stackelement & item);
void push2(const stackelement & item);
void display1();
void display2();
void pop1();
void pop2();
int capacity()const;
stackelement top1()const;
stackelement top2()const;
private:
stackelement myarray[stack_capacity];
int mytop1;
int mytop2;
stack::stack():mytop1(-1),mytop2(-1)
bool stack::empty1()const
return (mytop1==-1);
bool stack::empty2()const
return (mytop2==-1);
int stack::size1()const
return mytop1;
int stack::size2()const
return mytop2;
int stack::capacity()const
return stack_capacity;
void stack::push1(const stackelement & item)
if(mytop1+mytop2>=capacity()-2)
cerr<<"***full full***"if(mytop1++mytop1;
myarray[mytop1]=item;
else
cerr<<"***error error***"void stack::push2(const stackelement & item)
if(mytop1+mytop2>=capacity()-2)
cerr<<"***full full***"if(mytop2++mytop2;
myarray[stack_capacity-1-mytop2]=item;
else
cerr<<"***error error***"void stack::display1()
for(int i = mytop1;i>=0;i--)
coutfor(int i = mytop2;i>=0;i--)
coutif(!empty1())
mytop1--;
else
cerr<<"***no element no element***"if(!empty2())
mytop2--;
else
cerr<<"***no element no element***"if(!empty1())
return (myarray[mytop1]);
else
cerr<<"***stack is empty -- returning gabage value***"return garbage;
stackelement stack::top2()const
if(!empty2())
return (myarray[stack_capacity-1-mytop2]);
else
cerr<<"***stack is empty -- returning gabage value***"return garbage;
bool stack::full()const
return(capacity()<=mytop1+mytop2+2);
int main()
stack s;
cout<<"two stack created.stack 1 empty?"int numitems1;
cin>>numitems1;
for(int i=1;i<=numitems1;i++)
s.push1(i);
cout<<"please input a number to fill in stack 2 :";
int numitems2;
cin>>numitems2;
for(int i=1;i<=numitems2;i++)
s.push2(i);
cout<<"stack 1 contents : "cout<<"stack 2 contents : "cout<<"stack 1 empty ? "cout<<"delete stack 1 a value,then the top value is : "cout<<"delete stack 2 a value,then the top value is : "< 1.棧 class stack object 棧 def init self self.list def push self,item 新增新元素item到棧頂 def pop self 彈出棧頂元素 self.list.pop def peek self 返回棧頂元素 if self.list r... 注意 linkedlist中新增或者取出的方法有很多,比如add,offer,offerfirst,offerlast,push.根據使用的資料結構不同,最好區分使用.一,佇列queue fifo first in first out 0,模型上一般為右進左出,右端入隊並稱為隊尾,左端出隊並稱為隊頭... 棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,由於棧資料結構只允許在一端進行操作,因而按照後進先出 lifo,last in first out 的原理運作。棧結構實現 棧可以用順序表實現,也可以用鍊錶實現。棧的操作 功能stack 建立乙個新的空棧 push i...棧 佇列 雙端佇列的實現
佇列 , 雙端佇列, 棧
棧 佇列 雙端佇列