美文网首页
数据结构|队列的实现[6]

数据结构|队列的实现[6]

作者: rivrui | 来源:发表于2020-06-15 19:07 被阅读0次

队列

队列的特性是先进先出。每次数据出去只能的队列的头部,每次数据进来只能加在队列的尾部。
队列实现一般有两种方式,线性队列,链表队列。

链表队列

链表队列的实现可以参考单向链表。先建立一个普通的单向链表,然后设置三个属性。队列头,用来标识当前队列头的地址;队列尾,用来标识队列尾的地址;队列长,记录当前的队列长,理论上不给队列设置长度可以无限扩展。
每次删除数据,就把队列头的标识移到下一个node的地址。每次增加数据则就把队列尾的指针指向的node加上下一个node的地址,同时把队列尾的标识移过去即可。

线性队列

超简单的,基于数组实现,每次删除数据则把数组第一个删除,把后续的往前面移动,最后一个直接置空;添加数据只需要在最后继续添加即可;数组会有定长,删除和添加数据一定要检验。下面是一个简单地线性队列。

#include <iostream>
using namespace std;
typedef struct queue
{
    int data[10];
    int length;
    int rear;
} queue;
queue add_num(queue q, int num)
{
    if (q.length + 1 <= 10)
    {
        q.data[q.length] = num;
        q.length += 1;
    }
    else if (q.length + 1 > 10)
    {
        cout << "error";
    }

    return q;
};
queue rm_head(queue q)
{
    if (q.length - 1 >= 0)
    {
        for (int i = 0; i < q.length - 1; i++)
        {
            q.data[i] = q.data[i + 1];
        }
        q.data[q.length - 1] = -1;
        q.length -= 1;
    }
    else if (q.length - 1 < 0)
    {
        cout << "error";
    }
    return q;
};

int main()
{
    queue q;
    q.length = 0;
    q = add_num(q, 10);
    q = add_num(q, 9);
    q = add_num(q, 8);
    q = add_num(q, 7);
    for (int i = 0; i < q.length; i++)
    {
        cout << q.data[i] << endl;
    };
    q = rm_head(q);
    q = rm_head(q);
    for (int i = 0; i < q.length; i++)
    {
        cout << q.data[i] << endl;
    };
    q = add_num(q, 10);
    q = add_num(q, 9);
    for (int i = 0; i < q.length; i++)
    {
        cout << q.data[i] << endl;
    };
    return 0;
}

相关文章

  • JavaScript数据结构-队列

    队列遵循FIFO先进先出原则。用数组储存队列中的数据结构队列类 使用ES6进行实现使用WeakMap保存私有属性,...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 看图说话数据结构之二项队列(优先队列)——原理解析

    数据结构之二叉堆(优先队列)——原理解析,数据结构之二叉堆(优先队列)——java实现,数据结构之左式堆(优先队列...

  • c++ 实现队列

    相关资料: 用C++实现一个队列 数据结构代码实现之队列的链表实现(C/C++)

  • 剑指Offer--(6)用两个栈实现队列

    title: 剑指Offer--(6)用两个栈实现队列 categories: 算法与数据结构 tags: 数据结...

  • 队列

    2018年10月31日 队列是一种先进先出(FIFO)的数据结构 1,队列的链表实现 2,队列的数组实现 3,队列...

  • 数据结构|队列的实现[6]

    队列 队列的特性是先进先出。每次数据出去只能的队列的头部,每次数据进来只能加在队列的尾部。队列实现一般有两种方式,...

  • 在Python中实现两个堆栈的队列

    在Python中实现两个堆栈的队列。数据结构了解堆栈和队列。然后用两个堆栈实现一个队列。堆栈和队列都是列表。但它们...

  • 集合知识点整理

    1.前言:数据结构——队列 队列接口先说明有哪些功能,但不说是如何实现的,队列有两种实现方式: 循环数组 链表 循...

  • 数据结构之队列的链式存储结构

    之前写了队列的顺序存储结构,队列的定义及操作见 数据结构之队列的顺序存储结构 队列的链式存储结构与操作实现 队列接...

网友评论

      本文标题:数据结构|队列的实现[6]

      本文链接:https://www.haomeiwen.com/subject/bzbnzhtx.html