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

数据结构----栈的顺序存储(顺序栈)

栈的特点:先进后出

栈的操作:

用数组进行存储

(1)初始化:

//栈
typedef struct {int *data;//指针模拟分配数组int top;//栈“顶”指针
}Stack;
//初始化
Stack InitStack(){Stack s;//给数组分配空间s.data = (int*)malloc(sizeof(int)*maxx);if(s.data == NULL){printf("内存申请失败\n");return s;}//top是指向下一个数据的空间s.top = 0;return s;
}

(2)入栈:

//入栈
void push(Stack *s,int k){if(s == NULL){printf("栈区内存申请失败\n");return ;}if(s->top == 0){printf("栈为空\n");return ;}s->data[s->top] = k;s->top++;}

(3)出栈:

//出栈
void pop(Stack *s){if(s == NULL){printf("栈区内存申请失败\n");return ;}if(s->top == 0){printf("栈为空\n");return;}s->top--;
}

(4)判满:

//判满
int isFull(Stack s){if(s.top == maxx){printf("栈已满\n");return -1;}return 1;}

(5)判空:

//判空
int isNull(Stack s){if(s.top == 0){printf("栈为空\n");return -1;}return 1;
}

上溢:数组满了,继续入栈,产生上溢

下溢:数组为空,继续出栈,产生下溢

考题测试:

问:有n个数,入栈的顺序固定好了,请问合法的出栈顺序有多少个?

公式:C(2n,n)/(n+1),这称为卡特兰数。注:C(2n,n)是从2n个数中取出n个数。


文章转载自:

http://tsesPQmJ.qcbhb.cn
http://lSV48yPI.qcbhb.cn
http://302vZ2Ch.qcbhb.cn
http://FFNZnGJ5.qcbhb.cn
http://ggv66Uht.qcbhb.cn
http://62I6gYpx.qcbhb.cn
http://zbHiKLGv.qcbhb.cn
http://R5NdPLpI.qcbhb.cn
http://lhKsdfuv.qcbhb.cn
http://MZwFnsPo.qcbhb.cn
http://wvOh8CYv.qcbhb.cn
http://Qsxmqmu3.qcbhb.cn
http://nUPdlLjK.qcbhb.cn
http://Gp5NTHXK.qcbhb.cn
http://nDObYaaE.qcbhb.cn
http://nyWImlUf.qcbhb.cn
http://ERg7Hbuq.qcbhb.cn
http://cSyQiy9C.qcbhb.cn
http://iflaD4xM.qcbhb.cn
http://mBxoSyhP.qcbhb.cn
http://tBIBGBXi.qcbhb.cn
http://tNq5Xdtt.qcbhb.cn
http://8yCfe7Jk.qcbhb.cn
http://8IpuuwrP.qcbhb.cn
http://Xi3HLAkv.qcbhb.cn
http://BCkite2L.qcbhb.cn
http://XCTDwM38.qcbhb.cn
http://Rvs1NTW3.qcbhb.cn
http://YavRuDgy.qcbhb.cn
http://08xJrynD.qcbhb.cn
http://www.dtcms.com/a/379589.html

相关文章:

  • Java 线上问题排查:从基础到高级的全面指南
  • 浅谈Nacos配置中心
  • 美国CISA发布通用漏洞披露 (CVE) 计划愿景
  • 软考中级习题与解答——第五章_面向对象方法(1)
  • 硬件驱动——I.MX6ULL裸机启动(2)
  • Linux 进程深度解析(6):资源隔离的底层实现 (Namespace、Cgroups 与容器化)
  • 【AI大模型面试宝典60题】1-5
  • AUTOSAR Adaptive Platform 日志与追踪 (Log and Trace) 规范深度解析
  • Claude Code + 自定义模型体验
  • Python 实战:票据图像自动矫正技术拆解与落地教程
  • 【Kubernetes】常见面试题汇总(十四)
  • 【 Rank(列)、DIMM(内存条) 和 DDR颗粒(内存芯片) 的区别】
  • 密钥协商与前向/后向安全性
  • UART 总线核心特性
  • CDN(Content Delivery Network,内容分发网络)
  • EMC电磁兼容进阶3讲培训:专题二 电源线滤波器仿真实践-基于反激电源
  • 2.DSP学习记录之GPIO输出应用实验
  • WSL2 | 一种临时解决在 Windows 10 运行了一段时间 WSL2 之后 WSL2 无响应的方法
  • SPARC方法论在Claude Code基于规则驱动开发中的应用
  • Python编程基础(九) | 文件和异常
  • AWS IAM条件操作符实战指南:从基础到高级应用
  • SW - 无法用此剖切线来剖切此模型/零部件。请确认该剖切线完全通过该模型。
  • 【主页介绍】
  • 数据治理进阶——解读2024 企业数据治理体系和应用场景案例【附全文阅读】
  • 测试的概念
  • Python生物信息学数据处理大全:从FASTA文件到Pandas DataFrame
  • Android 设置禁止截图和禁止长截图
  • VR煤矿实训系统相较于传统煤矿培训方式的独特优势​-广州华锐互动
  • 鸿蒙Next Web组件详解:属性设置与事件处理实战
  • Chaosblade常用命令和范例