顺序栈 ——初始化、入栈、出栈

编译环境:VS2019
直接上代码吧!

#define _CRT_SECURE_NO_WARNINGS //防止出现C4996错误
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100

typedef struct Snode
{
	int data[Maxsize];
	int top;
}Seqstack;
//栈空: top = -1
//栈满: top = Maxsize - 1;
//栈中总元素个数: top + 1
//初始化栈
Seqstack* Init_Stack()
{
	Seqstack* s;
	//思考:此处为什么要用malloc开辟一段新的内存空间?
	//因为s是指向结构体的指针,但现在连结构体都没有,所以要malloc一个和结构体大小相同的空间,使s指向它
	s = (Seqstack*)malloc(sizeof(Seqstack));
	s->top = -1;
	return s;
}

//入栈
void Push_Stack(Seqstack* s, int e)
{
	if (s->top == Maxsize - 1)
	{
		printf("FULL\n");
	}
	else
	{
		s->top++;
		s->data[s->top] = e;
		printf("PUSH!\n");
	}
}

//出栈
int Pop_Stack(Seqstack* s)
{
	int x;
	if (s->top == -1)
	{
		printf("EMPTY!\n");
		return 0; //表示函数正常终止
	}
	else
	{
		x = s->data[s->top];
		printf("%d\n", x);
		s->top--;
		return 1; //表示函数非正常终止
	}
}

//取栈顶元素
//此处注意取栈顶元素和出栈的区别
void Top_Pop(Seqstack* s)
{
	if (s->top == -1)
	{
		printf("NULL\n");
		return 1;
	}
	else
	{
		printf("%d\n", s->data[s->top]);
	}
}
int main()
{
	Seqstack* s;
	s = Init_Stack();
	Push_Stack(s, 3);//令3入栈
	Push_Stack(s, 4);//令4入栈
	Top_Pop(s); // 取栈顶元素
	Pop_Stack(s);//出栈
	Pop_Stack(s);//出栈
	Pop_Stack(s);//出栈
	return 0;
}

  • 19
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值