news 2026/9/3 3:31:45

数据结构3.0 栈、队列和数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构3.0 栈、队列和数组

一、栈的基本概念

①栈的定义

②栈的基本操作

③常考题型

④小结

二、栈的顺序存储实现

①顺序栈的定义

②初始化操作

③进栈操作

④出栈操作

⑤读栈顶元素操作

⑥共享栈

⑦小结

三、栈的链式存储实现

①链栈的定义

②小结

#include <stdio.h> #include <stdlib.h> // 链栈的结点结构 typedef struct LinkNode { int data; // 数据域 struct LinkNode *next; // 指针域 } LinkNode; // 链栈结构(不带头结点,栈顶指针直接指向栈顶元素) typedef struct { LinkNode *top; // 栈顶指针 } LinkStack; // 1. 初始化链栈 void InitStack(LinkStack &S) { S.top = NULL; // 空栈时栈顶指针为NULL } // 2. 判断栈是否为空 bool StackEmpty(LinkStack S) { return S.top == NULL; } // 3. 进栈操作(增) bool Push(LinkStack &S, int x) { // 生成新结点 LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode)); if (p == NULL) return false; // 内存分配失败 p->data = x; p->next = S.top; // 新结点的next指向原栈顶 S.top = p; // 更新栈顶指针 return true; } // 4. 出栈操作(删) bool Pop(LinkStack &S, int &x) { if (StackEmpty(S)) return false; // 栈空,出栈失败 LinkNode *p = S.top; // 指向栈顶结点 x = p->data; // 获取栈顶元素 S.top = S.top->next; // 栈顶指针下移 free(p); // 释放原栈顶结点 return true; } // 5. 获取栈顶元素(查) bool GetTop(LinkStack S, int &x) { if (StackEmpty(S)) return false; // 栈空,获取失败 x = S.top->data; return true; } // 测试函数 int main() { LinkStack S; InitStack(S); // 进栈 Push(S, 1); Push(S, 2); Push(S, 3); // 获取栈顶 int topVal; if (GetTop(S, topVal)) { printf("栈顶元素:%d\n", topVal); } // 出栈 int popVal; while (Pop(S, popVal)) { printf("出栈元素:%d\n", popVal); } // 判空 if (StackEmpty(S)) { printf("栈已为空\n"); } return 0; }

四、队列的基本概念

①队列的定义

②队列的基本操作

③小结

五、队列的顺序实现

①初始化操作

②入队操作

③循环队列

④循环队列——入队操作

⑤循环队列——出队操作

⑥判断队列已满/已空

⑦小结

六、队列的链式实现

①初始化(带头结点)

②初始化(不带头结点)

③入队(带头结点)

④入队(不带头结点)

⑤出队(带头结点)

⑥出队(不带头结点)

⑦队列满的条件

⑧小结

七、双端队列

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:53:54

社交网络数据科学:完整项目实战指南

社交网络数据科学&#xff1a;完整项目实战指南 引言 痛点引入&#xff1a;你可能遇到的「社交网络分析困境」 作为数据科学爱好者&#xff0c;你是否曾有过这样的困惑&#xff1a; 想学社交网络分析&#xff0c;但看着「图论」「中心性」「社区发现」等术语望而却步&#…

作者头像 李华
网站建设 2026/9/3 1:15:57

全栈工程师的陷阱:什么都会,什么都不精

全栈工程师的陷阱&#xff1a;什么都会&#xff0c;什么都不精引言&#xff1a;全栈工程师的时代神话在当今快速发展的技术世界中&#xff0c;“全栈工程师”已成为一个备受追捧的职业标签。从硅谷到中关村&#xff0c;从创业公司到科技巨头&#xff0c;这一头衔似乎代表着技术…

作者头像 李华
网站建设 2026/9/2 22:45:40

大模型学习路线图:从基础到实战,程序员必看的学习指南_大模型学习路线(2026最新)神仙级大模型教程分享

文章提供了大模型学习的七个阶段路线图&#xff1a;从数学编程基础到机器学习、深度学习、NLP&#xff0c;再到大规模语言模型和应用开发&#xff0c;最后是持续学习。每个阶段包含关键知识点和学习资源&#xff0c;还提供了视频教程、技术文档和面试题等额外资源&#xff0c;帮…

作者头像 李华