数据结构学习笔记Day4-队列(用java实现)

一、说一下队列

1.什么是队列?

只能在一端进行插入,在另一端进行删除操作的线性表。插入的一端叫做队头,进行删除的一端叫做队尾。插入操作叫进队,删除操作称为出队。

2.队列的特点

先进先出

3.队列的存储结构

顺序队和链队

二、用java实现顺序队(数组实现)

package myStudy.dataStructure.day4;

import java.util.Arrays;

/**
*
* @description 队列(先进先出)
* @author shenrenfeng
* @date 2018年11月6日 下午8:38:23
*
*/
public class MyQueue {

	private Integer[] datas;// 存放数据
	private Integer head;// 队头
	private Integer tail;// 队尾
	private Integer length;// 数组长度,用于判断是否需要扩展数组
	
	public MyQueue() {
		datas = new Integer[10];
		head = 0;
		tail = 0;
		length = 10;
	}
	
	/**
	 * 插入数据(从队尾插入)
	 */
	public void insert(Integer data) {
		if(datas.length >= length) {
			datas = Arrays.copyOf(datas, length + 10);// 每次扩展数组长度加10
			length = length + 10;
		}
		datas[tail] = data;
		tail++;
	}
	
	/**
	 * 删除数据(从队头删除)
	 * @return
	 */
	public Integer remove() {
		if(datas[head] != null) {
			Integer removeData = datas[head];
			datas[head] = null;
			head++;
			return removeData;
		}
		return null;
	}
	
	/**
	 * 展示队列数据
	 */
	public void showMyQueue() {
		if(head < tail) {
			for(int i = head; i < tail; i++) {
				System.out.print(datas[i] + ",");
			}
		} else {
			System.out.println("空队列!");
		}
	}
	
}

测试一下:

package myStudy.dataStructure.day4;

/**
*
* @description 
* @author shenrenfeng
* @date 2018年11月6日 下午9:13:11
*
*/
public class Test {

	public static void main(String[] args) {
		MyQueue myQueue = new MyQueue();
		myQueue.insert(-1);
		myQueue.insert(0);
		myQueue.insert(1);
		myQueue.insert(2);
		myQueue.insert(3);
		myQueue.insert(4);
		myQueue.insert(5);
		myQueue.insert(6);
		myQueue.insert(7);
		myQueue.insert(8);
		myQueue.insert(9);
		myQueue.showMyQueue();
		System.out.println();
		System.out.println(myQueue.remove());
		System.out.println(myQueue.remove());
		myQueue.showMyQueue();
	}
	
}

测试结果:
数据结构学习笔记Day4-队列(用java实现)_第1张图片

你可能感兴趣的:(java,数据结构)