【C-数据结构与算法】顺序栈

1、结构体定义

在这里插入图片描述

2、初始化栈

在这里插入图片描述

3、栈空判断

在这里插入图片描述

4、入栈

在这里插入图片描述

5、出栈

在这里插入图片描述

6、获取栈顶元素

在这里插入图片描述

完整程序如下

#include<stdio.h>
#include<stdlib.h>

#define Maxsize 50
typedef int ElemType;
typedef struct Stack{
	ElemType data[Maxsize];// 数组
	int top;
}SqStack;

void InitStack(SqStack& S) {
	S.top = -1;// 代表栈空
}

bool StackIsEmpty(SqStack S) {
	if (S.top == -1) {
		return true;
	}
	return false;
}

bool Push(SqStack& S, ElemType data) {
	if (S.top == Maxsize-1) {
		return false;// 栈满
	}
	S.data[++S.top] = data;// 入栈,top后移
	return true;
}

void PrintStack(SqStack S) {
	for (int i = 0; i <= S.top; i++) {
		printf(" %d ",S.data[i]);
	}
	printf("\n");
}
// 获取栈顶元素
bool GetTop(SqStack S,ElemType& e) {
	if (StackIsEmpty(S)) {
		return false;// 栈空
	}
	e = S.data[S.top];
	return true;
}
// 弹栈
bool Pop(SqStack& S,ElemType& e) {
	GetTop(S,e);
	S.top--;
	return true;
}

int main() {
	SqStack S;// 定义一个栈
	InitStack(S);// 初始化栈
	// 入栈测试
	Push(S, 3);
	Push(S, 4);
	Push(S, 5);
	PrintStack(S);
	// 存储栈顶元素
	ElemType e;
	GetTop(S,e);
	PrintStack(S);
	printf("%d\n",e);
	// 弹栈测试
	Pop(S,e);
	PrintStack(S);
	printf("%d\n", e);

	return 0;
}

/*
	链栈是头插法头删除法。
*/