using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class QueueNode<T> { public T Data; public QueueNode<T> Next; public QueueNode() { Data = default(T); Next = null; } public QueueNode(T data) { Data = data; Next = null; } } /// <summary> /// 链式队列 /// </summary> /// <typeparam name="T"></typeparam> public class LinkQueue<T> { public QueueNode<T> Head; public QueueNode<T> Front; public QueueNode<T> Rear; public int Count; public LinkQueue() { Head = null; Front = null; Count = 0; } /// <summary> /// 入栈 /// </summary> public void Enqueue(T data) { QueueNode<T> node = new QueueNode<T>(data); if(Head==null) { Head = new QueueNode<T>(); Front = Head; Rear = Head; } Count++; Rear.Next = node; Rear = node; node.Next = null; } /// <summary> /// 出栈 /// </summary> /// <returns></returns> public T Dequeue() { if(Count>0) { T data = Front.Next.Data; Head = Front.Next; Front = Head; Count--; return data; } return default(T); } } }