`
Liang_Hong
  • 浏览: 6710 次
社区版块
存档分类
最新评论

Java学习之,总结乎——链式队列

 
阅读更多

前面实现了顺序队列,这里实现链式队列。

设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面试时,全面了解和掌握...通过阅读"Java.doc"、"面试_JAVA_宝典—最全的总结.doc"、"Java框架面试题总结_201104.doc"和"java面试.doc"等文档,可以进一步强化这些知识,并找到面试中的常见问题和答案。

    数据结构——队列的实现

    3. 链式队列:使用链表作为底层数据结构,灵活且易于扩展。 4. 双端队列(Deque):允许在队头和队尾同时进行入队和出队操作,提高了效率。 5. 阻塞队列:在多线程环境中,当队列为空时,出队操作会阻塞直到有元素...

    java实现队列(数组结构)(csdn)————程序.pdf

    如果需要处理不确定数量的数据,可以考虑使用链式队列或Java集合框架中的 `LinkedList`。 这个简单的Java程序展示了如何使用基本数据结构实现特定的算法,这对于理解数据结构和算法有很好的帮助。同时,它也演示了...

    Java——JUC

    Java并发编程是Java开发中的重要领域,而Java并发工具包(Java Concurrency Utility,简称JUC)则是Java标准库提供的一套强大而丰富的工具,它极大地简化了多线程环境下的编程工作。JUC主要包含在`java.util....

    数据结构(Java语言描述) 单元设计_单元3 栈和队列.doc

    数据结构是计算机科学中的核心概念,它涉及...总结,本单元的学习内容深入浅出,结合实际应用,旨在让学生能够熟练掌握栈和队列的数据结构,理解递归原理,并能运用到实际编程中,为后续的计算机科学学习打下坚实基础。

    data structures with java

    《数据结构与Java》是关于计算机科学中一个核心主题——数据结构——的深入探讨,结合了Java编程语言来实现和理解这些概念。数据结构是计算机存储、组织数据的方式,是算法设计的基础,对于提高程序效率至关重要。...

    线性表实现源码-java

    总结,"线性表实现源码-java"涉及到Java中对线性表两种常见存储结构——顺序存储(ArrayList)和链式存储(LinkedList)的实现,以及相关的基本操作。这些源码对于学习和理解数据结构及其在Java中的应用具有重要意义...

    java“连连看”源程序

    【Java“连连看”源程序】是一个基于Java编程语言实现的经典休闲游戏——连连看的代码实现。连连看游戏通常包含两个主要部分:图形用户界面(GUI)和游戏逻辑。在这个项目中,开发者使用Java的Swing库来创建GUI,...

    JAVA语言版数据结构与算法

    - **双链式存储结构**:讨论图的另一种存储结构——双链式存储结构。 - **图ADT实现设计** - 讨论图的抽象数据类型(ADT)的具体实现设计。 - **图的遍历** - **深度优先搜索**:介绍深度优先搜索的基本原理...

    数据结构与算法(JAVA语言版)

    - **线性表的顺序存储与链式存储**:讨论线性表的两种主要实现方式——顺序存储和链式存储。顺序存储利用连续的内存空间存放元素,链式存储则通过节点之间的链接来组织数据。对比这两种实现方式在时间和空间上的优劣...

    Java版数据结构第六章

    本章节将深入探讨一种非线性数据结构——树,特别是二叉树,这是Java编程中非常重要的概念。线性结构如数组、链表、堆栈和队列在处理顺序数据时非常有用,但树结构则在表示复杂关系时更为有效。 树是一种非线性结构...

    数据结构与算法(JAVA语言版)(中文版)

    讨论了链式队列的实现方式,包括节点定义、入队、出队等操作。 ##### 4.3 堆栈的应用 **4.3.1 进制转换** 介绍了如何使用栈来实现数字的进制转换。 **4.3.2 括号匹配检测** 讲述了如何利用栈来检测括号是否匹配...

    数据结构与算法 JAVA 语言描述

    第四章介绍了两种重要的线性数据结构——栈和队列。 - **4.1 栈** - **4.1.1 栈的定义及抽象数据类型**:定义栈作为一种后进先出(LIFO)的数据结构。 - **4.1.2 栈的顺序存储实现**:使用数组实现栈的方法。 - **...

    JAVA算法和数据结构

    - **队列的链式存储实现**:解释链式队列的结构及其操作过程。 ##### 4.3 堆栈的应用 - **进制转换**:利用栈实现十进制数与其他进制数之间的转换。 - **括号匹配检测**:使用栈来检测字符串中的括号是否正确配对...

    java数据结构和算法

    ### Java数据结构与算法知识点概览 #### 一、Java与面向对象程序设计 本章节主要介绍了Java语言的基础知识以及...以上内容全面覆盖了“java数据结构和算法”这一主题的主要知识点,为读者提供了一个系统的学习框架。

    javaconcurrent源码-java_concurrent:javaconcurrent包源代码学习,及相关实践示例

    本资源——`java_concurrent` 源码,提供了对Java并发包的深入学习材料以及实践示例,旨在帮助开发者深入理解并发编程背后的机制。 在`java.util.concurrent`包中,有几个重要的类和接口,它们构成了Java并发编程的...

    JAVA设计模式《Design Patterns》

    **JAVA设计模式——《Design Patterns》完全实现** 在软件工程领域,设计模式是解决常见问题的可重用解决方案,它们代表了在特定上下文中已被证明有效的设计决策。由Erich Gamma、Richard Helm、Ralph Johnson和...

Global site tag (gtag.js) - Google Analytics