【笔记】栈与队列的基本概念 Stack & Queue - 20240304

本文详细介绍了栈和队列这两种基础数据结构,包括它们的定义、操作方法(如初始化、判断空、进栈/出栈、读取队头等),以及它们在LIFO和FIFO模式下的应用。通过实例说明如何用栈实现队列。

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

一、栈的基本概念

1、栈的定义

栈(Stack)是只允许在一端进行插入或删除的线性表。

  • 栈顶(Top): 线性表允许进行插入删除的那一端。
  • 栈底(Bottom): 固定的,不允许进行插入和删除的另一端。
  • 空栈: 不含任何元素的空表。

栈又称为后进先出(Last In First Out)的线性表,简称 LIFO 结构

2、栈的常见基本操作
  • InitStack(&S): 初始化一个空栈S。
  • StackEmpty(S): 判断一个栈是否为空,若栈为空则返回true,否则返回false。
  • Push(&S, x): 进栈(栈的插入操作),若栈S未满,则将x加入使之成为新栈顶。
  • Pop(&S, &x): 出栈(栈的删除操作),若栈S非空,则弹出栈顶元素,并用x返回。
  • GetTop(S, &x): 读栈顶元素,若栈S非空,则用x返回栈顶元素。
  • DestroyStack(&S): 栈销毁,并释放S占用的存储空间(“&”表示引用调用)。
    在这里插入图片描述

二、队列的基本概念

1、队列的定义

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

  • 队头(Front): 允许删除的一端,又称队首。
  • 队尾(Rear): 允许插入的一端。
  • 空队列: 不包含任何元素的空表。

队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。

2、队列的常见基本操作
  • InitQueue(&Q): 初始化队列,构造一个空队列Q。
  • QueueEmpty(Q): 判队列空,若队列Q为空返回true,否则返回false。
  • EnQueue(&Q, x): 入队,若队列Q未满,将x加入,使之成为新的队尾。
  • DeQueue(&Q, &x): 出队,若队列Q非空,删除队头元素,并用x返回。
  • GetHead(Q, &x): 读队头元素,若队列Q非空,则将队头元素赋值给x。

在这里插入图片描述


参考资料:
  1. 数据结构:栈和队列(Stack & Queue)【详解】
  2. 用栈实现队列(清晰图解)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值