当前位置: 首页 > news >正文

栈数据结构回顾

特性top指向栈顶数据top指向栈顶数据的下一个数据
初始值-10
策略先移动指针再存储数据先存储数据再移动指针
#pragma once #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h> typedef int STDataType; typedef struct Stack { STDataType* a; int top; int capacity; }ST; // 初始化和销毁 void STInit(ST* pst); void STDestroy(ST* pst); // 入栈 出栈 void STPush(ST* pst, STDataType x); void STPop(ST* pst); // 取栈顶数据 STDataType STTop(ST* pst); // 判空 bool STEmpty(ST* pst); // 获取数据个数 int STSize(ST* pst);
#include "Stack.h" void STInit(ST* pst){ assert(pst); pst->a=NULL; pst->top=pst->capacity=0; } void STDestroy(ST* pst){ assert(pst); free(pst->a); pst->a=NULL; pst->top=pst->capacity=0; } // 入栈 出栈 void STPush(ST* pst, STDataType x){ assert(pst); if(pst->top==pst->capacity){ int newcapacity=(pst->capacity==0 ? 4 : 2*pst->capacity); STDataType* tmp=(STDataType*)realloc(pst->a,newcapacity*sizeof(STDataType)); if(tmp==NULL){ perror("realloc fail"); return; } pst->a=tmp; pst->capacity=newcapacity; } pst->a[pst->top]=x; pst->top++; } void STPop(ST* pst){ assert(pst); assert(pst->top>0); pst->top--; } // 取栈顶数据 STDataType STTop(ST* pst){ assert(pst); assert(pst->top>0); return pst->a[pst->top-1]; } // 判空 bool STEmpty(ST* pst){ assert(pst); return pst->top==0; } // 获取数据个数 int STSize(ST* pst){ assert(pst); return pst->top; }
http://www.jsqmd.com/news/475432/

相关文章:

  • 【技术分享】PostgreSQL+pgvector在遥感影像检索的AI 赋能实践
  • Flutter 三方库 webfeed_plus 的鸿蒙化适配指南 - 全能 RSS 与 Atom 解析、支持 ITunes 扩展内容、打造鸿蒙端极致阅读神器
  • SpringCloudAlibaba第一章(Nacos服务注册) -2024
  • RAG动态切片策略与重叠机制
  • 什么是 Java 中的指令重排?
  • psd文件解析
  • java毕业设计——基于JSP+sqlserver的房产中介系统设计与实现(毕业论文+程序源码)——房产中介系统
  • 01 「梅花七月香」嵌入式 Linux 应用秋招经验分享 - 个人背景与学习经历
  • java毕业设计——基于JSP+sqlserver的房屋租赁管理系统设计与实现(毕业论文+程序源码)——房屋租赁管理系统
  • Flutter 三方库 connectme 鸿蒙适配指南 - 实现高性能全双工 WebSocket 通讯、在 OpenHarmony 上打造极低时延实时防线实战
  • Management By Objectives (MBO) - 目标管理
  • 教师必备!告别手忙脚乱,这些软件一键批量发成绩
  • Flutter 三方库 flutter_data_generator 鸿蒙适配指南 - 实现自动化测试数据生产、在 OpenHarmony 上打造极致高效的研发脚手架实战
  • java毕业设计——基于JSP+sqlserver的高校学生考勤管理系统设计与实现(毕业论文+程序源码)——考勤管理系统
  • 第十章 微积分:贯穿多领域的统一思维与落地价值
  • 车流量计数、不同车型统计算法
  • SimpleBar终极指南:5分钟学会自定义滚动条设计
  • 吃透数据库范式!从 1NF 到 BCNF,零基础也能秒懂的核心笔记
  • Ground Rules
  • Synergy服务端显示异常解决办法
  • JVM学习笔记(2) 第一部分 走近java 第1章 走近java
  • PowerLine
  • gRPC协议在TOMs中的应用:跨平台服务通信的高性能实现
  • java毕业设计——基于JSP+sqlserver的高校智能排课系统设计与实现(毕业论文+程序源码)——高校智能排课系统
  • java毕业设计——基于JSP+sqlserver的公司办公信息管理系统设计与实现(毕业论文+程序源码)——办公信息管理系统
  • Visual Studio 2015 - Start Without Debugging 快捷图标
  • pdfminer.six扩展开发:如何自定义布局分析规则
  • 推荐一款开源利器:Linux Router
  • java毕业设计——基于JSP+sqlserver的环境美容服务公司网站设计与实现(毕业论文+程序源码)——公司网站
  • 掌握Linux路由器:一键设置的强大工具Linux-router