<!-- lang: cpp -->
#include <stdio.h>
#include <malloc.h>
struct stack
{
int Num;
int topOfstack;
int *array;
};
stack * CreatStack(int num){
stack *stack;
stack = (stack* )malloc(sizeof(struct stack));
stack->Num = num;
stack->array = (int*) malloc(sizeof(int) * num);
stack->topOfstack = -1;
return stack;
}
int isEmpty(stack *s){
if(s->topOfstack == -1)
return -1;
else
return 0;
}
int Push(stack *s, int x){
if(s->topOfstack >= s->Num-1){
printf("\nError: overflow!\n");
return -1;
}else{
s->topOfstack = s->topOfstack + 1;
s->array[s->topOfstack] = x;
return 0;
}
}
int Pop(stack *s){
if(isEmpty(s) == -1){
printf("\nError: The stack is empty!\n");
return -1;
}
s->topOfstack = s->topOfstack - 1;
return s->array[s->topOfstack + 1];
}
int main(){
int i,back;
int num = 10;
stack *s = CreatStack(num);
for(i=1;i<=15;i++){
if(Push(s,i*2)!=-1)
printf("Push result = %d\n",i*2);
}
for(i=1;i<=15;i++){
back = Pop(s);
if(back != -1)
printf("Pop result = %d \n",back);
}
getchar();
return 0;
}
转载于:https://my.oschina.net/dongdong2012/blog/115423