首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《数据结构》 队列(Queue)操作代码集合

《数据结构》 队列(Queue)操作代码集合

作者头像
Steve Wang
发布2018-02-05 16:35:27
4710
发布2018-02-05 16:35:27
举报
文章被收录于专栏:从流域到海域从流域到海域

队列基本操作代码集合,来自《数据结构-用C语言描述》(第二版) 高教社 队列是受限制的链表或顺序表(只能从队首取结点,先进先出FIFO),相关操作可以查看之前的博客。

/*链队列*/
typedef struct {
    QueueElemType data;
    struct Node *next;
} LinkQueueNode;

typedef struct {
    LinkQueueNode *front;
    LinkQueueNode *rear;
} LinkQueue;
/*初始化*/
int InitQueue(LinkQueue *Q) {
    Q->front = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
    if(Q->front != NULL) {
        Q->rear = Q->front;
        Q->front->next = NULL;
        return(TRUE);
    }
    else {
        return(FALSE);
    }
}
/*链队入队*/
int EnterQueue(LinkQueue *Q, QueueElemType x) {
    LinkQueueNode *NewNode;
    NewNode = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
    if(NewNode != NULL) {
        NewNode->data = x;
        NewNode->next = NULL;
        Q->rear->next = NewNode;
        Q->rear = NewNode;
    }
    else {
        printf("OVERFLOW:\n");
        return(FALSE);
    }
}
/*链队出队*/
int DeleteQueue(LinkQueue *Q, QueueElemType *x) {
    LinkQueueNode *p;
    if(Q->front == Q->rear) {
        return(FALSE);
    }
    p = Q->front->next;
    Q->front->next = p->next;
    if(Q->rear == p) {
        Q->rear = Q->front;
    }
    *x = p->data;
    free(p);
    return(TRUE);
}
/*循环队列*/
#define MAXSIZE 50
typedef struct {
    QueueElemType elem[MAXSIZE];
    int front;
    int rear;
} SeqQueue;
void InitQueue(SeqQueue *Q) {
    Q->front = Q->rear = 0;
}
/*循环队列入队操作*/
int EnterQueue(SeqQueue *Q, QueueElemType x) {
    if((Q->rear + 1) % MAXSIZE == Q->front) {
        printf("OVERFLOW");
        return FALSE;
    }
    *x = Q->elem[Q->front];
    Q->front = (Q->front+1) % MAXSIZE;
}
/*循环队列出队操作*/
int DeleteQueue(SeqQueue *Q, QueueElemType *x) {
    if(Q->front == Q->rear) {
        return(FALSE);
    }
    *x = Q->elem[Q->front];
    Q->front = (Q->front - 1) % MAXSIZE;
    return(TRUE);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年03月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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