关于循环队列和链式队列的基础操作

循环队列
①定义
#define Maxsize 50
typedef struct{
Elempty data[Maxsize];
int *front , *rear;
}Squeue;

②初始化
void InitQueue (Squeue &Q){
Q.front=Q.rear=0; //初始化队头队尾指针
}
③ 判队空
bool IsEmpty(Squeue Q){
if(Q.front = =Q.rear) //判队🈳
return true;
else
return false;
}
④入队
bool EnQueue(Squeue &Q,Elempty x){
if((Q.rear+1)%Maxsize == Q.front) //判队🈵
return false;
Q.data[Q.rear]=x;
Q.rear=(Q.rear + 1)%Maxsize;//队尾指针+1取模
return true;
}
⑤出队
bool DeQueue (Squeue &Q ,Elempty &x){
if(Q.front==Q.rear) //判队🈳
retrue false;
x=Q.data[Q.front];
Q.front=(Q.front+1)%Maxsize;//队头指针+1取模
return true;
}

链式队列
🌿🌿🌿🌿 疯了手机刚打的没了 就是该死的输入法点出去了 然后回来没了

我就说一下难懂的出队吧其他自行百度吧

bool DeQueue(LinkNode &Q, Elempty &x){
if (Q.front= =Q.rear)
ruturn false;
LinkNode *p =Q.front->next; ①
//首先把头指针指向的位置赋给p
x=p->data;
//把p指向的值给x让她传回去
Q.front->next=p->next; ②
/🐷🐷这里可能是很多人不理解的地方🐷🐷
把p所指向后一个的地址赋给头指针所指向的下一个
/
if(Q.rear==p)
Q.rear=Q.front;
free(q);
retrun true;
}
①LinkNode *p =Q.front->next;②Q.front->next=p->next;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值