深入解析栈:数据结构与系统栈

栈

定义:栈是限定仅在表尾进行插入和删除操作的线性表

特性:先进后出,后进先出

应用:递归,回溯问题,和优先级有关的问题

区别:数据结构中的栈和系统中栈的关系

工作原理,一样 先进后出

系统栈,是0-3G内存中的一段(8M),存储函数的调用关系,局部变量,参数,返回地址

数据结构栈,内存空间在堆空间开辟。适用场景更广

  1. 栈顶:允许操作的一端
  2. 栈底:不允许操作的一端
  3. 入栈,出栈

栈的存放方式

  1. 顺序存储
  1. 链式存储

  2. // 适配器

  3. #ifndef LINKSTACK_H

  4. #define LINKSTACK_H

  5. typedef struct person

  6. {

  7. char c;

  8. int row;

  9. int col;

  10. } DATATYPE;

  11. typedef struct stacknode

  12. {

  13. DATATYPE data;

  14. struct stacknode *next;

  15. } LinkStackNode;

  16. typedef struct

  17. {

  18. LinkStackNode *top;

  19. int clen;

  20. } LinkStack;

  21. 栈的分类

  22. LinkStack* CreateLinkStack();

  23. int PushLinkStack(LinkStack*ls,DATATYPE*newdata);

  24. int PopLinkStack(LinkStack*ls);

  25. DATATYPE* GetTopLinkStack(LinkStack*ls);

  26. int GetSizeLinkStack(LinkStack*ls);

  27. int IsEmptyLinkStack(LinkStack*ls);

  28. int DestroyLinkStack(LinkStack*ls);

  29. #endif

栈的分类

  1. 1 空增栈
  2. 2 空减栈
  3. 3 满增栈
  4. 4 满减栈
  5. 增栈,新增元素元素后。Top指向的内存地址慢慢变大
  6. 减栈,新增元素元素后。Top指向的内存地址慢慢变小
  7. 空栈, top指针指向的地址,是新元素待插入的位置
  8. 满栈, top指针指向的地址,是最后入栈的元素的位置
相关推荐
外收内放3 分钟前
FastAPI猜字谜实战(5):会话管理
开发语言·python·学习·fastapi
Ai-_Man4 分钟前
Microsoft Copilot对话数据怎么导入到另外一个Microsoft Copilot账号里去?AI导出鸭
开发语言·javascript·人工智能·microsoft·chatgpt·ecmascript·copilot
Hello World . .4 分钟前
【嵌入式学习笔记 Day 1】
linux·数据结构·笔记
H.莓飛10 分钟前
【数据结构】归并与外排序
linux·服务器·c语言·开发语言·数据结构·visual studio
文丑颜不良啊10 分钟前
LeetCode851~875题目解析
java·leetcode
技术老孙12 分钟前
给 Agent 装上对话框 —— AgentScope-Java 接入 Spring Boot 与 SSE 流式实战
java·开发语言·spring boot
指剑1 小时前
亚麻云之EC2——安全组与密钥对:SSH 端口怎么开才安全,Permission denied (publickey) 和连接超时排查
java·安全·ssh
星夜离尘568 小时前
MATLAB 工程实验:不等间隔流量积分,先把缺口与覆盖率说清楚
开发语言·matlab·时间戳·数据质量·数值积分
_Evan_Yao8 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
Ai-_Man9 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节