java实现链队列

简介: java实现链队列的类代码: package linkqueue; public class LinkQueue { class Element { Object elem; Element next; } private Element fron...

java实现链队列的类代码:

package linkqueue;

public class LinkQueue {
	
	class Element
	{
		Object elem;
		Element next;
	}
	
	private Element front;
	private Element rear;
	private Element header = null;
	
	/**
	 * 初始化队列
	 * */
	void initQueue()
	{
		header = new Element();
		front = new Element();
		rear = new Element();
		front=header;
		rear=header;
	}
	
	/**
	 * 向队列插入元素
	 * */
	void enQueue(Object o)
	{
		Element e=new Element();
		e.elem=o;
		if(rear==header)//第一次插入元素
		{
			rear=e;
			header.next=e;
			front.next=e;
		}else
		{
			rear.next=e;
			rear=e;
		}
	}
	
	/**
	 * 出队
	 * */
	Object deQueue()
	{
		Object o = null;
		if(rear==header)
		{
			System.out.println("队列为空!");
		}else
		{
			o=front.next.elem;
			if(front.next==rear)//队中只有一个元素
			{
				front.next=header;
				rear=header;
			}else//队中大于一个元素
			{
				front.next=front.next.next;
			}
		}
		return o;
	}
	
	/**
	 * 打印队列
	 * */
	void print()
	{
		System.out.print("打印队列:");
		Element temp = front;
		while(temp!=rear)
		{
			System.out.print(temp.next.elem+"\t");
			temp=temp.next;
		}
		System.out.println();
	}
}

测试类代码:

package linkqueue;

public class LinkQueueMain {

	public static void main(String[] args) {
		LinkQueue lQueue = new LinkQueue();
		lQueue.initQueue();
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.enQueue(1);
		lQueue.enQueue(2);
		lQueue.enQueue(3);
		lQueue.enQueue(4);
		lQueue.enQueue(5);
		lQueue.print();
		
		System.out.println("出队操作:"+lQueue.deQueue());
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.print();
		
		System.out.println("出队操作:"+lQueue.deQueue());
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.print();
		
		System.out.println("出队操作:"+lQueue.deQueue());
		System.out.println("出队操作:"+lQueue.deQueue());
		lQueue.print();
		
	}

}

  

目录
相关文章
|
1月前
|
存储 监控 Java
JAVA线程池有哪些队列? 以及它们的适用场景案例
不同的线程池队列有着各自的特点和适用场景,在实际使用线程池时,需要根据具体的业务需求、系统资源状况以及对任务执行顺序、响应时间等方面的要求,合理选择相应的队列来构建线程池,以实现高效的任务处理。
120 12
|
9月前
|
算法 Java
Java数据结构——队列
Java数据结构——队列
59 4
|
4月前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
48 2
|
5月前
|
Java API 容器
JAVA并发编程系列(10)Condition条件队列-并发协作者
本文通过一线大厂面试真题,模拟消费者-生产者的场景,通过简洁的代码演示,帮助读者快速理解并复用。文章还详细解释了Condition与Object.wait()、notify()的区别,并探讨了Condition的核心原理及其实现机制。
|
4月前
|
存储 算法 Java
【用Java学习数据结构系列】用堆实现优先级队列
【用Java学习数据结构系列】用堆实现优先级队列
54 0
|
6月前
|
Java
java中的队列
这篇文章通过Java代码示例介绍了使用数组实现队列操作,包括队列的初始化、入队、出队、判断队列满和空以及遍历队列的方法。
java中的队列
|
7月前
|
设计模式 安全 Java
Java面试题:请解释Java中的线程池以及为什么要使用线程池?请解释Java中的内存模型以及如何避免内存泄漏?请解释Java中的并发工具包以及如何实现一个简单的线程安全队列?
Java面试题:请解释Java中的线程池以及为什么要使用线程池?请解释Java中的内存模型以及如何避免内存泄漏?请解释Java中的并发工具包以及如何实现一个简单的线程安全队列?
64 1
|
8月前
|
Java 开发者
揭秘!LinkedList是如何华丽变身成为Java队列之王的?
【6月更文挑战第18天】Java的`LinkedList`既是列表也是队列之星,实现`Queue`接口,支持FIFO操作。其内部的双向链表结构确保了添加/移除元素的高效性(O(1)),适合作为队列使用。它线程不安全,但可通过同步包装用于多线程环境。此外,`LinkedList`还能灵活变身栈或双端队列,提供多种数据结构功能。
76 11
|
8月前
|
Java
2023蓝桥杯大赛软件类省赛Java大学B组G题 买二增一 队列的简单应用
2023蓝桥杯大赛软件类省赛Java大学B组G题 买二增一 队列的简单应用
55 1
|
8月前
|
安全 Java
Java Queue新玩法:用LinkedList打造高效队列,让你的代码飞起来!
【6月更文挑战第18天】Java集合框架中的`LinkedList`不仅是列表,还可作为高效队列。由于其在链表两端进行添加/移除操作的时间复杂度为O(1),故适合实现并发环境下的任务队列。通过案例展示了如何创建、添加任务及确保线程安全,揭示了`LinkedList`提升代码性能的秘密,特别是在多线程应用中的价值。
65 4

热门文章

最新文章