`
这些年
  • 浏览: 399915 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

队列的简单实现

 
阅读更多

队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表(零个或多个数据元素的有限序列,有顺序)

代码(缺点:队列中会空出一个位置不被使用)

public class Queue {
	Object[] container;
	int front = 0;
	int rear = 0;

	public Queue(int size) {
		if (size > 0) {
			container = new Object[size];
		} else {
			throw new RuntimeException();
		}
	}

	public Queue() {
		container = new Object[10];
	}

	public int getSize() {
		return (rear - front + container.length) % container.length;
	}

	public void push(Object o) {
		if ((rear + 1) % container.length != front) {
			container[rear] = o;
			rear = (rear + 1) % container.length;
		} else {
			throw new ArrayIndexOutOfBoundsException("数组满了");
		}
	}

	public Object pop() {
		if (front == rear) {
			throw new ArrayIndexOutOfBoundsException("数组空了");
		}
		Object re = container[front];
		front=(front+1)%container.length;
		return re;
	}

	public static void main(String[] args) {
		Queue s = new Queue();
		for (int i = 0; i < 9; i++) {
			s.push(i);
			System.out.println(String.format("队列中元素个数 %s",s.getSize()));
		}
		for (int i = 0; i < 9; i++) {
			System.out.println(String.format("队列中删除的元素值是%s ,现在还有%s个元素",s.pop(),s.getSize()));
		}
	}
}

 

分享到:
评论

相关推荐

    C#队列的实现

    在编程领域,队列是一种常用的数据结构,它遵循...总的来说,C#的Queue类为开发者提供了一种简单且高效的方式来实现队列数据结构。掌握队列的使用,不仅能够提高代码的效率,还能在处理大量并发任务时提供有力的支持。

    顺序队列和链式队列的实现

    顺序队列的优点是实现简单、队列元素可以随机访问,缺点是队列扩容复杂、队列元素的添加和删除效率较低。链式队列的优点是队列元素的添加和删除效率高、队列扩容简单,缺点是实现复杂、队列元素不能随机访问。 顺序...

    双端队列C++实现 双端队列C++实现

    一个简单的C++实现可能包括以下几个关键操作: 1. **初始化**:创建一个空的双端队列,通常初始化为包含一定数量的空槽位,以减少频繁的内存分配。 2. **插入到前端**(push_front):在双端队列的前面添加一个...

    JAVA 模拟队列的实现

    数组实现简单直接,但可能造成空间浪费;链表实现则更灵活,适合动态扩展。在Java中,可以使用ArrayList或LinkedList类来实现这两种方式。下面简述两种方法: - 数组实现:利用数组的索引,0号索引表示队头,最后一...

    数据结构 队列实现 数据结构 队列实现

    最后,我们通过一个简单的示例来看看如何使用这个队列: ```c int main() { struct queueLK q; int a[8] = {3, 8, 5, 17, 9, 30, 15, 22}; int i; initQueue(&q); for (i = 0; i ; i++) { enQueue(&q, a[i]); ...

    Java消息队列的简单实现代码

    Java消息队列的简单实现代码 Java 消息队列是一种异步处理机制,主要目的是减少请求响应时间和解耦。消息队列的应用场景非常广泛,例如在用户注册时,服务端收到用户的注册请求后,可以将其他操作放入消息队列中,...

    用消息队列,实现聊天程序

    通过这种方式,我们可以实现一个简单的多用户聊天系统,尽管它可能不包含网络连接或图形用户界面,但它演示了如何在Linux环境下使用C语言和消息队列进行进程间通信的基本原理。理解并掌握这些技术对于任何想深入学习...

    高效延时队列的设计与实现

    【高效延时队列的设计与实现】 延时队列是一种特殊的消息队列,它具有延时功能,使得消息在生产者发布后不会立即被消费,而是会在预设的延时时间过后才被处理。这种机制在很多业务场景中非常有用,如订单处理、定时...

    51单片机串口接收使用队列C语言实现

    下面是一个简单的队列实现示例: 1. 定义队列结构: ```c typedef struct { uint8_t data[QUEUE_SIZE]; // 队列容量,可根据实际需求调整 int front; // 队头指针 int rear; // 队尾指针 } Queue; ``` 2. 初始...

    队列的C语言实现

    这种方式的优点是实现简单,但缺点是空间利用率不高,因为队列大小是固定的。 2. 用链表实现队列 链表是一种动态数据结构,可以更灵活地扩展和收缩。每个节点包含数据和指向下一个节点的指针。在链表中,我们可以...

    用消息队列实现的简单聊天程序

    在这个“用消息队列实现的简单聊天程序”中,我们可以探讨以下几个关键知识点: 1. **消息队列的概念**:消息队列是一种存储和转发的机制,它在不同的进程或系统之间作为数据传输的桥梁。当一个进程生成消息时,它...

    链式队列的实现 C++源代码

    ### 链式队列的实现 C++源代码解析 #### 一、链式队列概念及特点 链式队列是一种使用链表结构来实现的队列数据结构。...此外,代码还提供了简单的用户交互界面,使得用户能够方便地测试队列的各种功能。

    使用队列实现排队系统

    - **数组实现**:最简单的方法是使用循环数组。当队列满或空时,可以通过调整前后指针来处理边界情况。 - **链表实现**:链表可以更灵活地处理元素的添加和删除,因为不需要移动元素。每个节点包含数据和指向下一个...

    高效的实现队列

    它可能包含了上述某一种或多种队列的实现,例如用C++、Java或其他编程语言实现的简单队列、阻塞队列、并发队列等。具体的实现细节需要查看源代码才能得知。 在实际应用中,队列常被用于任务调度、消息传递、网络...

    用数组实现的优先队列(JAVA)

    总之,`PriorityQ.java`文件可能是一个简单的数组实现优先队列的示例,通过分析这个文件,我们可以学习到如何利用数组数据结构实现优先队列,以及理解其核心的插入、删除和查找操作。同时,这也能帮助我们更好地掌握...

    c++链表队列的实现

    下面是一个简单的链表队列实现示例: ```cpp class LinkedListQueue { public: LinkedListQueue() : front(nullptr), rear(nullptr) {} void enqueue(int val) { Node* newNode = new Node; newNode-&gt;data = ...

    数据结构入门——队列的实现.rar

    在这个"数据结构入门——队列的实现.rar"的压缩包中,我们主要关注的是队列这一基础但重要的数据结构。队列,正如其名,模拟了现实生活中的排队现象,遵循“先进先出”(FIFO, First In First Out)原则。这意味着最...

    队列数组实现

    在本篇文章中,我们不仅介绍了队列的基本概念和操作,还提供了一个简单的示例程序来展示队列的数组实现。虽然这种方法简单有效,但在更复杂的应用场景下可能需要考虑更多的因素,比如队列的动态调整、异常处理等。...

    循环队列的基本操作和实现

    2. 链式存储实现:虽然数组实现简单且高效,但在某些场景下,如动态改变队列大小,链表可能是更好的选择。链表中的节点包含数据和指向下一个节点的指针,队头和队尾由专门的指针标识。 四、优化与应用 1. 循环队列...

    循环队列c++实现c++实现

    循环队列是计算机科学中数据结构的一种,它在顺序存储结构上实现,具有队列的先进先出(FIFO)特性。在循环队列中,队尾指针会在达到数组界限后回到数组的起始位置,形成一种循环的效果,从而避免了普通队列在满时...

Global site tag (gtag.js) - Google Analytics