队列

/*
队列:分配一块连续的存储单元存放队列中的元素,并附设两个指针,分别指示队头元素,和队尾元素的存储位置,分别称为队头指针和队尾指针。
判断是否为空的条件:Q.front==Q.rear==0;
但是不能用Q.rear==maxSize来作为判断队列为空的条件。
有可能出现假溢出,




栈的应用:括号匹配,进制转换,迷宫求解
递归中的栈:
程序每一个递归调用自己的时候,都要创建一个工作记录,工作记录中是:递归调用的返回地址,使用的局部变量,传入的实际参数的副本等。
这些工作记录被保存成栈的形式,每次递归调用的时候,为该层创建的工作记录放在栈顶,使得存放的信息当前可用;
每当退出本层递归调用的时候,相应的工作记录从栈顶删除,上一层递归调用的工作单位为栈顶,从而使得与上一层有关的工作记录恢复可用。


计算机系统中的队列:
(1)解决主机与外部设备速度不匹配的问题
比如:主机和打印机之间速递不匹配的。打印数据缓冲区中所存在的数据就是一个队列。。
(2)CPU的资源竞争。
当有多个用户请求CPU 资源时,
*/






#include<iostream>


typedef int ElemType;


#define MaxSize 50                 //定义队列中的最大元素
typedef struct{
ElemType data[MaxSize];                //以数组的形式存放队列中的元素
int front, rear;                      //指向头指针和
}SqQueue; 


SqQueue Q;


void main(){
//初始化队列
Q.rear = Q.front = 0;






}




//判断是否为空
bool IsEmpty(SqQueue Q){


if (Q.rear == Q.front)
return true;
else
return false;
}


//进行入队,先判断尾元素所在位置,元素进入是否是空栈,非空时,然后队尾指针加1
bool InEqueue(SqQueue Q,int x){
if ((Q.rear + 1) % MaxSize == Q.front)
return false;
//队满
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MaxSize;
//队尾指针加1取模


}




bool OutEqueue(SqQueue Q){
if (Q.rear == Q.front)
return false;
//队空
int x;
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MaxSize;;//对头指针加1取模
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值