代码
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define OK 0
#define ERROR -1
typedef struct{
int* stackdata;
int top;
int stacksize;
}SeqStack;
int InitStack(SeqStack* S)
{
if(!S) return ERROR;
S->stackdata = (int*)malloc(sizeof(int)*STACK_INIT_SIZE);
if(!S->stackdata) return ERROR;
S->top = 0;
S->stacksize = STACK_INIT_SIZE;
return OK;
}
int push(SeqStack* S,int element)
{
if(S->top == S->stacksize) return ERROR;
S->stackdata[S->top++] = element;
}
int pop(SeqStack* S,int* element)
{
if(!S) return ERROR;
if(S->top == 0) return ERROR;
*element = S->stackdata[--S->top];
return OK;
}
void travelstack(SeqStack* S)
{
int i = 0;
for(i = 0 ; i < S->top; ++i)
{
printf("%d\n",S->stackdata[i]);
}
}
int main(void)
{
SeqStack S;
int* e;
int initres = InitStack(&S);
if(ERROR == initres) return ERROR;
push(&S,1);
push(&S,2);
push(&S,3);
pop(&S,e);
travelstack(&S);
return OK;
}
输出
