Java数据结构系列之——队列(1):队列的顺序存储结构及其实现

package queue.sequencequeue;
/**
 * 队列的定义:队列是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表
 * 队列是一种先进先出(First In First Out)的线性表,简称FIFO,允许插
 * 入的一端称为队尾,允许删除的一端称为队头
 * @author wl
 *
 */
public class SequenceQueue {
	private Object[] elementData;//用数组来保存队列的元素
	private int front;//队列的头指针
	private int rear;//队列的尾指针

	//无参构造函数
	public SequenceQueue(){
		elementData=new Object[10];
		front=0;
		rear=0;
	}

	//带参构造函数,指定数组的初始化长度
	public SequenceQueue(int capacity){
		elementData=new Object[capacity];
		front=0;
		rear=0;
	}

	//队列的大小
	public int size(){
		return rear-front;
	}

	//判断队列是否为空
	public boolean isEmpty(){
		int size=size();
		return size==0;
	}

	//判断队列是否已满
	public boolean isFull(){
		int size=size();
		return size==elementData.length;
	}

	//入队列
	public void enQueue(int data){
		if(isFull()){
			throw new IndexOutOfBoundsException("队列已满");
		}

		elementData[rear++]=data;
	}

	//出队列
	public Object deQueue(){
		if(isEmpty()){
			throw new IndexOutOfBoundsException("队列为空");
		}
		//得到对头元素
		Object data=elementData[front];
		//释放对头元素
		elementData[front++]=null;
		return data;
	}

	//得到对头元素,不删除
	public Object getFront(){
		if(isEmpty()){
			return null;
		}else{
			return elementData[front];
		}
	}

	//打印队列中的元素
	public void traverse(){
		if(isEmpty()){
			System.out.println("null");
		}else{
			for(int i=front;i<rear;i++){
				System.out.print(elementData[i]+" ");
			}
		}
		System.out.println();
	}
}

时间: 2024-10-09 10:34:23

Java数据结构系列之——队列(1):队列的顺序存储结构及其实现的相关文章

数据结构(十五)串的顺序存储结构(顺序串)

一.串的定义:串(String)是由零个或多个字符组成的有限序列,又名叫字符串. 二.串中的字符数目n称为串的长度,零个字符的串称为空串(null string),它的长度为零.子串在主串中的位置就是子串的第一个字符在主串中的序号. 三.串的大小:首先比较每个字符对应的ASCII码,然后比较长度n. 四.串中关注更多的是查找子串位置.得到指定位置子串.替换子串等操作. 五.串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的.按照预定义的大小,为每个定义的串变量分配一个固定长度的存储

Java数据结构系列之——队列(2):循环队列的顺序存储结构及其实现

package queue.circleSequenceQueue; /** * 这里我们规定队列满时数组中还有一个空闲空间,不允许将数组中的空间全部存满 * 循环队列满的条件是:(rear+1)%QueueSize==front * 长度计算公式为:(rear-front+QueueSize)%QueueSize * @author wl */ public class CircleSequenceQueue { Object[] elementData;//数组用于存放队列元素 int fr

Java数据结构系列之——队列(3):队列的链式存储结构及其实现

package queue.linkQueue; public class Node { // 数据域 Object element; // 指针域 Node next; // 头结点初始化 public Node(Node next) { this.next = next; } // 非头结点初始化 public Node(Object element, Node next) { this.element = element; this.next = next; } } ***********

Java数据结构与算法-栈和队列

(摘录加总结)------ 栈和队列不属于基础的数据结构,它们都属于线性表. 一.栈 对于栈存储操作元素只能在栈结构的一端进行元素的插入和删除,是一种性质上的线性表结构.按照“先进后出”的原则进行存储数据.先进的元素在栈底,后进的元素在栈顶.需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来).比较常规的说明是:栈底固定,而栈顶浮动:栈中元素个数为零时称为空栈.插入一般称为进栈(PUSH),删除则称为退栈(POP). 栈的实现结构包括顺序结构实现和链式结构实现.前者依据的是数组,后者

java数据结构与算法值优先级队列

一.优先级队列 什么是优先级队列:优先级队列是一种比栈和队列更加常用的一种数据结构.在优先级队列中,数据项按照关键字的值有序.数据项插入到队列中时,会按照顺序插入到合适的位置,用来保证队列的顺序. 生活中的例子,假设你有若干封件,你最急需要处理的文件就放在所有邮件的 顶部,如果不急需处理的文件就放放在下面. 参考代码: package edu.structure.queue; public class PriorityQ { private int maxSize; private int[]

Javascript与数据结构系列(二)——队列的实现

队列实现 使用数组来实现队列看起来顺理成章.JavaScript 中的数组具有其他编程语言中没有的优点, 数组的 push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素. push() 方法将它的参数插入数组中第一个开放的位置,该位置总在数组的末尾,即使是个 空数组也是如此.请看下面的例子: names = []; name.push("Cynthia"); names.push("Jennifer"); print(names);

手工数据结构系列-C语言模拟队列 hdu1276

#include <stdio.h> #include <stdlib.h> #define init_size 1000 typedef struct { int head,tail,size,__size,*seq; }Queue; typedef Queue* Q_P; void init(Q_P q){ q->head=q->tail=0;q->__size=init_size;q->size=0; q->seq=(int*)malloc(in

Java数据结构系列之——树(4):二叉树的中序遍历的递归与非递归实现

package tree.binarytree; import java.util.Stack; /** * 二叉树的中序遍历:递归与非递归实现 * * @author wl * */ public class BiTreeInOrder { // 中序遍历的递归实现 public static void biTreeInOrderByRecursion(BiTreeNode root) { if (root == null) { return; } biTreeInOrderByRecursi

Java数据结构系列之——树(5):二叉树的后序遍历的递归与非递归实现

package tree.binarytree; import java.util.Stack; /** * 二叉树后序遍历的递归与非递归实现 * * @author wl * */ public class BitreePostOrder { // 后序遍历的递归实现 public static void biTreePostOrderByRecursion(BiTreeNode root) { if (root == null) { return; } biTreePostOrderByRe