队列

循环队列

顺序存储

  • 存储类型

typedef struct
{
    ElemType data[MaxSize];
    int front, rear;
}SqQueue;
  • 初始化

void InitQueue(SqQueue *Q)
{
    Q->rear = Q->front = 0;
}
  • 判队空

int isEmpty(SqQueue *Q)
{
    if(Q->rear == Q->front)
        return 1;
    else
        return 0;
}
  • 入队

int EnQueue(SqQueue *Q, ElemType x)
{
    if((Q->rear + 1)%MaxSize == Q->front)
        return 0;
    Q->data[Q->rear] = x;
    Q->rear = (Q->rear + 1) % MaxSize;
    return 1;
}
  • 出队

int DeQueue(SqQueue *Q, ElemType *x)
{
    if(Q->rear == Q->front)
        return 0;
    *x = Q->data[Q->front];
    Q->front = (Q->front + 1) % MaxSize;
    return 1;
}

链式存储

  • 存储结构

typedef struct LinkNode
{
    ElemType data;
    struct LinkNode *next;
}LinkNode;

typedef struct
{
    LinkNode *front, *rear;
}LinkQueue;

  • 初始化

void InitQueue(LinkQueue *Q)
{
    Q->front = Q->rear = (LinkNode*)malloc(sizeof(LinkNode));
    Q->front->next = NULL;
}
  • 判队空

int isEmpty(LinkQueue *Q)
{
    if(Q->front == Q->rear)
        return 1;
    else
        return 0;
}
  • 入队

void EnQueue(LinkQueue *Q, ElemType x)
{
    LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));
    s->data = x;
    s->next = NULL;
    Q->rear->next = s;
    Q->rear = s;
}
  • 出队

int DeQueue(LinkQueue *Q, ElemType *x)
{
    LinkNode *p;
    if(Q->front == Q->rear)
        return 0;
    p = Q->front->next;
    *x = p->data;
    Q->front->next = p->next;
    if(Q->rear == p)
        Q->rear = Q->front;
    free(p);
    return 1;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 队列的基本概念 1 队列的定义 队列(Queue):队列简称队,也是一种操作受限的线性表,只允许在表的一端进行插入...
    1nvad3r阅读 503评论 0 0
  • 在上一篇文章中,我们介绍了自定义的链式栈结构及其接口的实现方式。这篇文章里,我们来介绍如何实现自定义的顺序队列。 ...
    我叫卡卡算了阅读 865评论 0 5
  • 本文主要讲解了队列的定义和队列主要功能实现的算法。最后会列举一些队列在程序设计当中常见的应用实例!相信了解了队列对...
    xiaoyouPrince阅读 1,115评论 0 0
  • 队列:队列在线程池等有限资源池的应用 我们知道,CPU 资源是有限的,任务的处理速度与线程个数并不是线性正相关。相...
    GhostintheCode阅读 1,000评论 0 5
  • 栈是限定仅在表尾进行插入和删除操作的线性表。表尾端称为栈顶,表头端称为栈底。不含元素的空表称为空栈。栈是后进先出的...
    yinxmm阅读 1,843评论 0 0