c语言实现数据结构中的栈(数组模拟)

c语言实现数据结构中的栈(数组模拟),这个是采用数组来模拟,下篇文章利用链表来模拟,也可以称为链栈吧!输出结果也可以验证栈是先进后出。

#include 
#include 
#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;
}

c语言实现数据结构中的栈(数组模拟)_第1张图片

你可能感兴趣的:(数据结构基础)