• 队列(链式存储结构)


    队列的链式存储结构不常用

    • 同理,实际上也可以用一个单链表实现
    • 插入、删除分别在链表两头进行,即插入在表尾(rear),删除在表头(front)

    图解如下:

    0、结构初始化

    struct ListNode {
        ElementType val;
        struct ListNode* next;
    };
    struct QueueNode {
        int size;
        struct ListNode* front;
        struct ListNode* rear;
    };
    

    1、建立空队列 createQueue

    struct QueueNode* createQueue() {
        struct QueueNode* q=malloc(sizeof(struct QueueNode));
        q->front = q->rear = NULL;
        q->size=0;
    
        return q;
    }
    

    2、入队操作addQueue

    //插入在表尾

    void addQueue(struct QueueNode* q,ElementType x) {
        struct ListNode* temp=malloc(sizeof(struct ListNode));
        temp->val=x;
    
        if (q->size==0) {
            q->front = q->rear =temp;
        }
        else {
            q->rear->next=temp;
            q->rear=temp;
        }
    
        q->size++;
    }
    

    3、出队操作deleteQueue

    //删除在表头

    ElementType deleteQueue(struct QueueNode* q) {
        struct ListNode* temp;
        ElementType tmp;
    
        if (q->size==0) return ERROR;
        else {
            temp=q->front;
            q->front=temp->next;
            tmp=temp->val;
    
            free(temp)
            q->size--;
            return tmp;
        }
    }
    
  • 相关阅读:
    java基础
    C++菜鸟启动之旅--vc6.0使用教程详解
    第8章 Linux磁盘与文件系统管理
    IO(四)----对象的序列化
    IO(三)----序列流
    IO(二)----字符流
    IO(一)----字节流
    File类
    枚举类
    自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/WakingUp/p/8543421.html
Copyright © 2020-2023  润新知