数据结构---循环队列(顺序表实现)

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 18:41   115   0

一、理论知识

待续

二、代码实现

1.队列结构体定义

typedef struct lQueue
{
    int* pBase;
    int size;
    int length;
    int front;
    int rear;
}lQueue,*plQueue;

2.初始化队列

void InitlQueue(plQueue q, int size)
{
    q->pBase = (int*)malloc(sizeof(int)*size);
    q->size = size;
    q->length = 0;
    q->front = 0;
    q->rear = 0;
}

3.判断队列是否已满

bool isFull(plQueue q)
{
    return q->length == q->size;
}

4.判断队列是否为空

bool isEmpty(plQueue q)
{
    return q->length == 0;
}

5.压队列

void PushQueue(plQueue q,int data)
{
    if (!isFull(q))
    {
        q->pBase[q->rear++] = data;
        q->length++;
        if (q->rear == q->size)
        q->rear = 0;
    }
    else
    {
        cout << "队列已满"<< endl;
    }
}

6.出队列

void PopQueue(plQueue q)
{
    if (!isEmpty(q))
    {
        q->front++;
        q->length--;
        if (q->front == q->size)
            q->front = 0;
    }
    else
    {
        cout << "队列为空!"<< endl;
    }
}

7.打印队列

void ShowQueue(plQueue q)
{
    if (!isEmpty(q))
    {
        for (int i = q->front; i != q->rear; ++i)
        {
            cout << q->pBase[i]<<"->";
            if (i == q->size)
                i = -1;
        }
    }
    else
    {
        cout << "顺序表为空!"<< endl;
    }
}

8.代码演示

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP