循环队列--忘记分配空间和如何用tag判断队空队满

复制代码
#include<iostream>
#define maxsize 100
using namespace std;
struct CLqueue
{
    int *Q;
    int front;
    int rear;
    int tag;
};
typedef struct CLqueue *CL;
void Init(CL &q)
{
    q = new CLqueue;
    q->Q=new int[maxsize];
    q->tag = 0;//队空
    q->rear = q->front=0;
}
bool Judge(CL &q)
{
    if (q->tag)
        return true;
    else
        return false;

}
void Enqueue(CL &q,int a)
{
    if (Judge(q))
        return;
    q->Q[q->rear] = a;
    q->rear = (q->rear +1 ) % maxsize;
    if ((q->rear + 1) % maxsize == q->front)
        q->tag = 1;

}
void Dlqueue(CL &q)
{
    if (!Judge(q))
        return;
    q->front = (q->front + 1) % maxsize;
    if ((q->front + 1) % maxsize == q->rear)
        q->tag = 0;
}


int main()
{
    int n;
    CL q;
    while (cin >> n && n != 0)
    {
        Init(q);
        for (int i= 0; i < n; i++)
        {
            int a;
            cin >> a;
            Enqueue(q, a);
        }
        for (int i = q->front; i < q->rear-1; i++)
        {
            cout << q->Q[i] << " ";
        }
        cout<< q->Q[q->rear-1] << endl;
    }
    return 0;
}
复制代码
复制代码
#include<iostream>
#define maxsize 100
using namespace std;
struct CLqueue
{
    int *Q;
    int front;
    int rear;
    int tag;
};
typedef struct CLqueue *CL;
void Init(CL &q)
{
    q = new CLqueue;
    q->Q=new int[maxsize];
    q->tag = 0;//队空
    q->rear = q->front=0;
}
bool Judge(CL &q)
{
    if (q->tag)
        return true;
    else
        return false;

}
void Enqueue(CL &q,int a)
{
    if (Judge(q))
        return;
    q->Q[q->rear] = a;
    q->rear = (q->rear +1 ) % maxsize;
    if ((q->rear + 1) % maxsize == q->front)
        q->tag = 1;

}
void Dlqueue(CL &q)
{
    if (!Judge(q))
        return;
    q->front = (q->front + 1) % maxsize;
    if ((q->front + 1) % maxsize == q->rear)
        q->tag = 0;
}


int main()
{
    int n;
    CL q;
    while (cin >> n && n != 0)
    {
        Init(q);
        for (int i= 0; i < n; i++)
        {
            int a;
            cin >> a;
            Enqueue(q, a);
        }
        for (int i = q->front; i < q->rear-1; i++)
        {
            cout << q->Q[i] << " ";
        }
        cout<< q->Q[q->rear-1] << endl;
    }
    return 0;
}
复制代码

 

posted @   Tomorrow1126  阅读(362)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示