zoukankan      html  css  js  c++  java
  • 三(1)、队列(链队列)

      队列,与栈相同,实现一个队列同样需要顺序表活者链表作为基础。队列是一种先进先出的线性表。数据只能从队尾进入队列,从对头出队列,这里重点说一下链队列。

    首先说 链队列的实现。

    定义队列

    typedef struct QNode{
    ElemType data;
    struct QNode *next;
    } QNode , *QueuePtr;
    typedef struct{
    QueuePtr front; //队头指针
    QueuePtr rear; //队尾指针
    }LinkQueue;

    初始化队列

    void initQueue(LinkQueue *q)
    {
    /*初始化一个空队列*/
    q->front = q->rear = (QueuePtr)malloc(sizeof(QNode)); /*创建一个头结点,队头队尾指针 指向该结点*/
    if( !q->front) exit(0); /*创建头结点失败*/
    q->front->next = NULL; /*头结点指针域置NULL*/
    }


    入队列操作

    void EnQueue(LinkQueue *q, ElemType e)
    {
    QueuePtr p;
    p = (QueuePtr)malloc(sizeof(QNode)); /*创建一个队列元素结点*/
    if( !q->front) exit(0); /*创建头结点失败*/
    p->data = e;
    p->next = NULL;
    q->rear ->next = p;
    q->rear = p;
    }


    出队列操作

    void DeQueue(LinkQueue *q, ElemType *e)
    {
    /*如果队列q不为空,删除q的队头元素,用e返回其值*/
    QueuePtr p;
    if(q->front == q->rear) return; /*队列为空,返回*/
    p = q->front->next;
    *e = p->data;
    q->front->next = p->next;
    if(q->rear == p) q->rear = q->front; /*如果队头就是队尾,则修改队尾指针*/
    free(p);
    }



  • 相关阅读:
    laravel 5.2 引入第三方类
    jquery获得option的值和对option进行操作
    复习知识点
    前端使用crypto.js进行加密
    使用jQuery Pagination Plugin实现分页效果
    配置文件
    MyBatis的适用场景和生命周期
    使用GET方式提交的表单遇到的问题
    Java复习——网络编程
    SpingData 的学习
  • 原文地址:https://www.cnblogs.com/MrDing/p/2353874.html
Copyright © 2011-2022 走看看