学习笔记 - Java数据结构 - 链队

public interface LinkQueueInterface {

	void ClearQueue();//清空队列
	boolean QueueEmpty();//判断队列是否为空
	int QueueLength();//队列长度
	boolean EnQueue(QueueNode node);//新元素入队
	boolean DeQueue(QueueNode node);//队首元素出队
	void QueueTraverse();//遍历队列
}

 

public class QueueNode {

	private final DataType dataType;
	private QueueNode next;
	
	public QueueNode() {
		next = null;
		dataType = new DataType();
	}
	
	class DataType{
		public int data;
	}

	public DataType getDataType() {
		return dataType;
	}

	public QueueNode getNext() {
		return next;
	}

	public void setNext(QueueNode next) {
		this.next = next;
	}
	
}

 

public class LinkQueue implements LinkQueueInterface {

	private QueueNode Head;//头指针
	private QueueNode Tail;//尾指针
	private int Length;//长度
	
	public LinkQueue() {
		Head = new QueueNode();
		Tail = Head;
		Length = 0;
	}
	
	@Override
	public void ClearQueue() {
		// TODO Auto-generated method stub
		QueueNode currentNode = Head;
		while(currentNode.getNext()!=null) {
			currentNode.setNext(null);
			currentNode = currentNode.getNext();
		}
		Head.setNext(null);
		Tail = Head;
		Length = 0;
	}

	@Override
	public boolean QueueEmpty() {
		// TODO Auto-generated method stub
		return (Length==0?true:false);
	}

	@Override
	public int QueueLength() {
		// TODO Auto-generated method stub
		return Length;
	}

	@Override
	public boolean EnQueue(QueueNode node) {
		// TODO Auto-generated method stub
		QueueNode preNode = new QueueNode();
		preNode.getDataType().data = node.getDataType().data;
		Tail.setNext(preNode);
		Tail = preNode;
		Length++;
		return true;
	}

	@Override
	public boolean DeQueue(QueueNode node) {
		// TODO Auto-generated method stub
		if(QueueEmpty()) {
			return false;
		}
		QueueNode currentNode = Head.getNext();
		node.getDataType().data = currentNode.getDataType().data;
		if(Head.getNext()==Tail) {
			Tail = Head;
		}
		Head.setNext(currentNode.getNext());
		//如果头指针的下一个就是尾指针,需要将尾指针初始化
		Length--;
		return true;
	}

	@Override
	public void QueueTraverse() {
		// TODO Auto-generated method stub
		QueueNode currentNode = Head;
		while(currentNode.getNext()!=null) {
			currentNode = currentNode.getNext();
			System.out.println(currentNode.getDataType().data+" ");
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		LinkQueue queue = new LinkQueue();
		QueueNode node1 = new QueueNode();
		node1.getDataType().data = 1;
		QueueNode node2 = new QueueNode();
		node2.getDataType().data = 2;
		QueueNode node3 = new QueueNode();
		node3.getDataType().data = 3;
		QueueNode temp = new QueueNode();
		queue.EnQueue(node1);
		queue.EnQueue(node2);
		queue.DeQueue(temp);
		queue.EnQueue(node3);
		System.out.println("删除的是: "+temp.getDataType().data);
		queue.DeQueue(temp);
		System.out.println("删除的是: "+temp.getDataType().data);
		
		queue.QueueTraverse();
		
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wonder4work

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值