小学期 9.10 - 9.11作业

9.10作业

225.用队列实现栈

9.11作业

栈和队列的基础知识

一、栈

  1. 定义栈是一种特殊的线性表,它只能在一端进行插入和删除操作,这一端被称为栈顶(top),另一端则被称为栈底(bottom)。
  2. 特点后进先出(Last In First Out,LIFO):最后进入栈的元素最先被弹出。
  3. 基本操作入栈(Push):将元素添加到栈顶。出栈(Pop):移除并返回栈顶元素查看栈顶元素(Peek):返回栈顶元素,但不移除它。判断栈是否为空(IsEmpty):如果栈中没有元素,则返回 true,否则返回 false。
  4. 存储结构

顺序栈:使用数组来实现栈,通过一个变量来记录栈顶元素的位置。链式栈:通过链表来实现栈,每个节点包含数据域和指向下一个节点的指针,栈顶指针指向链表的头部。

       5.应用场景

函数调用栈:在程序执行过程中,当一个函数调用另一个函数时,当前函数的执行状态会被保存到栈中,当被调用函数执行完毕后,再从栈中恢复原来函数的执行状态。

表达式求值:例如将中缀表达式转换为后缀表达式,以及对后缀表达式求值的过程中都可以利用栈来实现。

括号匹配:检查表达式中的括号是否匹配,如在编程中检查代码中的括号是否正确配对。

二、队列

  1. 定义队列也是一种线性表,它允许在一端进行插入操作(队尾,rear),在另一端进行删除操作(队头,front)。
  2. 特点先进先出(First In First Out,FIFO):最先进入队列的元素最先被取出。
  3. 基本操作

入队(Enqueue):将元素添加到队尾。

出队(Dequeue):移除并返回队头元素。

查看队头元素(Peek):返回队头元素,但不移除它。

判断队列是否为空(IsEmpty):如果队列中没有元素,则返回 true,否则返回 false。

       4.存储结构

顺序队列:使用数组实现,需要两个指针分别指向队头和队尾。但顺序队列可能会出现假溢出的情况,为解决此问题可以采用循环队列。

链式队列:通过链表实现,包含一个头指针和一个尾指针,分别指向链表的头节点和尾节点。

       5.应用场景

广度优先搜索(BFS)算法:在图的遍历中,BFS 使用队列来存储待访问的节点。

打印机缓冲:当多个文档需要打印时,它们会按照提交的先后顺序在队列中排队等待打印。 操作系统中的进程调度:按照进程到达的先后顺序进行调度执行。

1047.删除字符串中的所有相邻重复项

150.逆波兰表达式求值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值