c语言实现数据结构中的栈(数组模拟),这个是采用数组来模拟,下篇文章利用链表来模拟,也可以称为链栈吧!输出结果也可以验证栈是先进后出。
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef struct SNode *Stack;
struct SNode {
int data[N];
int top;
};
Stack Init(Stack Ptrs) {
Ptrs = (Stack) malloc(sizeof(struct SNode));
Ptrs->top = -1;
return Ptrs;
}
void Push(Stack Ptrs, int x) {
if(Ptrs->top == N-1)
{
printf("栈满");
return;
}
else
Ptrs->data[++(Ptrs->top)] = x;
}
int Pop(Stack Ptrs) {
if(Ptrs->top == -1)
{
printf("栈为空");
return -1;
}
else
return (Ptrs->data[(Ptrs->top)--]);
}
int main() {
Stack s;
int n, a[n];
scanf("%d", &n);
s = Init(s);
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
Push(s,a[i]);
}
for(int i = 0; i < n; i++)
printf("%d ", Pop(s));
return 0;
}