前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >队列的基础操作

队列的基础操作

作者头像
Enterprise_
发布2019-02-21 17:07:23
2870
发布2019-02-21 17:07:23
举报
文章被收录于专栏:小L的魔法馆

队列是一种特殊的线性表,只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

代码语言:javascript
复制
#define SIZE 5
typedef struct queue
{
    int inner;
}Queue;
Queue a[SIZE];
Queue *head = NULL;
Queue *tail = NULL;


/*(1)初始化队列:Init_Queue(Queue *q) ,初始条件:队q 不存在。操作结果:构造了一个空队;
(2)入队操作: In_Queue(Queue *q, int x),初始条件: 队q 存在。操作结果: 对已存在的队列q,插入一个元素x 到队尾,队发生变化;
(3)出队操作: Out_Queue(Queue *q),初始条件: 队q 存在且非空,操作结果: 删除队首元素,并返回其值,队发生变化;
(4)读队头元素:Pop_Queue(Queue *q),初始条件: 队q 存在且非空,操作结果: 读队头元素,并返回其值,队不变;
(5)判队空操作:Empty_Queue(q),初始条件: 队q 存在,操作结果: 若q 为空队则返回为1,否则返回为0。*/


void Init_Queue(Queue *q)
{
    head = q;
    tail = q;
}

void In_Queue(Queue *q, int x)
{
    if (q != NULL)
    {
        if (tail == &a[SIZE])
        {
            printf("The Queue is full filled.");
        }
        else
        {
            tail->inner = x;
            tail++;
        }
    }
}

int Out_Queue(Queue *q)
{
    int temp = 0;
    if (head!=tail&&q!=NULL)
    {
        temp = head->inner;
        head++;
    }
    else
    {
        printf("NULL");
    }
    return temp;
}

int  Pop_Queue(Queue *q)
{
    if (head != tail&&q != NULL)
    {
        return head->inner;
    }
    else
        printf("NULL");
}


int Empty_Queue(Queue *q)
{
    if (head == tail)
        return 1;
    else
        return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年06月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档