摘要:目录链队列链队列基本运算实现基本运算实现链队列概述一种限制在表头删除和表尾插入操作的单链表。
目录
概述:一种限制在表头删除和表尾插入操作的单链表。
图示:
//链表结点类public class QueueNode { //数据域 private Object data; //指针域 private QueueNode next; public QueueNode() { } public QueueNode(Object data, QueueNode next) { this.data = data; this.next = next; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public QueueNode getNext() { return next; } public void setNext(QueueNode next) { this.next = next; }}
public class LinkQueue { //定义队头指针 QueueNode front = new QueueNode(); //定义队尾指针 QueueNode rear = new QueueNode(); //构造空队列 public void InitQueue() { //尾指针指向头结点 rear = front; rear.setNext(null); } //判队空 public boolean QueueEmpty() { //头尾指针相等队列为空 return rear == front; } //入队列 public void EnQueue(Object x) { //申请新结点 QueueNode queueNode = new QueueNode(); //数据域赋值 queueNode.setData(x); //指针域置空 queueNode.setNext(null); //新结点链到原队尾结点之后 rear.setNext(queueNode); //队尾指针指向新的队尾结点 rear = queueNode; } //取队头元素 public Object GetFront() { //判断队列是否为空 if (QueueEmpty()) { System.out.println("Queue underflow!"); return null; } else { //返回原队头元素值 return front.getNext().getData(); } } //出队列 public Object DeQueue() { //判断队列是否为空 if (QueueEmpty()) { System.out.println("Queue underflow!"); return null; } else { //申请新结点 QueueNode queueNode; //新结点指向头结点 queueNode = front; //头指针指向原队头结点 front = front.getNext(); //返回原队头结点的数据值 return queueNode.getData(); } } //遍历队列 public void LinkQueueShow() { //申请新结点 QueueNode p; //新结点指向头结点 p = front; //定义一个状态值 int i = -1; //循环输出队列元素结点值 while (p != null) { //跳过输出为null的头结点 if (i == -1) { i++; p = p.getNext(); } System.out.println(p.getData()); //移动指针,使其指向下一个结点 p = p.getNext(); } }}
public class LinkQueueTest { public static void main(String[] args) { //创建链队列对象 LinkQueue linkQueue = new LinkQueue(); //构造空队列 linkQueue.InitQueue(); //判队空 boolean b = linkQueue.QueueEmpty(); System.out.println("队列是否为空:" + b); //入队列 linkQueue.EnQueue("qq"); linkQueue.EnQueue("ww"); linkQueue.EnQueue("ee"); linkQueue.EnQueue("rr"); //遍历队列 System.out.println("遍历队列:"); linkQueue.LinkQueueShow(); //取队头元素 Object o = linkQueue.GetFront(); System.out.println("队头元素为:" + o); System.out.println(); //出队列 linkQueue.DeQueue(); linkQueue.DeQueue(); //遍历队列 System.out.println("遍历队列:"); linkQueue.LinkQueueShow(); //取队头元素 Object o1 = linkQueue.GetFront(); System.out.println("队头元素为:" + o1); //判队空 boolean b1 = linkQueue.QueueEmpty(); System.out.println("队列是否为空:" + b1); }}
运行结果:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/123035.html
摘要:记作称为算法的渐进时间复杂度,简称时间复杂度。学习数据结构与算法之链表链表一种常见的数据结构,可以存储有序的元素集合。首先在大的分类上,它们都是散列算法。 showImg(https://segmentfault.com/img/bVSDvj?w=900&h=385); 当人工智能、AlphaGo、无人驾驶、智能投顾等词语不断在人们视野中出现的时候,意味着我们正步入一个算法的时代。计算...
摘要:我在前面的文章中也提到了应该怎么做自我介绍与项目介绍,详情可以查看这篇文章备战春招秋招系列初出茅庐的程序员该如何准备面试。因此基于事件消息对象驱动的业务架构可以是一系列流程。 showImg(https://user-gold-cdn.xitu.io/2018/11/14/16711ac29c2ae52c?w=928&h=531&f=png&s=798562); 一 消息队列MQ的...
阅读 1094·2021-11-24 10:24
阅读 2948·2021-11-22 15:29
阅读 1187·2021-11-11 16:54
阅读 932·2019-08-30 15:53
阅读 2681·2019-08-30 10:54
阅读 1852·2019-08-29 17:26
阅读 1100·2019-08-29 17:08
阅读 481·2019-08-28 17:55