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]);
    }
}

 

posted on 2016-03-02 17:47  寒魔影  阅读(4367)  评论(0编辑  收藏  举报

导航