栈和队列---

本文介绍了栈和队列这两种基本数据结构。栈遵循后进先出(LIFO)原则,常用于表达式求值、递归等场景,数组和链表均可实现,但数组更优。队列则遵循先进先出(FIFO)原则,适用于任务调度、广度优先搜索等,通常用单链表实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈的概念及结构 栈: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除 操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守 后进先出 LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。

栈的实现(动态) 首先,这是一个线性表实现的,所以我们有两个选择:顺序表,也就是数组实现;或者链表实现。

栈的实现 —— 数组好还是链表好?

其实我们栈的插入和删除相当于尾插尾删用数组的唯一缺陷就是不够的时候要增容 用单链表就不太好了:尾插尾删要找尾如果不找尾,用尾指针记录尾结点。但是即便这样,我们也要找到前一个,所以要不就使用双链表实现。如果一定想使用单链表,把把栈顶栈底反一下,用头插,不要用尾插即可 所以用单链表也是ok的

如果用尾作栈顶,那么用双链表好

如果要用单链表实现,那么就用让头作栈顶 总和各方面的要素,使用数组(顺序表)实现是最合适的。

队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有 先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为 队头。只一端入数据,没必要用双向循环链表,使用单链表。

队列的应用场景

1、排队,保持绝对的公平性

2、广度优先遍历 BFS

———————————————— 版权声明:本文为优快云博主「裙下的霸气」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:栈和队列_裙下的霸气的博客-优快云博客————————————————

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值