栈和队列(出栈、入栈和其他栈的操作)

本文详细介绍了栈这一数据结构的基本概念,包括后进先出的特性,以及栈的两种存储结构——顺序存储和链式存储。在顺序存储中,讨论了创建、入栈、出栈、清空和销毁操作,而在链式存储中,关注点在于进栈和出栈操作。此外,还提到了如何计算栈的当前容量。
摘要由CSDN通过智能技术生成

定义

栈(Stack)是一个后进先出的线性表,它要求只在表尾进行删除和插入操作。

注:表尾称为栈的栈顶(top),相应的表头称为栈底(bottom)。

栈的插入和删除操作

插入操作(Push):叫做进栈,也称为压栈、入栈。
删除操作(Pop):叫做出栈,也称为弹栈。

栈的存储结构

栈本身是一个线性表,线性表分为顺序存储结构和栈的链式存储结构两种存储形式。
在这里插入图片描述

顺序存储结构

定义:

typedef int ElemType;
typedef struct
{
   
    ElemType *base; //指向栈底的指针变量
    ElemType *top;  //指向栈顶的指针变量
    int stackSize;  //指示栈的当前可使用的最大容量
}sqStack;

创建一个栈

#define STACK_INIT_SIZE 100  //初始化栈的空间为100
initStack(sqStack *S)
{
   
    s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); //分配内存空间
    if( !s -> base)
        exit(0);
    s->top = s->base; //最开始,栈顶就是栈底
    s-&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值