链队列的实现:只有入队以及出队
class QueueLink<T> //链队列
{
public int count;
public Node<T> front;//头节点
public Node<T> rear;//尾节点
public QueueLink() {
front = null;
rear = null;
count = 0;
}
public void Enqueue(T value) {//入队
Node<T> newNode = new Node<T>(value);
if (count == 0) {
front = newNode;
rear =newNode;
count=1;
}
else
{
rear.Next = newNode;
rear = newNode;
count++;
}
}
public T Dequeqe() { //出队
Node<T> temp = front;
if (count == 0)
{
return default(T);
}
else if (count == 1)
{
front = null;
rear = null;
count = 0;
}
else {
front = front.Next;
count--;
}
return temp.Value;
}
//获取头节点的值
public T Peek(){
if(front!=null){
return front.Value;
}else{
return default(T);
}
//链栈的实现
class StackLink<T>
{
private int count;
public int Count {
get { return count; }
set { count = value; }
}
private T data;
public T Data {
get { return data; }
set { data = value; }
}
private Node<T> head;
public Node<T> Head {
get { return head; }
set { head = value; }
}
public StackLink(){
data = default(T);
head = null;
count = 0;
}
public StackLink(T value) {
data = value;
}
public StackLink(Node<T> node) {
head = node;
}
public StackLink(Node<T> node, T value) {
data = value;
head = node;
}
public T Peek() {//返回栈顶元素的值
if (head!= null)
{
Node<T> temp = head;
for (int i = 1; i <count; i++)
{
temp = temp.Next; //遍历到前一个元素
}
return temp.Value;
}
else {
return default(T);
}
}
public void Push(T value)//添加元素
{
Node<T> newNode =new Node<T>(value);
if (count == 0)
{
head = newNode;
count++;
}
else {
Node<T> temp =head;
for (int i = 1; i < count; i++) {
temp = temp.Next; //遍历到前一个元素
}
temp.Next = newNode;
count++;
}
}
public T Pop() {//移除栈顶的元素并返回栈顶元素
if (count == 0)
{
return default(T);
}
else
{
if (count == 1)
{
Node<T> temp = head;
head = null;
count--;
return temp.Value;
}
else
{
Node<T> temp = head;
for (int i = 1; i < count-1; i++)
{
temp = temp.Next; //遍历到前一个元素
}
T value=temp.Next.Value;
temp.Next = null;
count--;
return value;
}
}
}
}
//自己设计的Node类
class Node<T>
{
private T value;
public T Value{ //属性
get { return value; }
set { this.value = value; }
}
private Node<T> next;
public Node<T> Next {//节点引用
get { return next; }
set { next = value; }
}
//以下为该类的构造方法
public Node(T value) {
this.value = value;
next = null;
}
public Node(T value, Node<T> node) {
next = node;
this.value = value;
}
public Node() {
value = default(T);
next = null;
}
public Node(Node<T> node) {
value = default(T);
next = node;
}
}
“`