队列知识点

本文介绍了循环队列的概念,包括空队列、满队列和入队操作,并讨论了假溢出现象。同时,详细阐述了银行家算法,这是一种避免死锁的策略,通过计算资源分配的安全性来确保系统稳定性。文章还涉及了二叉树的相关类型,如完全二叉树和最优二叉树。

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

循环队列:队列从0开始,假如有0、1、2、3、4、5、6、7、8区域,每个区域可能有自己的名字
   空循环队列:首指针和尾指针都指向0区域,尾部指针的区域有值
   满循环队列:首指针和尾指针都指向8区域,尾部指针的区域除满循环队列外都没有值
   
   入队:尾部指针+1
   
   循环队列判断是否满:rear 、front指向同一区域,且不为空
   
   循环队列计算大小
   
容量和队列长度


   假溢出:顺序存储有1、2、3、4、5其中前4个都有值,只有5是空区域,
           现在出队,1、2两个区域,在入队5、6,明明有1、2、5空但是6却没有地方
           这种现象就是假溢出
           
    循环队列为空的时候,Rear、Front不一定都是0,也可能都是1

---------------------------------------------------------------------

   著名的银行家算法,最早是由Dijkstra提出来的。它是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。

    银行家算法最重要的就是判断是可用资源和仍需资源之间的关系,如果可用资源数大于人需资源数,那么我们认为这个进程就是可以执行的,也是安全的,反之,便是不安全的。所以重中之重的是找到各种资源数。

对进程的判断遵循以下步骤:

1.计算系统开始时所有的资源数,即开始的可用资源数;

2.在仍需资源数和可用资源数中作比较,找到符合条件的进程,最后修改进程执行完毕时系统的可用资源数;

3.继续比较剩余进程和可用资源数,找到下边可以执行的进程;

4.依次类推;

--------------------------------------------------------------

完全二叉树:如果缺少子结点,只能从最右下方开始缺
满二叉树:每个结点都是满的
线索二叉树:就是普通二叉数排序后的,已经线索化了,可以通过前序、中序、后序进行遍历
最优二叉树: 带权路径长度最小(即代价最小)的二叉树称为最优二叉树或哈夫曼树
  给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树。简单的认为就是叶子节点的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿365

祝你好运,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值