【数据结构】(二)栈与队列

本文深入解析了栈和队列这两种基本数据结构。栈是一种后进先出(LIFO)的表,通过顶部进行元素的添加和移除;队列则是一种先进先出(FIFO)的数据结构,元素从一端加入,从另一端移除。文章详细介绍了它们的实现方式,包括链表和数组实现,并提供了常见操作如push、pop、enqueue和dequeue的具体步骤。

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

栈(stack)

栈(stack)是限制插入和删除操作只能在末尾位置上进行的表,该末尾成为栈的顶(top)。是一种后进先出的表(LIFO,Last In First Out)。

栈

栈的实现

  • 链表实现:使用单向链表实现
  • 数组实现:使用数组实现,是更加常用的方式。由C++中的vector中的back、push_back和pop_back可以很简单地实现一个栈。每个栈需要一个用于存储栈数据的数组(stackArray)和一个记录栈顶索引的值(topOfStack)(当空栈时索引为-1)

常用操作

  • push:入栈操作,将topOfStack+1,然后令stackArray[topOfStack]=newElement;
  • pop:出栈操作,outElement=stackArray[topOfStack],然后将topOfStack-1
  • top:返回栈顶元素,返回stackArray[topOfStack]

所有操作均为**常数时间O(1)**运行

队列(Queue)

队列也是表,是一种先进先出(First In First Out,FIFO)的数据结构,入队列的一端成为队尾,出队列的一端成为队头。

队列

队列的实现

队列也可以使用链表来实现,但通常使用循环数组来实现。

一个队列需要一个用于存储队列中数据的数组queueArray和两个位置front、back,用于记录队列的两端。为了判定队列是否空还是满,通常还增设一个元素currentSize来记录队列中现有的元素个数。

常用操作

  • enqueue:入队列
back = (back+1)%queueArray.size();
queueArray[back]=newElement;
currentSize++;
  • dequeue:出队列
outElement = queueArray[front];
fornt = (front+1)%queueArray.size();
currentSize--;
  • back:返回队尾元素,直接返回queueArray[back]
  • front:返回队头元素,直接返回queueArray[front]

以上操作均以**常数时间O(1)**运行


转载请注明出处,本文永久更新链接:https://blogs.littlegenius.xin/2019/08/08/【数据结构】二栈与队列/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值