news 2026/4/12 0:46:47

数据结构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/3/29 5:21:52

2026本科必备9个降AI率工具测评榜单

2026本科必备9个降AI率工具测评榜单 降AI率工具测评&#xff1a;为何你需要一份专业榜单&#xff1f; 在2026年的学术环境中&#xff0c;论文的AI率检测已经成为毕业和科研的关键门槛。许多学生在提交前才发现自己的论文AI率超标&#xff0c;甚至被直接打回修改&#xff0c;严重…

作者头像 李华
网站建设 2026/4/11 14:18:32

调色板示例颜色数据获取-基于 Flutter × OpenHarmony

文章目录调色板示例颜色数据获取-基于 Flutter OpenHarmony前言背景Flutter Harmony OpenHarmony 跨端开发介绍开发核心代码代码解析心得总结调色板示例颜色数据获取-基于 Flutter OpenHarmony 前言 在移动端开发中&#xff0c;颜色调色板是 UI 设计和视觉一致性的核心元素…

作者头像 李华
网站建设 2026/4/4 12:59:37

Python中的异常处理

异常 """异常(Exception):1.什么是异常&#xff1f;python运行时&#xff0c;发生的错误&#xff0c;而导致程序最终无法执行&#xff0c;异常&#xff01;思考&#xff1a;有没有出现错误&#xff1f;编译过程中的错误&#xff0c;红色波浪线运行过程中的错误&…

作者头像 李华