栈的建立,出栈,压栈,遍历,判断是否为空,是否已满
//栈的代码演示(顺序栈)
#include<bits/stdc++.h>
typedef struct Stack{
int len;
int cnt;
int *pBottom;
}Stack,*pStack;
void init(pStack pS,int length){
pS->pBottom=(int *)malloc(sizeof(int)*length);
pS->len=length;
pS->cnt=0;
return;
}
bool empty(pStack pS){
if(pS->cnt==0)
return true;
else
return false;
}
bool full(pStack pS){
if(pS->cnt==pS->len)
return true;
else
return false;
}
void push(pStack pS,int val){
if(full(pS)){
printf("栈已满!\n");
return;
}
pS->pBottom[pS->cnt++]=val;
return;
}
bool pop(pStack pS,int *pVal){
if(empty(pS)){
printf("栈已空!\n");
return false;
}
*pVal=pS->pBottom[-1+pS->cnt--];
return true;
}
void traverse(pStack pS){
int i=0;
while(i<pS->cnt){
printf("%d ",pS->pBottom[i++]);
}
printf("\n");
return;
}
int main()
{
Stack S;
int val;
init(&S,10);
push(&S,1);
push(&S,2);
push(&S,3);
traverse(&S);
if(pop(&S,&val))
printf("出栈成功,出栈的元素是%d\n",val);
else
printf("出栈失败\n");
traverse(&S);
}