数据结构--顺序栈

news/2024/12/14 12:17:00/

一.相关概念:

1.栈和队列是操作受限的线性表,是限定性的数据结构;
2.栈分为顺序栈和链式栈
3.栈只能在一端进行操作(插入,删除);
4.栈是限定仅在表尾进行插入或删除操作的线性表.因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom).
5.不含元素地空表称为空栈.

二.顺序栈的结构:

typedef struct Stack{
int* base;//指向动态内存;
int top;//栈顶指针,实际上是下标,其实就是可以放数据的下标
int stacksize;//栈的总大小
}Stack,*PStack;

三.顺序栈的实现

//初始化
//输出参数
bool  GetTop(PStack ps,int *rtval)
{assert(ps != NULL);if (ps == NULL){return false;}if (IsEmpty(ps)){return   false;}*rtval=ps->base[ps->top - 1];return true;	
}//获取栈顶元素的值,但是删除
bool   Pop(PStack ps,int *rtval)
{assert(ps != NULL);if (ps == NULL){return false;}if (IsEmpty(ps)){return   false;}//*rtval = ps->base[ps->top - 1];//OK//ps->top--;//OK*rtval = ps->base[--ps->top];return true;
}//判空
bool IsEmpty(PStack ps)
{return ps->top == 0;
}//获取栈中有效元素的个数
int  GetLength(PStack ps)
{assert(ps != NULL);if (ps == NULL)return  -1;return ps->top;//top为有效数据的个数
}//清空所有的数据
void Clear(PStack ps)
{assert(ps != NULL);if (ps == NULL)return;ps->top = 0;
}//销毁
void Destroy(PStack ps)
{assert(ps != NULL);if (ps == NULL)return;free(ps->base);ps->base = NULL;ps->top = 0;ps->stacksize = 0;
}

四.顺序栈的总结:

1.栈的特点:后进先出,后来的反而需要先服务(访问受限的线性表)
2.栈又分为顺序栈和链式栈 3.上面顺序栈是不定长的顺序栈,能自动扩容
4.栈只能在一端进行插入和删除,插入和删除的这一端称之为栈顶,另一端称之为栈底; 5.顺序栈的栈顶在尾部,因为入栈和出栈的时间复杂度为O(1)


http://www.ppmy.cn/news/1424558.html

相关文章

IP证书申请流程

目录 域名与IP的关系 SSL证书绑定域名还是绑定IP? IP证书支持免费申请吗? 如何申请IP地址证书 IP类型的SSL证书,又称之为IP SSL,这种SSL证书是专门用于公网IP地址验证的一种数字证书。 主要功能就是解决IP地址明文传输的安全…

Python基础:【练手小实验系列】字符串及正则表达式

文章目录 题目练习题1: 反转字符串练习题2: 字符频率统计练习题3: 验证电子邮件地址练习题4: 寻找字符串中的所有数字练习题5: 简单的Markdown解析器参考答案练习题1: 反转字符串练习题2: 字符频率统计练习题3: 验证电子邮件地址练习题4: 寻找字符串中的所有数字练习题5: 简单的…

CSS单位选择的艺术:何时何地选用何种单位

CSS单位作为网页样式设计的基石,直接影响着元素尺寸、间距、字体大小等视觉呈现。选择合适的单位对于构建响应式、跨设备兼容且易于维护的界面至关重要。本文将深入分析各类CSS单位,并探讨在不同场景下应选用何种单位,同时揭示各单元的优缺点…

自动化运维工具Ansible模块的介绍与使用

文章目录 第1章 ansible介绍1.什么是ansible2.为什么需要ansible3.如何学习ansible 第2章 Ansible安装部署第3章 Ansible主机清单1.什么是主机清单2.主机分组执行3.所有的主机都执行4.SSH使用密码连接并且端口号不是225.同组主机SSH端口号不一样,账号密码也不一样6.…

责任链模式学习进阶--一起学习吧之数据库

上一篇学习了责任链的基本定义和特点 https://mp.csdn.net/mp_blog/creation/editor?not_checkout1&spm1015.2103.3001.8012 本文继续对责任链模式进行深入学习 一、实现过程 责任链模式的实现过程可以分为以下几个步骤: 定义抽象处理者角色(Ha…

国产32位高性价比单片机 XL32F003,最高64 K flash和8 K SRAM

XL32F003系列单片机是32 位 ARMCortex- M0 内核单片机,1.7 V~5.5 V宽工作电压,工作温度范围为-40 C~85 C。最高64 Kbytes flash和8 Kbytes SRAM存储器,主频最高32 MHz。有SOP8/SOP14/SOP16/TSSOP20/SSOP24/QFN20/QFN32多种封装可以选择。XL32…

python把字典值转成浮点型数据

python把字典值转成浮点型数据 1、流程 1、读完数据,转成字典 2、遍历字典,使用正则判断字典值是否为浮点型字符串 3、使用eval把字符串转成浮点型2、代码 """ @contact: 微信 1257309054 @file: test.py @time: 2024/4/19 18:30 @author: LDC ""…

记一次普通的单表查询sql优化,去掉文件排序

一现象: 有空观察了线上某个sql语句执行计划,发现在500多毫秒左右,打算进行下优化。 二步骤: 对查询列assessment_periodic_id、assessment_user_id、create_time添加了组合索引并指定了倒叙。加入create_time 使查询结果不需要在…