zoukankan      html  css  js  c++  java
  • 线性表队列

    和栈相反,队列是一种先进先出(first in first out 缩写为FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。

    双端队列:限定插入和删除操作在表的两端进行的线性表

    -----单链队列 队列的链式存储表示------ 

    和线性表类似,队列也可以有两种存储表示。用链表表示的队列简称链队列。

    typedef struct QNode {

     QElemType data;

     struct QNode * next;

    }QNode ,QueuePtr;

    typedef struct {

     Queueptr front; //队头指针

     Queueptr rear; //队尾指针

    }LinkQueue;

    status InitQueue(LinkQueue & q)

    { //构造一个带头结点的空队列

      q.front = q.rear = (Queueptr) malloc ( sizeof(QNode));

      if(!q.front) exit;

      q.front->next = NULL;

      return ok;

    }

    status DestroyQueue(LinkQueue & q)

    {

      while(q.front)

      {

        q.rear= q.front->next;

        free(q.front);

        q.front = q.rear;

      }

      return ok;
    }

    status EnQueue(LinkQueue & q, QElemType e)

    {

      p = (Queueptr) malloc(sizeof(QNode));

      if(!p) exit;

      p->data = e; p->next = NULL;

      q->rear ->next  = p;

      q->rear = p;

      return ok;
    }

    status DeQueue(LinkQueue & q,QElemType &e)

    {

      if(q.front == q.rear) return ERROR;

      p = q.front->next;

      e = q.data;

      q.front ->next =p->next;

      if(q.rear == p) q.rear= q.front;

      free(p);

      return ok;

    }

    -----循环队列 队列的顺序存储表示------

    status InitQueue(SqSqueue & q) {

      q.base = (QElemType*)malloc(MAXQSIZE * sizeof(QElemType));

      if(!q.base) exit;

      q.front = q.rear = 0;

      return ok;

    }

     int QueueLength(SqSqueue & q) {

      return (q.rear-q.front+MAXQSIZE)%MAXQSIZE;

    }

    status EnQueue(SqSqueue & q,QElemType e) {

      if((q.rear+1)%MAXQSIZE == q.front) return ERROR;

      q.base[q.rear]  = e;

      q.rear = (q.rear+1)%MAXQSIZE;

      return ok;

    }

    status DeQueue(SqSqueue & q,QElemType &e) {

      if(q.front == q.rear) return ERROR;

      e = q.base[q.front];

      q.front = (q.front+1) % MAXQSIZE;

      return ok;

    }

     

  • 相关阅读:
    SCXML和QScxml使用总结
    qt 使用qtxlsx 读写excel
    Qt Qml嵌入Widget以及Qml与Widget交互
    三步带你开发一个短链接生成平台
    SessionStorage、LocalStorage详解
    低代码如何支撑企业级应用开发?
    开发一个渐进式Web应用程序(PWA)前都需要了解什么?
    详细了解JS Map,它和传统对象有什么区别?
    5种可能在10年后消失的开发语言
    更改tomcat启动的端口号
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/3131595.html
Copyright © 2011-2022 走看看