代码
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
typedef struct SqStack{
int data[MAXSIZE];
int top;
} SqStack;
void printStack(SqStack S){
int i = 0 ;
for (i=0 ;i<=S.top;i++){
printf ("%3d" ,S.data[i]);
}
printf ("\n" );
}
void initStatck(SqStack *S){
S->top = -1 ;
}
void clearStack(SqStack *S){
S->top = -1 ;
}
int pop(SqStack *S){
int elem;
if (S->top == -1 ){
printf ("error:空栈!\n" );
exit (-1 );
}
elem = S->data[S->top];
S->top--;
return elem;
}
void push(SqStack *S,int elem){
if (S->top == MAXSIZE-1 ){
printf ("error:栈已满!\n" );
exit (-1 );
}
S->data[++S->top] = elem;
}
int stackLength(SqStack S){
return S.top+1 ;
}
int main(){
void printStack();
void initStatck(SqStack *);
void clearStack(SqStack *);
int pop(SqStack *);
void push(SqStack * ,int );
int stackLength(SqStack);
SqStack S;
int i=0 ;
initStatck(&S);
printf ("初始化成功!\n" );
printf ("此时栈的长度为:%3d\n" ,S.top+1 );
for (i=0 ;i<5 ;i++){
push(&S,i+1 );
}
printStack(S);
printf ("此时栈的长度为:%3d\n" ,S.top+1 );
printf ("出栈:%3d\n" ,pop(&S));
printStack(S);
printf ("出栈:%3d\n" ,pop(&S));
printStack(S);
printf ("此时栈的长度为:%3d\n" ,S.top+1 );
printf ("清空栈!\n" );
clearStack(&S);
printf ("此时栈的长度为:%3d\n" ,S.top+1 );
pop(&S);
return 0 ;
}