C语言 简单的队列(数组队列)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 简单的队列(数组队列)相关的知识,希望对你有一定的参考价值。

//简单的队列

#include<stdio.h>
#include<stdlib.h>

#define datatype int
#define N 10

//定义队列结构体
struct queue{
    int front;//队头
    int endline;//队尾
    datatype data[N];//数据
};

typedef struct queue Queue;

Queue myQueue = { 0, 0, { 0 } };

//初始化队列
void initQueue(Queue * p);
//入队
void enQueue(Queue *pque, datatype data);
//出队
void deQueue(Queue *pque);
//遍历队列
void printfQueue(Queue *pque);

//数组队列只能使用一次,使用之后必须初始化后才可以继续使用

void main(){
    Queue *pque = (Queue *)malloc(sizeof(Queue));
    initQueue(pque);
    //插入队列
    enQueue(pque,1);
    enQueue(pque,2);
    enQueue(pque,8);
    enQueue(pque,3);
    enQueue(pque,7);
    //打印队列
    printfQueue(pque);
    //出队
    deQueue(pque);
    //打印队列
    printfQueue(pque);
    deQueue(pque);
    //打印队列
    printfQueue(pque);
    system("pause");
}

//初始化队列
void initQueue(Queue *pque){
    pque->front = pque->endline = 0;//清空队列
}

//入队
void enQueue(Queue *pque,datatype data){
    //判断队列是否溢出
    if (pque->endline<N)
    {
        //判断队列是否为空
        if (pque->front == pque->endline)//队头和队尾重合表明没有元素
        {
            //初始化队列
            initQueue(pque);
        }
        pque->data[pque->endline] = data;
        pque->endline += 1;
        
    }
    else{
        return;
    }
    
}

//出队
void deQueue(Queue *pque){
    //判断队列是否为空
    if (pque->front == pque->endline)
    {
        //队列为空
        return;
    }
    else{
        //直接弹出最后一个
        printf("弹出的元素是%d\n", pque->data[pque->front]);
        pque->front+= 1;
    }
}

//遍历队列
void printfQueue(Queue *pque){
    for (int i = pque->front; i < pque->endline; i++)
    {
        printf("%d\n", pque->data[i]);
    }
}

 

技术分享

以上是关于C语言 简单的队列(数组队列)的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现使用动态数组实现循环队列

用java实现循环队列?

求助C语言的问题"用数组实现顺序队列"

(C语言)手撕数据结构之——队列

新手向C语言实现特殊数据结构——队列

C语言队列