什么是队列?
队列是一种基于先进先出的数据结构,是一种只能在一端进行插入,另一端进行删除的特殊线性表,按照先进先出的原则存储数据。
手写队列
package com.hzrc.hrmanagement.dataStructure;
/**
* @author SJT
* @Description: 队列
* @date 2022-06-22 10:45
*/
public class MyQueue<T> {
//容量大小
private Integer size;
//头结点
private Node head;
//尾节点
private Node tail;
public MyQueue() {
head = new Node(null,null);
size = 0;
}
//集合大小
public Integer getMyQueueSize() {
return size;
}
//存值
public boolean add(T addData) {
if(tail == null) {
tail = new Node(addData,null);
head.next = tail;
}else {
Node newNode = new Node(addData, null);
tail.next = newNode;
tail = newNode;
}
size++;
return true;
}
//取值
public T poll() {
if(head.next == null) {
return null;
}
Node old = head.next;
head.next = old.next;
size--;
return old.getValue();
}
class Node {
private T value;
private Node next;
public Node(T value, Node next) {
this.value = value;
this.next = next;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
}
测试队列
package com.hzrc.hrmanagement.dataStructure;
/**
* @author SJT
* @Description:
* @date 2022-06-22 11:03
*/
public class TestMyQueue {
public static void main(String[] args) {
MyQueue<String> myQueue = new MyQueue();
myQueue.add("test1");
myQueue.add("test2");
myQueue.add("test3");
System.out.println(myQueue.poll());
System.out.println("size:"+myQueue.getMyQueueSize());
System.out.println(myQueue.poll());
System.out.println("size:"+myQueue.getMyQueueSize());
System.out.println(myQueue.poll());
System.out.println("size:"+myQueue.getMyQueueSize());
}
}
测试结果
知是行之始,行是知之成!