Stack CreateStack( int MaxSize ){
Stack s=(Stack)malloc(sizeof(struct SNode));
s->Data=(int *)malloc(sizeof(int)*MaxSize);
s->Top1=-1;
s->Top2=MaxSize;
s->MaxSize=MaxSize;
return s;
}
bool Push( Stack S, ElementType X, int Tag ){
if(S->Top1+1==S->Top2){
printf("Stack Full\n");
return false;
}
if(Tag==1){
S->Top1++;
S->Data[S->Top1]=X;
return true;
}
else{
S->Top2--;
S->Data[S->Top2]=X;
return true;
}
}
ElementType Pop( Stack S, int Tag ){
if(Tag==1){
if(S->Top1==-1){
printf("Stack %d Empty\n",Tag);
return ERROR;
}
else {
int x=S->Data[S->Top1];
S->Top1--;
return x;
}
}
else{
if(S->Top2==S->MaxSize){
printf("Stack %d Empty\n",Tag);
return ERROR;
}
else{
int y=S->Data[S->Top2];
S->Top2++;
return y;
}
}
}
在一个数组中实现两个堆栈pta
最新推荐文章于 2025-03-20 08:47:02 发布