队列---链式队列及其实现

一、

1)采用链式储存结构的队列称为链队列。

2)队列采用frontrear分别指向队列的头、尾两个节点。

3)链式队列采用链式结构来保存队列中的所有元素,该队列允许添加无限多个元素,链式队列无队列满的问题。

二、实现

public class LinkQueue<T>
{
	//定义节点类
  private class Node
  {
	  private T data;
	  private Node next;
	  public Node()
	  {}
	  public Node(T data,Node next)
	  {
		  this.data = data;
		  this.next = next;
	  }
  }
  
  private Node front;//保存链队列的头节点
  private Node rear;//保存链队列的尾节点
  private int size;//保存队列中已经含有的节点的个数
  
  public LinkQueue()//空队列的构造函数
  {
	  front = null;
	  rear = null;
  }
  public LinkQueue(T element)//指定的数据元素创建队列
  {
	  front = new Node(element,null);
	  rear = front;
	  size++;
  }
  
  //返回队列的长度
  public int length()
  {
	  return size;
  }
  
 //将新元素加入队列
  public void add(T element)
  {
	  if(isEmpty())
	  {
		  front = new Node(element,null);
		  rear = front;  
	  }
	  else
	  {
		 Node newNode = new Node(element,null);
		 rear.next = newNode;
		 rear = newNode;
		  
	  }
	  size++;
  }
  
  //删除队列front指向的节点 
  public T remove()
  {
	  Node oldNode = front;
	  front = front.next;
	  oldNode.next = null;
	  size--;
	  return oldNode.data;
	  
  }
  

  //判断队列是否为空
  public boolean isEmpty()
  {
	  return size == 0;
  }
  
  //清空队列
  public void clear()
  {
	  front = null;
	  rear = null;
	  size = 0;
  }
  
  public String toString()
  {
	  if(isEmpty())
	  {
		  return "[]";
	  }
	  else
	  {
		  StringBuilder sb = new StringBuilder("[");
		  for (Node current= front; current != null; current = current.next)
		{
			sb.append(current.data.toString() + ",");
		}
		   int len = sb.length();
		  return sb.delete(len-1,len).append("]").toString();
	  }
  }
}
测试:

public class LinkQueueTest
{
   public static void main(String[] args)
 {
	LinkQueue<String> queue = new LinkQueue<String>();
	queue.add("hello");
	queue.add("world");
	queue.add("welcome");
	System.out.println(queue);
	System.out.println("删除队列的front元素:" + queue.remove());
	System.out.println(queue);
	queue.clear();
	System.out.println(queue);
		
 }
}

结果:

[hello,world,welcome]
删除队列的front元素:hello
[world,welcome]
[]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值