数据结构之栈和队列

栈(Stack)是一种后进先出(Last In First Out, LIFO)的数据结构,它遵循两个主要原则:

  1. 后进先出(LIFO):最后一个被“压入”(push)栈的元素总是第一个被“弹出”(pop)的元素。换句话说,最顶部的元素总是最先被移除的。

  2. 只能在一端操作:栈只有一个操作端点,称为栈顶(top)。所有的元素都只能通过栈顶进行添加或移除。栈底(bottom)是栈的固定端点,元素不能从栈底添加或移除。

栈的常见操作包括:

  • push(元素):将元素添加到栈顶。
  • pop():移除并返回栈顶的元素。如果栈为空,这个操作通常会导致错误或异常。
  • peek() 或 top():返回栈顶的元素,但不移除它。
  • isEmpty():检查栈是否为空。
  • size():返回栈中元素的数量。

栈在计算机科学中有许多应用,包括函数调用、表达式求值、内存分配等。例如,在函数调用时,计算机使用栈来存储局部变量和返回地址,这样当函数返回时,它可以恢复调用它的函数的状态。


队列(Queue)是一种先进先出(First In First Out, FIFO)的数据结构。对于队列的操作,你有两个主要选项,但通常我们只考虑其中一种,即“在尾部添加(enqueue),在头部移除(dequeue)”。

队列的常见操作包括:

  • enqueue(元素):将元素添加到队列的尾部(或称为“后端”或“尾部”)。
  • dequeue():从队列的头部(或称为“前端”或“头部”)移除并返回元素。如果队列为空,这个操作通常会导致错误或异常。
  • front():返回队列头部的元素,但不移除它。
  • isEmpty():检查队列是否为空。
  • size():返回队列中元素的数量。

队列在计算机科学中也有许多应用,例如任务调度、打印任务队列、消息传递等。在这些应用中,元素按照它们到达的顺序进行处理,先到达的元素先被处理。

至于你提到的“在头部添加,在尾部移除”,这不是队列的典型操作,这样的数据结构通常被称为“双端队列”(Deque)或“双端链表”。双端队列允许在两端添加和移除元素,但它仍然遵循先进先出的原则,只是提供了更多的灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值