Java创建链式队列
更改成了可以互动的创建形式
原文来源:https://blog.csdn.net/jiutianhe/article/details/18606295?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161741230116780357231415%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161741230116780357231415&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-22-18606295.pc_search_result_hbase_insert&utm_term=java%E9%93%BE%E5%BC%8F%E9%98%9F%E5%88%97
修改后:
package duilie;
import java.io.Serializable;
import java.util.Scanner;
public class Duilie<T> implements Serializable{
private static final long serialVersionUID = -6726728595616312615L;
//定义一个内部类Node,Node实例代表链队列的节点。
private class Node {
private T data;//保存节点的数据
private Node next;//指向下个节点的引用
//无参数的构造器
public Node() {
}
//初始化全部属性的构造器
public Node(T data, Node next) {
this.data = data;
this.next = next;
}
}
private Node front;//保存该链队列的头节点
private Node rear;//保存该链队列的尾节点
private int size;//保存该链队列中已包含的节点数
//创建空链队列
public Duilie() {
//空链队列,front和rear都是null
front = null;
rear = null;
}
public Duilie(T element) {
front = new Node(element, null);
//只有一个节点,front、rear都指向该节点
rear = front;
size++;
}
// 获取顺序队列的大小
public int size() {
return size;
}
//入队
public void offer(T element) {
//如果该链队列还是空链队列
if (front == null) {
front = new Node(element, null);
rear = front;//只有一个节点,front、rear都指向该节点
} else {
Node newNode = new Node(element, null);//创建新节点
rear.next = newNode;//让尾节点的next指向新增的节点
rear = newNode;//以新节点作为新的尾节点
}
size++;
}
//出队
public T poll() {
Node oldFront = front;
front = front.next;
oldFront.next = null;
size--;
return oldFront.data;
}
// 判断顺序队列是否为空队列
public boolean isEmpty() {
return size == 0;
}
public String toString() {
//链队列为空链队列时
if (isEmpty()) {
return "[]";
} else {
StringBuilder sb = new StringBuilder("[");
for (Node current = front; current != null; current = current.next) {
sb.append(current.data.toString() + ", ");
}
int len = sb.length();
return sb.delete(len - 2, len).append("]").toString();
}
}
public static void main(String[] args) {
Scanner scanner1=new Scanner(System.in);
System.out.print("请输入第一个元素:");
String add=scanner1.next();
Duilie<String> queue = new Duilie<String>(add);
System.out.println(queue);
Scanner scanner=new Scanner(System.in);
while(true) {System.out.print("请输入1查看队列,输入2添加元素,输入3删除元素");
int a=scanner.nextInt();
if(a==1) {
System.out.println(queue);
}
if(a==2) {
Scanner scanner2=new Scanner(System.in);
System.out.print("请输入要添加的元素:");
String add2=scanner2.next();
queue.offer(add2);
System.out.println(queue);
}
if(a==3) {
//删除一个元素后
queue.poll();
System.out.println("删除一个元素后的队列:" + queue);
}
}
}
}
测试结果: