前面实现了顺序队列,这里实现链式队列。
设front和rear分别指向队头和队尾节点,入队操作将新节点链在队尾节点后,并使rear指向新队尾节点;出队操作,当队列不空时,取得队头节点,删除之,并使front指向后继节点。
直接上代码:
/** * 链式队列类 * @author Administrator * */ public class LinkedQueue { private Node front,rear; private int size; //存储节点个数 public LinkedQueue(){ this.front=this.rear=null; } //判断队列是否为空,若空返回ture public boolean isEmpty(){ return this.front==null&&this.rear==null; } //在队尾添加元素 public boolean enQueue(Node node){ if(isEmpty()) this.front=node; else this.rear.setNext(node); this.rear=node; this.size++; return true; } //队头元素出列 public Node deQueue(){ if(!isEmpty()){ Node node=this.front; this.front=this.front.getNext(); if(this.front==null) this.rear=null; this.size--; return node; } return null; } //返回节点个数 public int size(){ return this.size; } }
/** * 节点类 * @author Administrator * */ public class Node { private Object data; private Node next; public void setData(Object data) { this.data = data; } public void setNext(Node next) { this.next = next; } public Object getData() { return data; } public Node getNext() { return next; } }
/** * 测试类 * @author Administrator * */ public class StuTest3 { private String name; private int score; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public static void main(String[] args) { LinkedQueue que=new LinkedQueue(); for(int i=0;i<4;i++){ String s="abcd"; StuTest3 st=new StuTest3(); st.setName(s.charAt(i)+""); st.setScore(i+1); Node node=new Node(); node.setData(st); que.enQueue(node); } int num=que.size(); for(int i=0;i<num;i++){ Node node=que.deQueue(); StuTest3 st=(StuTest3)node.getData(); System.out.println("姓名为:"+st.getName()+",学分为"+st.getScore()); } } }
相关推荐
在准备高级JAVA面试时,全面了解和掌握...通过阅读"Java.doc"、"面试_JAVA_宝典—最全的总结.doc"、"Java框架面试题总结_201104.doc"和"java面试.doc"等文档,可以进一步强化这些知识,并找到面试中的常见问题和答案。
3. 链式队列:使用链表作为底层数据结构,灵活且易于扩展。 4. 双端队列(Deque):允许在队头和队尾同时进行入队和出队操作,提高了效率。 5. 阻塞队列:在多线程环境中,当队列为空时,出队操作会阻塞直到有元素...
如果需要处理不确定数量的数据,可以考虑使用链式队列或Java集合框架中的 `LinkedList`。 这个简单的Java程序展示了如何使用基本数据结构实现特定的算法,这对于理解数据结构和算法有很好的帮助。同时,它也演示了...
Java并发编程是Java开发中的重要领域,而Java并发工具包(Java Concurrency Utility,简称JUC)则是Java标准库提供的一套强大而丰富的工具,它极大地简化了多线程环境下的编程工作。JUC主要包含在`java.util....
数据结构是计算机科学中的核心概念,它涉及...总结,本单元的学习内容深入浅出,结合实际应用,旨在让学生能够熟练掌握栈和队列的数据结构,理解递归原理,并能运用到实际编程中,为后续的计算机科学学习打下坚实基础。
《数据结构与Java》是关于计算机科学中一个核心主题——数据结构——的深入探讨,结合了Java编程语言来实现和理解这些概念。数据结构是计算机存储、组织数据的方式,是算法设计的基础,对于提高程序效率至关重要。...
总结,"线性表实现源码-java"涉及到Java中对线性表两种常见存储结构——顺序存储(ArrayList)和链式存储(LinkedList)的实现,以及相关的基本操作。这些源码对于学习和理解数据结构及其在Java中的应用具有重要意义...
【Java“连连看”源程序】是一个基于Java编程语言实现的经典休闲游戏——连连看的代码实现。连连看游戏通常包含两个主要部分:图形用户界面(GUI)和游戏逻辑。在这个项目中,开发者使用Java的Swing库来创建GUI,...
- **双链式存储结构**:讨论图的另一种存储结构——双链式存储结构。 - **图ADT实现设计** - 讨论图的抽象数据类型(ADT)的具体实现设计。 - **图的遍历** - **深度优先搜索**:介绍深度优先搜索的基本原理...
- **线性表的顺序存储与链式存储**:讨论线性表的两种主要实现方式——顺序存储和链式存储。顺序存储利用连续的内存空间存放元素,链式存储则通过节点之间的链接来组织数据。对比这两种实现方式在时间和空间上的优劣...
本章节将深入探讨一种非线性数据结构——树,特别是二叉树,这是Java编程中非常重要的概念。线性结构如数组、链表、堆栈和队列在处理顺序数据时非常有用,但树结构则在表示复杂关系时更为有效。 树是一种非线性结构...
讨论了链式队列的实现方式,包括节点定义、入队、出队等操作。 ##### 4.3 堆栈的应用 **4.3.1 进制转换** 介绍了如何使用栈来实现数字的进制转换。 **4.3.2 括号匹配检测** 讲述了如何利用栈来检测括号是否匹配...
第四章介绍了两种重要的线性数据结构——栈和队列。 - **4.1 栈** - **4.1.1 栈的定义及抽象数据类型**:定义栈作为一种后进先出(LIFO)的数据结构。 - **4.1.2 栈的顺序存储实现**:使用数组实现栈的方法。 - **...
- **队列的链式存储实现**:解释链式队列的结构及其操作过程。 ##### 4.3 堆栈的应用 - **进制转换**:利用栈实现十进制数与其他进制数之间的转换。 - **括号匹配检测**:使用栈来检测字符串中的括号是否正确配对...
### Java数据结构与算法知识点概览 #### 一、Java与面向对象程序设计 本章节主要介绍了Java语言的基础知识以及...以上内容全面覆盖了“java数据结构和算法”这一主题的主要知识点,为读者提供了一个系统的学习框架。
本资源——`java_concurrent` 源码,提供了对Java并发包的深入学习材料以及实践示例,旨在帮助开发者深入理解并发编程背后的机制。 在`java.util.concurrent`包中,有几个重要的类和接口,它们构成了Java并发编程的...
**JAVA设计模式——《Design Patterns》完全实现** 在软件工程领域,设计模式是解决常见问题的可重用解决方案,它们代表了在特定上下文中已被证明有效的设计决策。由Erich Gamma、Richard Helm、Ralph Johnson和...