循环队列的链式存储实现

原创 2015年11月17日 17:26:03

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{ //循环队列的链式存储
public class LinkQueue
{
NodeQueue front;
NodeQueue rear;
///
/// 构造函数 初始化
///
public LinkQueue()
{ //初始化一个地址,头节点
this.front = new NodeQueue() ;
this.rear = this.front;
}
///
/// 添加一个节点
///
///
public void InsertQueue(NodeQueue nodequeue) {
this.rear.next = nodequeue;
this.rear = nodequeue;//把当前的nodequeue设为队尾节点,并把rear指向nodequeue
}
///
/// 删除队列的第一个节点
///
/// 返回要删除的节点
public NodeQueue DeleteQueue() {
NodeQueue p,nodequeue;
if (this.rear==this.front)
{
return null;
}
p = this.front.next;
nodequeue = p;
this.front.next = p.next;
if (p==this.rear)
{
this.rear = this.front;
}

        return nodequeue;

    }
    /// <summary>
    /// 显示队列出列
    /// </summary>
    public void ShowLinkQueue() {
        if (this.rear==this.front)
        {
            Console.WriteLine("该队列为空");
            return;

        }
        while (this.front!=this.rear)
        {
            Console.WriteLine(this.front.next.data);
            this.front = this.front.next;
        }
    }

}
/// <summary>
/// 定义节点
/// </summary>
public class NodeQueue
{
    public string data { get; set; }
    public NodeQueue next { get; set; }
    public NodeQueue() { }
    public NodeQueue(string data)
    {
        this.data = data;
        this.next = null;
    }
}


//测试
class Program
{
    static void Main(string[] args)
    {
        LinkQueue linkQueue = new LinkQueue();
        NodeQueue nodequeue1 = new NodeQueue("1");
        NodeQueue nodequeue2 = new NodeQueue("2");
        NodeQueue nodequeue3 = new NodeQueue("3");
        NodeQueue nodequeue4 = new NodeQueue("4");
        NodeQueue nodequeue5 = new NodeQueue("5");
        linkQueue.InsertQueue(nodequeue1);
        linkQueue.InsertQueue(nodequeue2);
        linkQueue.InsertQueue(nodequeue3);
        linkQueue.InsertQueue(nodequeue4);
        linkQueue.InsertQueue(nodequeue5);
        linkQueue.DeleteQueue();
        linkQueue.ShowLinkQueue();

        Console.ReadKey();
    }
}

}

版权声明:

循环队列-链式存储结构-c语言实现

/* 循环队列-线性表-链式结构 */ #include #include #define OK 1 #define ERROR 0typedef int Status; typedef i...
  • u010187139
  • u010187139
  • 2015年07月03日 15:57
  • 1421

循环队列和链式结构队列

一、循环队列的基础知识 1,循环队列有几个参数需要确定:       有两个参数,front和rear 2,循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零; ...
  • u010949971
  • u010949971
  • 2017年02月27日 13:22
  • 827

数据结构队列C++实现 链式和循环

#include #include #include using namespace std; namespace my_space { template class queue...
  • a363344923
  • a363344923
  • 2014年12月07日 15:34
  • 1697

队列的顺序存储实现和链式存储实现

队列的顺序存储实现 //队列的顺序存储实现 #define MaxSize struct QNode{ ElementType Data[MaxSize];//一维数组 int rear;/...
  • SpadgerZ
  • SpadgerZ
  • 2017年03月23日 21:26
  • 658

c/c++实现顺序循环队列和链式队列

实现基于C/C++的数据结构的顺序循环队列,此程序未经过严格实验,只是提供大概思路 #include #include #define MAXSIZE 10 typedef int...
  • min954584739
  • min954584739
  • 2017年03月19日 18:04
  • 373

队列的链式表示和实现

用链表表示的队列简称为链队列。一个链队列显然需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。 和线性表的单链表一样,为了操作方便起见,我们也给链队列添加一个头结点,并令头指针指...
  • sumi_
  • sumi_
  • 2015年10月25日 18:44
  • 894

Java基础 - 队列的链式存储结构及实现

类似于使用链式结构保存线性表,也可以采用链式结构来保存队列的元素,采用链式存储结构的队列也被称为链队列。...
  • ApatheCrazyFan
  • ApatheCrazyFan
  • 2016年11月08日 15:24
  • 1205

数据结构——队列的链式存储结构以及实现

队列也是一种特殊的线性表,只允许在一端进行插入操作,在另一端进行删除操作。允许插入的一段为对尾,允许删除的一端为队头。本次记录的是队列的链式存储结构以及实现。该存储结构有两个指针,一个指向头节点,称为...
  • Carry_zwxb
  • Carry_zwxb
  • 2016年10月29日 16:04
  • 958

队列---循环队列与链队列比较

对于循环队列与链队列的比较,可以从两方面来考虑:1、从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一...
  • will130
  • will130
  • 2015年10月21日 23:11
  • 953

循环顺序队列介绍及其C++实现

循环队列的介绍及C++实现方法
  • coderNim
  • coderNim
  • 2016年11月27日 13:10
  • 548
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:循环队列的链式存储实现
举报原因:
原因补充:

(最多只允许输入30个字)