链队列

链队列
链队列通常用单链表示,它的实现是单链表的简化,为了操作方便,把 队头设置在链表的头部 ,并且 不需要头结点。


创建节点类

public class Node<T>
{
private T data;存储数据
private Node<T>next;创建下一节点的引用

创建构造方法
public Node(T item)
{
data = item;
}

给字段创建属性
public T Data
{
set{data = value;}
get{return data;}
}

public Node<T> Next
{
set{next = value;}
get{return next;}
}

}



实现链队列
public LinkQueue<T>:IQueue<T>
{
需要保留头结点、尾结点、元素的个数
private Node<T> front;头结点
private Node<T> rear;尾结点
private int count;元素的个数

创建构造函数
public LinkQueue()
{
front = null;
rear = null;
count = 0;
}



获取元素个数的操作
public int GetLength()
{
return count;
}

public int Count
{
get{return count;}
}


判断链表是否为空
public bool IsEmpty()
{
return count==0;
}

清空操作
public void Clear()
{
front =null;
rear = null;
count = 0;
}


入队操作
把数据放在队尾,要判断当前是否有元素
public void Enqueque(T item)
{
Node <T>newNode = new Node<T>(item);创建新的节点
if(count==0){
如果链队为空,新的节点就是头节点和为节点
front = rear = newNode;
count=1;
} else{
链队有数据
rear.Next = newNode; 原本的尾结点连接一个新节点
rear = newNode;把新节点设为尾节点
count++
}


出队操作
public T Dequeque()
{队列为空的时候无法出队
if(count==0)
{
retrun default(T);
}
else if(count==1)
{
T temp = front.Data;
front = rear = null;
count =0;
return temp;
}else {
T temp = front.Next;
front = front.Next;
return temp;

}

}


取得队首的值
public T Peek()
{
if(front!=null)
{
return front.Data;
}else
{
return default(T);
}

}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值