C语言实现栈
对一个栈的简单操作:创建、判空、进栈、出栈,获取栈顶元素 InitStack(&S) SatckEmpty(S) Push(&S,&x) Pop(&S,&x) GetTop(S,&x) DestoryStack(&S):将top指针置为-1即可(“&”表示引用)
#include <stdio.h>
typedef int ElemType;
#define MaxSize 10
typedef struct{
ElemType data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack &S){
S.top=-1;
}
bool SatckEmpty(SqStack &S){
if(S.top==-1)
return true;
else
return false;
}
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1)
return false;
S.data[++S.top]=x;
return true;
}
bool Pop(SqStack &S,ElemType &x){
if(S.top==-1)
return false;
x=S.data[S.top];
S.top=S.top-1;
return true;
}
bool GetTop(SqStack S,ElemType &x){
if(S.top==-1)
return false;
x=S.data[S.top];
return true;
}
int main(){
SqStack S;
InitStack(S);
ElemType i;
for(i=1;i<=10;i++) {
Push(S,i);
}
if(SatckEmpty(S))
printf("栈为空\n");
else
printf("栈不为空\n");
ElemType p;
GetTop(S,p);
printf("栈顶元素%d\n",p);
ElemType x;
for(i=1;i<=10;i++){
Pop(S,x);
printf("%d\n",x);
}
if(SatckEmpty(S))
printf("栈为空\n");
else
printf("栈不为空\n");
return 0;
}
运行结果:
栈不为空
栈顶元素10
10
9
8
7
6
5
4
3
2
1
栈为空
|