数据结构-DAY05

一、栈的概念
1.栈是限定仅在表尾进行插入和删除操作的线性表。先进后出、后进先出
        栈顶:允许操作的一端
        栈底:不允许操作的一端入栈,出栈。
        栈分为:顺序栈 链式栈
2.栈结构是在堆区创建的
3.优先级就是通过栈来解决的
先进后出,后进先出。

二、队列的概念
1.队列是只允许在一段进行插入,而在另一端进行删除操作的线性表。
        允许插入的称谓队尾,允许删除的一端队头。
        队列分为:顺序队列,循环队列,
        常用操作:出队、入队。
        先进先出,FIFO
2.满队:尾 + 1 = 头
3.空队:尾 = 头
4.队列又叫缓冲

三、练习与例题
1.创建栈

LinkStack *CreateLinkStack()
{LinkStack *ls = (LinkStack *)malloc(sizeof(LinkStack));if(NULL == ls){fprintf(stderr, "CreateLinkStack malloc");return NULL;}ls->top = NULL;ls->clen = 0; return ls;
}

2.入栈(头插法)

int PushLinkStack(LinkStack *ls, DATATYPE *data) //入栈
{LinkStackNode *newnode = (LinkStackNode *)malloc(sizeof(LinkStackNode));if(NULL == ls){fprintf(stderr, "CreateLinkStack malloc");return 1;}int len = GetSizeLinkStack(ls);memcpy(&newnode->data, data, sizeof(DATATYPE));newnode->next = NULL;newnode->next = ls->top;ls->top = newnode;ls->clen++;return 0;
}

3.销毁栈区

int DestoryLinkStack(LinkStack *ls)
{LinkStackNode *tmp = ls->top;while(tmp){ls->top = ls->top->next;free(tmp);tmp = ls->top;}free(ls);return 0;
}

4.获取栈区的内容

DATATYPE *GetTopLinkStack(LinkStack *ls)
{if(IsEmptyLinkStack(ls)){return NULL;}return &ls->top->data;
}

5.出栈(头删)

int PopSeqStack(LinkStack *ls) // 头删
{if(IsEmptyLinkStack(ls)){return 1;}LinkStackNode *tmp = ls->top;ls->top = ls->top->next;free(tmp);ls->clen--;return 0;
}

6.主函数运行

int main(int argc, char *argv[])
{LinkStack *ls = CreateLinkStack();DATATYPE data[] = {{"maodan", 'F', 20, 80},  {"xiaofan", 'M', 21, 83},{"jett", 'F', 22, 83},   {"viper", 'M', 40, 90},{"runa", 'M', 41, 92}, {"gpw", 'F', 32, 63},};int i;for(i = 0; i < 6; ++i){PushLinkStack(ls, &data[i]);} int len = GetSizeLinkStack(ls);for(i = 0; i < len; ++i){DATATYPE *tmp = GetTopLinkStack(ls);printf("%s %c %d %d\n",tmp->name,tmp->sex,tmp->age,tmp->score);PopSeqStack(ls);}DestoryLinkStack(ls);ls = NULL;return 0;
}

7.队列为空

int IsEmptySeqQue(SeqQueue *sq)
{ return sq->head == sq->tail; 
}

8.队列为满

int IsFullSeqQue(SeqQueue *sq) 
{ return (sq->tail + 1) % sq->tlen == sq->head; 
}

9.入队

int EnterSeqQue(SeqQueue *sq, DATATYPE *data) 
{if (IsFullSeqQue(sq)) {fprintf(stderr, "EnterSeqQue full\n");return 1;}memcpy(&sq->array[sq->tail], data, sizeof(DATATYPE));sq->tail = (sq->tail + 1) % sq->tlen;return 0;
}

10.销毁队列

int DestroySeqQue(SeqQueue *sq) 
{free(sq->array);free(sq);return 0;
}

11.创建队列

