C语言队列学习竟是如此简单!

一、何为队列?

队列 (Queue) :是一种先进先出 (First In First Out ,简称 FIFO) 的线性表,也是运算受限的线性表。只允许在表的一端进行插入,而在另一端进行删除。

队首 (front) :允许进行删除的一端称为队首。

队尾 (rear) :允许进行插入的一端称为队尾。

队列中没有元素时称为空队列。在空队列中依次加入元素 a 1 , a 2 , …, a n 之后, a 1 是队首元素, a n 是队尾元素。显然退出队列的次序也只能是 a 1 , a 2 , …, a n ,即队列的修改是依先进先出的原则进行的,如图 3-5 所示。

二、基本操作

1、创建新队列

2、判空

3、进队

4、出队

5、清空队

6、获得队头元素

7、遍历队

8、销毁队

9、队长

三、队列的存储实现及运算实现

#include

#include//bool类型头文件

#define MaxSize 50

typedef int ElemType;

//定义循环队列结构体

typedef struct

{

    ElemType data[MaxSize];

    int front,rear;

} SqQueue;    //typedef struct 命名方法  最简洁的 适合入门                 http://blog.csdn.net/jianxiong8814/article/details/1556589


//初始化

void InitQueue(SqQueue *Q)

{

    (*Q).rear = (*Q).front = 0;

}

//判断队列是否为空

bool isEmpty(SqQueue *Q)

{

    if((*Q).rear == (*Q).front)

        return true;

    else

        return false;

}

//入队操作

bool EnQueue(SqQueue *Q)

{

    if((*Q).rear+1%MaxSize == (*Q).front)

        return false;

    ElemType m;

    printf("请输入要输入的数据:");

    scanf("%d",&m);

    (*Q).rear = ((*Q).rear+1)%MaxSize;

    (*Q).data[(*Q).rear] = m;

    printf("%4d",(*Q).data[(*Q).rear]);

    printf("\n");

//用于显示入队数据

    return true;

}

//出队操作

bool DeQueue(SqQueue *Q,ElemType *x)

{

    if(isEmpty(Q))

    {

        printf("该队列为空\n\n");

        return false;

    }

    (*Q).front = ((*Q).front+1)%MaxSize;

    *x = (*Q).data[(*Q).front];

    printf("读出的数据为:");

    printf("%d\n",*x);

//用于显示出队数据

    return true;

}

int main()

{

    SqQueue q;

    ElemType x,n;

    InitQueue(&q);

    while(1)

    //下面是用户操作菜单

    {

        printf("       主菜单\n");

        printf(" -----------------\n");

        printf("   0---结束\n");

        printf("   1-----插入\n");

        printf("   2-------读出\n");

        printf("请选择0--2:");

        scanf("%d",&n);

        switch(n)

        {

        case 0:

            return 0;

        case 1:

            EnQueue(&q);

            break;

        case 2:

            DeQueue(&q,&x);

            break;

        }

    }

    return 0;

}

小编推荐一个学C语言/C++的学习裙【 六六六,二九五,四九八 】,邀请码(怀念c),无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

你可能感兴趣的:(C语言队列学习竟是如此简单!)