以前写的 C# 队列
结点
/**/
/// <summary>
/// 队列节点
/// </summary>
/// <typeparam name="T">队列节点保存的对象</typeparam>
internal class TCQueueNode < T >
... {
//init
public TCQueueNode()
...{ }
private T nodeValue = default(T); //节点对象
private TCQueueNode<T> nextNode = null; // 节点对应的下一节点地址
/**//// <summary>
/// 节点对应的下一节点地址
/// </summary>
internal TCQueueNode<T> NextNode
...{
get ...{ return nextNode; }
set ...{ nextNode = value; }
}
/**//// <summary>
/// 节点的值
/// </summary>
internal T NodeValue
...{
get ...{ return nodeValue; }
set ...{ nodeValue = value; }
}
}
/// 队列节点
/// </summary>
/// <typeparam name="T">队列节点保存的对象</typeparam>
internal class TCQueueNode < T >
... {
//init
public TCQueueNode()
...{ }
private T nodeValue = default(T); //节点对象
private TCQueueNode<T> nextNode = null; // 节点对应的下一节点地址
/**//// <summary>
/// 节点对应的下一节点地址
/// </summary>
internal TCQueueNode<T> NextNode
...{
get ...{ return nextNode; }
set ...{ nextNode = value; }
}
/**//// <summary>
/// 节点的值
/// </summary>
internal T NodeValue
...{
get ...{ return nodeValue; }
set ...{ nodeValue = value; }
}
}
队列
/**/
/// <summary>
/// 队列类
/// </summary>
/// <typeparam name="T">队列结点保存的对象</typeparam>
public class TCQueue < T >
... {
/**//// <summary>
/// 队列类 构造函数
/// </summary>
public TCQueue()
...{ }
private int queueLength = 0; //队列长度
private TCQueueNode<T> FirstNode = null; //队列头
private TCQueueNode<T> LastNode = null; //队列尾
/**//// <summary>
/// 队列长度
/// </summary>
public int QueueLength
...{
get ...{ return queueLength; }
}
/**//// <summary>
/// 入队
/// </summary>
/// <param name="NodeValue">对象</param>
public void Enqueue(T NodeValue)
...{
TCQueueNode<T> QueueNode = new TCQueueNode<T>(); //初始化一个队列结点
QueueNode.NodeValue = NodeValue; //赋值
if(FirstNode==null) FirstNode = QueueNode; //队列头为null时,设置队列头
if (LastNode != null) LastNode.NextNode = QueueNode; //入队
LastNode = QueueNode; //队尾后排
this.queueLength++; //队列长度+1
}
/**//// <summary>
/// 出队
/// </summary>
/// <returns>对象</returns>
public T Dequeue()
...{
if (FirstNode == null) return default (T);
TCQueueNode <T> tmpNode = FirstNode;
T reStr = tmpNode.NodeValue;
FirstNode = FirstNode.NextNode;
this.queueLength--;
tmpNode = null;
return reStr;
}
}
/// 队列类
/// </summary>
/// <typeparam name="T">队列结点保存的对象</typeparam>
public class TCQueue < T >
... {
/**//// <summary>
/// 队列类 构造函数
/// </summary>
public TCQueue()
...{ }
private int queueLength = 0; //队列长度
private TCQueueNode<T> FirstNode = null; //队列头
private TCQueueNode<T> LastNode = null; //队列尾
/**//// <summary>
/// 队列长度
/// </summary>
public int QueueLength
...{
get ...{ return queueLength; }
}
/**//// <summary>
/// 入队
/// </summary>
/// <param name="NodeValue">对象</param>
public void Enqueue(T NodeValue)
...{
TCQueueNode<T> QueueNode = new TCQueueNode<T>(); //初始化一个队列结点
QueueNode.NodeValue = NodeValue; //赋值
if(FirstNode==null) FirstNode = QueueNode; //队列头为null时,设置队列头
if (LastNode != null) LastNode.NextNode = QueueNode; //入队
LastNode = QueueNode; //队尾后排
this.queueLength++; //队列长度+1
}
/**//// <summary>
/// 出队
/// </summary>
/// <returns>对象</returns>
public T Dequeue()
...{
if (FirstNode == null) return default (T);
TCQueueNode <T> tmpNode = FirstNode;
T reStr = tmpNode.NodeValue;
FirstNode = FirstNode.NextNode;
this.queueLength--;
tmpNode = null;
return reStr;
}
}