【数据结构】入栈、出栈代码-栈的顺序存储

本文介绍了栈的基本概念,它是一种先进后出的线性表,允许在一端进行插入(入栈)和删除(出栈)操作。栈的实现通常包括数据部分和栈顶指针。文章提供了栈的C语言实现,并通过测试代码展示了如何判断一个字符串是否对称,即通过将字符串入栈后再逐个出栈并与原字符串比较来确定对称性。
摘要由CSDN通过智能技术生成

基本概念

栈是一种只能在一端进行插入和删除操作的线性表

允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。当栈中没有元素时,称为空栈。栈的插入操作称为进栈或入栈;栈的删除操作称为退栈或出栈

栈是先进后出的线性表,即先进展的元素先出栈,比如一个狭窄(只有一个人宽度)的死胡同就类似一个栈,先进去的人只能等最后才能出,这就是先进后出。

一个栈应该包括数据部分和栈顶指针,数据部分用来存放数据,栈顶指针用来始终指向栈顶。空栈时,栈顶指针指向-1;当发生入栈时,先栈顶指针加一指向一个新的元素空间,然后将数据放入栈顶指针指向的这个空间;当发生出栈时,先将栈顶指针指向的数据读出,然后将栈顶指针减一。

代码

stack.c

#include "stack.h"

/*********************栈的顺序存储结构******************************/
void InitStack(SqStack& s)//初始化一个空栈
{
	s = (SqStack)malloc(sizeof(SStkNode));
	s->top = -1;  //栈顶指向-1表示空栈,栈顶始终指向栈顶元素
}

void DestroyStack(SqStack& s)
{
	free(s);//释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值