恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

数据结构——5.顺序栈

  • 首页
  • 资讯中心
  • /
  • 数据结构——5.顺序栈

相关资讯

Codex Skill 安装基础以及常用 Skill 使用 2026/10/11 1:31:46
微信聊天记录本地备份:WeChatMsg 从原理到实操 2026/10/11 1:31:46
MAA 明日方舟助手下载安装完整指南:9 条渠道、3 个平台一次搞定 2026/10/11 1:31:46

最新资讯

策略模式实战指南:用JavaScript优雅重构失控的if-else
满树的遍历解题思路:从DFS到层序遍历,PTA天梯赛经典题型拆解
在线点餐系统源码二开避坑指南:评估、架构与安全底线
Python爬虫实战:从零编写自动下载壁纸脚本
M7120磨床PLC改造实战:S7-1200与MCGS组态完整记录
阿里把内部用了两年的 AI 代码评审开源了:PR 提交前,先跑这一条命令

今日推荐

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

数据结构——5.顺序栈

发布时间:2026/10/11 1:31:46
数据结构——5.顺序栈 前言链表、顺序表是常规线性表而栈与队列属于操作受限的特殊线性表。本章主要讲解栈的基础概念并实现动态扩容的顺序栈。一、栈基本概念栈定义栈是插入、删除操作受到限制的线性表所有数据操作仅能在同一端完成。相关术语栈顶允许执行插入、删除操作的一端。栈底不允许增删操作的另一端。空栈内部不包含任何数据元素的栈。核心特性栈遵循后进先出Last In First OutLIFO规则最后存入的数据会最先被取出。基本操作名称入栈 / 压栈向栈中插入元素类比子弹装入弹夹。出栈 / 弹栈从栈中删除元素类比子弹从弹夹射出二、代码实现#define _CRT_SECURE_NO_WARNINGS #include stdio.h #include stdlib.h #include string.h #include assert.h #include memory.h #include SeqStack_1.h //1.初始化函数 void Init_SeqStack(SeqStack* psq) { assert(psq ! NULL); psq-base (ELEMTYPE*)malloc(STACK_INIT_SIZE * sizeof(ELEMTYPE)); if (psq-base NULL) exit(EXIT_FAILURE); psq-top 0; psq-stacksize STACK_INIT_SIZE; } //2.入栈 bool Push(SeqStack* psq, ELEMTYPE val) { //0. assert(psq ! NULL); //1.判满。如果满就扩容 if (Full(psq)) { Increase(psq); } //2.直接给top下标格子进行插入值val psq-base[psq-top] val;// //3.更新一下top栈顶指针的指向 psq-top; return true; } //3.出栈 bool Pop(SeqStack* psq) { //0 assert(psq ! NULL); //1.判空 if (Empty(psq)) return false; //2.直接将top指针往后走一下认为刚才的最后一个元素刚才的栈顶元素是无效值 psq-top--; return true; } //4.获取栈顶元素值只瞄一眼栈顶最新元素值是多少别动他 ELEMTYPE Top(SeqStack* psq) { //0 assert(psq ! NULL); //1.判空 if (Empty(psq)) exit(EXIT_FAILURE); //2.获取栈顶元素值 return psq-base[psq-top - 1];//要栈顶指针的下一个指向 } //5.扩容 void Increase(SeqStack* psq) { ELEMTYPE* tmp (ELEMTYPE*)realloc(psq-base, psq-stacksize * sizeof(ELEMTYPE) * 2); if (tmp ! NULL) psq-base tmp; psq-stacksize * 2; } //6.判空 bool Empty(SeqStack* psq) { //0 assert(psq ! NULL); return psq-top 0; } //7.判满 bool Full(SeqStack* psq) { // assert(psq ! NULL); return psq-top psq-stacksize; } //8.打印(用来测试的) void Show(SeqStack* psq) { assert(psq ! NULL); for (int i 0; i psq-top; i) { printf(%d , psq-base[i]); } printf(\n); } //9.清空 void Clear(SeqStack* psq) { assert(psq ! NULL); psq-top 0; } //10.销毁 void Destroy(SeqStack* psq) { assert(psq ! NULL); free(psq-base); psq-base NULL; psq-stacksize 0; psq-top 0; } int main() { SeqStack st; Init_SeqStack(st); Push(st, 12); Push(st, 34); Push(st, 56); Show(st); Pop(st); Show(st); return 0; }三、运行结果四、代码说明本实现为动态顺序栈空间不足时会自动扩容不受初始容量限制。top为栈顶标记始终指向下一个待入栈的位置空栈时top 0。操作规范所有接口均加入断言校验防止空指针访问内存分配失败直接终止程序保证代码健壮性。区分Clear和DestroyClear仅清空元素保留内存Destroy彻底释放动态数组内存。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号