顺序存储实现栈

#include <stdio.h>
#define MaxLength 50
typedef int elemType;

typedef struct {
	elemType data[MaxLength];
	int top;//指向栈顶
}SqStack;

bool initStack(SqStack& stack) {
	stack.top = -1;
	return true;
}

bool isEmpty(SqStack stack) {
	if (stack.top == -1)
	{
		return true;
	}

	return false;
}
bool push(SqStack &stack,elemType num) {
	//判断栈是否满
	if (stack.top > MaxLength - 1) {
		printf("栈已满,无法进行插入");
		return false;
	}
	stack.data[++stack.top]=num;  //top先++,指向下一位

	return true;
}
int Pop(SqStack& stack) {
	//判断栈是否为空
	if (stack.top==-1)
	{
		printf("栈为空,无法进行弹栈");
		return 0;
	}
	int result;
	result = stack.data[stack.top--];  //先将栈顶元素取出,然后top--
	return result;
}


int GetTop(SqStack stack) {
	if (isEmpty(stack)) {
		return 0;
	}
	return stack.data[stack.top];
}

int main() {
/*
顺序存储实现栈
*/
	SqStack stack;
	initStack(stack);//初始化栈
	//进栈
	push(stack,1);
	push(stack,2);
	push(stack,3);
	//弹栈(出栈)
	Pop(stack);
	Pop(stack);
	//获取栈顶元素
	int result=GetTop(stack);
	printf("%d", result);

	return 0;
}

推荐一个网站:动画演示各种数据结构的操作

数据结构可视化 (usfca.edu)

本人只是为了考研复习方便,在此记录,小菜鸡一个,勿喷!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值