`
312758107
  • 浏览: 11289 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

链表实现队列

 
阅读更多
用链表也可以实现队列,在用链表实现的队列在插入和删除的时候更方便,但查找起来更困难
用链表实现队列的代码如下:

第一个类:LinkNode
/**
 * 定义一个单向链表节点类LinkNode
 * @author zhx
 *
 */
public class LinkNode{
	Object data;//节点存储的数据
	LinkNode next;//指向下一个节点的指针
	
	//创建节点时什么也不传入	
	public LinkNode(){
		this.data=null;
		this.next=null;
	}
	//创建节点时只传入节点存储的数据
	public LinkNode(Object data){
		this.data=data;
		this.next=null;
	}
	//创建节点时传入节点内存储的数据和下一个指针
	public LinkNode(Object data, LinkNode next){
		this.data=data;
		this.next=next;
	}
}


第二个类:LinkList
/**
 * 单向链表
 * @author zhx
 *
 */
public class LinkList{
	private LinkNode front;//定义一个头节点
	private LinkNode rear;//定义一个尾节点
	
	Object obj;
	
	/**
	 * 定义从队尾插入队列的方法
	 */
	public void enqueue(){
		if(rear==null&&front==null){
			rear = new LinkNode(obj);
			front=rear;
		}
		else{
			LinkNode node = new LinkNode(obj);
			rear.next=node;//将新插入的元素加到原队尾的后一位
			rear=rear.next;//将目前的node(即原来队尾的后一位)设为队尾
		}
	}
	
	/**
	 * 定义从队首删除元素的方法
	 */
	public LinkNode dequeue(){
		//如果队列为空
		if(rear==null&&front==null){
			System.out.println("队列为空,删除失败");
			return null;
		}
		//如果队列只剩下一个元素
		if(front==rear&&rear!= null){
			LinkNode node = front;
			rear=null;
			front=null;
			return node;
		}
		LinkNode ob = front;
		front=front.next;
		return ob;
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics