棧的結(jié)構(gòu)定義如下
typedef struct
{
int data[MAXSIZE];
int top;
} Stack;
它是一種先進后出(FILO)的數(shù)據(jù)結(jié)構(gòu)睹限,所有的操作如下
// 操作結(jié)果:初始化一個棧
void Init(Stack *s)
{
s->top = -1;
}
// 操作結(jié)果:向棧s放入一個元素e
int Push(Stack *s, int e)
{
// 棧滿
if (s->top == MAXSIZE - 1)
{
return ERROR;
}
s->data[++(s->top)] = e;
return OK;
}
// 操作結(jié)果:從棧s彈出一個元素并放入e指向的內(nèi)存
int Pop(Stack *s, int *e)
{
// 棧為空
if (s->top == -1)
{
return ERROR;
}
*e = s->data[(s->top)--];
return OK;
}
測試結(jié)果說明
int main()
{
Stack *s = (Stack*)malloc(sizeof(Stack));
Init(s);
Push(s, 1);
Push(s, 2);
Push(s, 3);
Push(s, 4);
Push(s, 5);
Push(s, 6);
int *p = (int*)malloc(sizeof(int));
while (Pop(s, p))
{
printf("%d\n", *p);
}
}
$ gcc stack.c
$ ./a.out
6
5
4
3
2
1
入棧順序為1,2讯檐,3羡疗,4,5别洪,6
出棧順序為6叨恨,5,4挖垛,3痒钝,2,1