SeqQueue *CreateSeqQue(int len) 
{SeqQueue *sq = (SeqQueue *)malloc(sizeof(SeqQueue));if (NULL == sq) {fprintf(stderr, "CreateSeqQue malloc\n");return NULL;}sq->array = malloc(sizeof(DATATYPE) * len);if (NULL == sq->array) {fprintf(stderr, "CreateSeqQue malloc\n");return NULL;}sq->head = 0;sq->tail = 0;sq->tlen = len ;return sq;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 153. Find Minimum in Rotated Sorted Array

题目描述 分析 可以发现一个规律&#xff1a; 假如整个数组最后一个元素是x。 最小值左侧&#xff08;不含最小值自己&#xff09;的元素全部大于x。 最小值右侧&#xff08;包含最小值自己&#xff0c;不包含x&#xff09;的元素全部小于x。 如果整个数组是有序的&#x…

如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例)

如何在 AOSP 中判断一个源文件属于哪个模块&#xff08;以 CameraService 为例&#xff09; 在 AOSP 开发中&#xff0c;经常需要修改底层 C 代码&#xff08;如 CameraService.cpp&#xff09;&#xff0c;但很多人会遇到一个问题&#xff1a; 我修改了某个 .cpp 文件&#x…

云原生主要架构模式

云原生(Cloud Native)是一种利用云计算的优势来构建和运行可扩展、弹性和高效应用程序的方法。它不仅仅是技术的集合,更是一种架构和设计理念。本文将围绕你提出的几部分,深入探讨云原生主要的架构模式,帮助你理解如何利用这些模式构建现代化的应用。 1. 服务化架构模式(…

深入理解MySQL结构与执行流程

标题&#xff1a;深入理解MySQL结构与执行流程 MySQL以其开源、灵活性和强大的功能成为了最受欢迎的关系型数据库管理系统之一。无论是初创公司还是大型企业&#xff0c;都广泛使用MySQL来存储和管理数据。为了帮助大家更好地理解和优化MySQL的性能&#xff0c;本文将详细讲解…

Python web 开发 Flask HTTP 服务

Flask 是一个轻量级的 Web 应用框架&#xff0c;它基于 Python 编写&#xff0c;特别适合构建简单的 Web 应用和 RESTful API。Flask 的设计理念是提供尽可能少的约定和配置&#xff0c;从而让开发者能够灵活地构建自己的 Web 应用。 https://andi.cn/page/622189.html

BMVC2023 | 多样化高层特征以提升对抗迁移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 GitHub链接 本文 “Diversifying the High-level Features for better Adve…

虚幻引擎5-Unreal Engine笔记之摄像头camera

虚幻引擎5-Unreal Engine笔记之摄像头camera code review! 目录 第一部分&#xff1a;摄像头的基础概念 1.1 UE5 中摄像头的定义与作用1.2 UE5 中摄像头的类型与分类 第二部分&#xff1a;摄像头的代码结构与分类 2.1 摄像头是类还是组件&#xff1f;2.2 组件的本质&#xff…

【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页

PageRank 是 Google 创始人拉里佩奇&#xff08;Larry Page&#xff09;和谢尔盖布林&#xff08;Sergey Brin&#xff09;在 1998 年提出的一种网页排名算法&#xff0c;用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…

React Flow 数据持久化:Django 后端存储与加载的最佳实践(含详细代码解析)

在构建 React Flow 应用时&#xff0c;前端呈现的节点与连线构成的可视化流程只是冰山一角&#xff0c;其背后的数据持久化与灵活调取才是确保应用稳定运行、支持用户数据回溯与协作的关键。因此&#xff0c;后端存储与加载 React Flow 信息的环节&#xff0c;就如同整个应用的…

深度学习中的归一化:提升模型性能的关键因素

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型辅助完成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认…

Pandas:Series和DataFrame的概念、常用属性和方法

本文目录&#xff1a; 一、Series和Dataframe的概念二、创建Series对象三、创建Dataframe对象&#xff08;一&#xff09;Series1.Series的常用属性总结如下&#xff1a;2.Series的常用方法总结如下&#xff1a; &#xff08;二&#xff09;Dataframe1.Dataframe的常用属性2.Da…

数据中心Overlay解决方案

文档围绕数据中心 Overlay 解决方案展开,指出数据中心向大集中、虚拟化、云业务演进,传统架构存在网络规划复杂、弹性不足、业务扩展受限等问题。Overlay 网络在物理网络上构建虚拟网络,实现名址分离、网络与物理解耦,支持业务灵活部署。方案采用VXLAN 技术(如 SDN 控制模…

SpringBoot 项目实现操作日志的记录(使用 AOP 注解模式)

本文是博主在做关于如何记录用户操作日志时做的记录&#xff0c;常见的项目中难免存在一些需要记录重要日志的部分&#xff0c;例如权限和角色设定&#xff0c;重要数据的操作等部分。 博主使用 Spring 中的 AOP 功能&#xff0c;结合注解的方式&#xff0c;对用户操作过的一些…

以太联 - Intellinet 闪耀台北 SecuTech 国际安全科技应用博览会

2025 年 5 月 7 日至 9 日&#xff0c;台北 SecuTech 国际安全科技应用博览会现场热闹非凡&#xff0c;以太联 - Intellinet 携旗下前沿产品与解决方案精彩亮相&#xff0c;成为展会上一道亮丽的风景线&#xff0c;吸引了众多业内人士的目光&#xff0c;收获了广泛关注与高度认…

【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动

文章目录 前言一、HUAWEI MateBook Fold 非凡大师&#xff08;一&#xff09;非凡设计&#xff08;二&#xff09;非凡显示&#xff08;三&#xff09;非凡科技&#xff08;四&#xff09;非凡系统&#xff08;五&#xff09;非凡体验 二、HUAWEI MateBook Pro三、预热&#xf…

OSA快速上手

我第一次接触OSA&#xff0c;第一感觉就是庞杂&#xff0c;相关的文档和资料基本都是英文&#xff0c;运行下示例场景&#xff0c;效果和效率确实很香。本文仅针对初次接触OSA、望而却步的朋友们进行快速运用的引导。 首先&#xff0c;找个安装包&#xff0c;导入项目后&#…

RK3568下编译解决未定义符号而报错终止链接

现象&#xff1a;我从rk3568板子上导出来了一个 libsqlite3.so 然后编译连接就会报这样的错误 解决办法有多种&#xff0c;以前我遇到这种情况&#xff0c;我都是使用sqlite3源码从新编译一份使用&#xff0c;并替换到板子上。 现在我是用另一种方法&#xff1a;增加编译参数 …

LSTM-Attention混合模型:美债危机与黄金对冲效率研究

摘要&#xff1a;本文依托多维度量化分析框架&#xff0c;结合自然语言处理&#xff08;NLP&#xff09;技术对地缘文本的情绪挖掘&#xff0c;构建包含宏观因子、风险溢价因子及技术面因子的三阶定价模型&#xff0c;对当前黄金市场的波动特征进行归因分析。实证结果显示&…

Spring Boot 多参数统一加解密方案详解:从原理到实战

Spring Boot 多参数统一加解密方案详解:从原理到实战 一、前言:为什么需要参数加解密? 在现代Web开发中,数据安全传输是基本要求。特别是涉及敏感数据(如用户隐私、支付信息等)时,仅靠HTTPS还不够,我们需要对关键参数进行二次加密。本文将详细介绍Spring Boot中实现多…

【css】【面试提问】css经典问题总结

第一章 CSS基础相关提问 1.1 选择器问题 1.1.1 选择器优先级疑问 1. 优先级规则 内联样式&#xff1a;直接写在 HTML 标签的 style 属性中的样式&#xff0c;优先级最高。例如&#xff1a; <p style"color: red;">这是一段红色文字</p>这里文字的颜…