美文网首页
链式队及C#的实现

链式队及C#的实现

作者: 周末的游戏之旅 | 来源:发表于2019-08-03 10:30 被阅读0次

FIFO,先进先出

链式队

基本结构和单链表类似,不过多了一个尾节点始终指向尾元素。

实现

下面的实现是从队尾入队,从队首出队。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinkQueue
{
    class Node<T>
    {
        T data;
        Node<T> next;

        /// <summary>
        /// 构造器
        /// </summary>
        public Node()
        {
            this.Data = default(T);
            this.Next = null;
        }

        /// <summary>
        /// 构造器
        /// </summary>
        /// <param name="data"></param>
        public Node(T data)
        {
            this.Data = data;
            this.Next = null;
        }

        public T Data { get => data; set => data = value; }
        internal Node<T> Next { get => next; set => next = value; }
    }
}

LQueue

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinkQueue
{
    class LQueue<T>
    {
        Node<T> font;   // 队首
        Node<T> rear;   // 队尾

        /// <summary>
        /// 构造器
        /// </summary>
        public LQueue()
        {
            font = new Node<T>();
            rear = font;
            font.Next = null;
        }

        /// <summary>
        /// 在表尾入队
        /// </summary>
        /// <param name="data"></param>
        public void Put(T data)
        {
            //新建节点
            Node<T> tmp = new Node<T>(data);
            //挂载节点到队尾
            rear.Next = tmp;
            //更新队尾
            rear = tmp;
        }

        /// <summary>
        /// 在表头出队
        /// </summary>
        public T Get()
        {
            if (font.Next == null) return default(T);
            //保存队首元素
            Node<T> tmp = font.Next;
            //悬空队首元素
            font.Next = font.Next.Next;
            return tmp.Data;
        }

        /// <summary>
        /// 判空
        /// </summary>
        /// <returns></returns>
        public bool IsEmpty()
        {
            return font.Next == null;
        }
    }
}

Program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinkQueue
{
    class Program
    {
        static void Main(string[] args)
        {
            LQueue<string> lq = new LQueue<string>();

            lq.Put("a");
            lq.Put("b");
            lq.Put("c");
            lq.Put("d");

            while (!lq.IsEmpty())
            {
                Console.WriteLine(lq.Get());
            }
        }
    }
}

相关文章

  • 链式队及C#的实现

    队 FIFO,先进先出 链式队 基本结构和单链表类似,不过多了一个尾节点始终指向尾元素。 实现 下面的实现是从队尾...

  • 链式队列的定义,ios基础知识篇!

    数据结构与算法-链式队列 链式队列的定义 链式队列是用链表来实现的队列,不存在队满的情况。链式队列也包里队列的特点...

  • 顺序存储/链式存储设计栈结构

    一、顺序存储1.1 定义常量及结构 1.2 栈方法实现 二、链式存储2.1 定义常量及结构 2.2 栈方法实现

  • 数据结构与算法——队列之链式队列

    本节主要介绍下队列的链式存储方式,链式毫无疑问也是有队头front和队尾rear,队头front出队,队尾rear...

  • 栈与队列(一)

    在这篇文章里,我们来实现自定义的链式栈。首先我们来看看链式栈的结构及操作定义。 链式栈结构定义 首先,新建两个文件...

  • 《数据结构》第三章:栈和队列

    3.1.1栈的基本概念 3.1.2栈的顺序存储实现 3.1.3栈的链式存储实现 3.2.1队列的基本概念 3.2....

  • 第五讲-队列

    队列:先进先出 基本操作:出队(enqueue)or入队(dequeue) 顺序队列和链式队列 用数组实现的队列叫...

  • 队列的链式表示和实现(链队)

    链队是指采用链式存储结构实现的队列。通常链队用单链表来表示,其存储结构如下: 链队的初始化 (1)生成新结点作为头...

  • 数据结构与算法——链式队列

    链式队列 链式队列的结构如上图所示,它有一个队头和队尾,入队的时候从队尾添加节点,而出队的时候从队头进行删除节点。...

  • 37_队列的概念及实现(下)

    关键词:队列的链式存储实现、链式队列的设计要点、队列链式存储实现的优化、LinkQueue.h 0. 队列的链式存...

网友评论

      本文标题:链式队及C#的实现

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