-
C#教程之C#教程之 实现 数据结构 链队列
本站最新发布 C#从入门到精通
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
namespace _003_队列
{
interface IQueueDS
{
int Count// count属性
{
get;
}
int GetLength();//取得队长度
void Enqueue(T item);//入队
T Dequeue();//出队
T Peek();//取值
void Clear();//清空
bool IsEmpty();//判断队是否为空
}
}
namespace _003_队列
{
class Node<T>
{
private T data; //节点的值
private Node<T> next; //节点的引用
public Node(T data) //构造
{
this.data = data;
Next = null;
}
public T Data //节点的值的属性
{
get { return data; }
set { data = value; }
}
public Node<T> Next //节点的引用的属性
{
get{ return next; }
set{ next = value; }
}
}
}
namespace _003_队列
{
class LinkQueue:IQueueDS
{
private Node front; //头节点
private Node rear; //尾节点
private int count; //记录队列中数据个数
public LinkQueue() //构造
{
front = null;
rear = null;
count = 0;
}
public int Count { get { return count; } } //属性
public int GetLength() //取得队列数据个数方法
{
return count;
}
public void Enqueue(T item) //入队
{
Node newNode = new Node(item);
if (count == 0) //空队时入队,首尾节点都指向新节点
{
front = newNode;
rear = newNode;
count = 1;
}
else //非空队入队,首节点无需操作,尾节点指向新节点
{
rear.Next = newNode;
rear = newNode;
count++;
}
}
public T Dequeue() //出队
{
T temp = front.Data; //temp 存头节点值
if (count == 0) //空队无法出队
{
Console.WriteLine("空队无法出队!!!!!");
return default(T);
}
else if (count == 1) //队列仅有的一个数据时,出队后,首尾节点都置空(null)
{
front = rear = null;
count = 0;
return temp;
}
else //队列有一个以上数据时,出队后,头节点指向下一个节点
{
front = front.Next;
count--;
return temp;
}
}
public T Peek() //取得头节点值得方法
{
if (front != null) //非空队时直接返回头节点值
{
return front.Data;
}
else //空队时返回该类型默认值
{
Console.WriteLine("空队无法Peek!!!!!!!!");
return default(T);
}
}
public void Clear() //清空
{
count = 0;
front = rear = null;
}
public bool IsEmpty() //判断是否为空
{
return count == 0;
}
}
}
namespace _003_队列
{
class Program
{
static void Main(string[] args)
{
//Queue testQueue = new Queue(); //1.使用BCL中的队
//SeqQueue testQueue = new SeqQueue(); //2.使用自己编写的顺序队
LinkQueue testQueue = new LinkQueue(); //3.使用自己编写的链队
Console.WriteLine(testQueue.IsEmpty());//true
testQueue.Enqueue(1);
testQueue.Enqueue(2);
testQueue.Enqueue(3);
Console.WriteLine("1,2,3,入队后,队中数据个数是" + testQueue.Count);//3
Console.WriteLine(testQueue.IsEmpty());//false
int i = testQueue.Dequeue();
Console.WriteLine(i + "出队了");//1
Console.WriteLine("1出队之后,队中数据个数是" + testQueue.Count);//2
int k = testQueue.Dequeue();
Console.WriteLine(k + "出队了");//2
Console.WriteLine("2出队之后,队中数据个数是" + testQueue.Count);//1
int j = testQueue.Peek();
Console.WriteLine(j + "peek 了");//3
Console.WriteLine("3peek之后,队中数据个数是" + testQueue.Count);//1
testQueue.Clear();
Console.WriteLine("Clear 之后队中数据个数是" + testQueue.Count);//0
Console.ReadKey();
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
namespace _003_队列
{
interface IQueueDS
{
int Count// count属性
{
get;
}
int GetLength();//取得队长度
void Enqueue(T item);//入队
T Dequeue();//出队
T Peek();//取值
void Clear();//清空
bool IsEmpty();//判断队是否为空
}
}
namespace _003_队列
{
class Node<T>
{
private T data; //节点的值
private Node<T> next; //节点的引用
public Node(T data) //构造
{
this.data = data;
Next = null;
}
public T Data //节点的值的属性
{
get { return data; }
set { data = value; }
}
public Node<T> Next //节点的引用的属性
{
get{ return next; }
set{ next = value; }
}
}
}
namespace _003_队列
{
class LinkQueue:IQueueDS
{
private Node front; //头节点
private Node rear; //尾节点
private int count; //记录队列中数据个数
public LinkQueue() //构造
{
front = null;
rear = null;
count = 0;
}
public int Count { get { return count; } } //属性
public int GetLength() //取得队列数据个数方法
{
return count;
}
public void Enqueue(T item) //入队
{
Node newNode = new Node(item);
if (count == 0) //空队时入队,首尾节点都指向新节点
{
front = newNode;
rear = newNode;
count = 1;
}
else //非空队入队,首节点无需操作,尾节点指向新节点
{
rear.Next = newNode;
rear = newNode;
count++;
}
}
public T Dequeue() //出队
{
T temp = front.Data; //temp 存头节点值
if (count == 0) //空队无法出队
{
Console.WriteLine("空队无法出队!!!!!");
return default(T);
}
else if (count == 1) //队列仅有的一个数据时,出队后,首尾节点都置空(null)
{
front = rear = null;
count = 0;
return temp;
}
else //队列有一个以上数据时,出队后,头节点指向下一个节点
{
front = front.Next;
count--;
return temp;
}
}
public T Peek() //取得头节点值得方法
{
if (front != null) //非空队时直接返回头节点值
{
return front.Data;
}
else //空队时返回该类型默认值
{
Console.WriteLine("空队无法Peek!!!!!!!!");
return default(T);
}
}
public void Clear() //清空
{
count = 0;
front = rear = null;
}
public bool IsEmpty() //判断是否为空
{
return count == 0;
}
}
}
namespace _003_队列
{
class Program
{
static void Main(string[] args)
{
//Queue testQueue = new Queue(); //1.使用BCL中的队
//SeqQueue testQueue = new SeqQueue(); //2.使用自己编写的顺序队
LinkQueue testQueue = new LinkQueue(); //3.使用自己编写的链队
Console.WriteLine(testQueue.IsEmpty());//true
testQueue.Enqueue(1);
testQueue.Enqueue(2);
testQueue.Enqueue(3);
Console.WriteLine("1,2,3,入队后,队中数据个数是" + testQueue.Count);//3
Console.WriteLine(testQueue.IsEmpty());//false
int i = testQueue.Dequeue();
Console.WriteLine(i + "出队了");//1
Console.WriteLine("1出队之后,队中数据个数是" + testQueue.Count);//2
int k = testQueue.Dequeue();
Console.WriteLine(k + "出队了");//2
Console.WriteLine("2出队之后,队中数据个数是" + testQueue.Count);//1
int j = testQueue.Peek();
Console.WriteLine(j + "peek 了");//3
Console.WriteLine("3peek之后,队中数据个数是" + testQueue.Count);//1
testQueue.Clear();
Console.WriteLine("Clear 之后队中数据个数是" + testQueue.Count);//0
Console.ReadKey();
栏目列表
最新更新
C# 数据操作系列 - 17 Dapper ——号称可以与
C# 数据操作系列 - 18 让Dapper更强的插件
C#编码转换
python list遍历方法汇总
将Python分成7个阶段学习,你会发现学习
Python中的单例模式如何正确运用?本文详
使用Python爬虫的方式把自己喜欢的音乐的
pandas.cut使用总结
Python之Selenium如何正确运用?案例详解
Python爬虫是如何遍历文档树呢?一招教你
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
图解TCP数据报结构以及三次握手(非常详
TCP协议的粘包问题(数据的无边界性)
SqlServer 利用游标批量更新数据
BOS只读状态修改
SQL Server等待事件—PAGEIOLATCH_EX
数据库多行转换为单一列
获取数据表最后最后访问,修改,更新,
计算经历的时间
SQL查询结果自定义排序
修改数据库默认位置
日期简单加或减
从日期获取年,月或日