定义节点类:
public class Node<T> {
T data;
Node next;
public Node(){}
public Node(T t){
this.data = t;
}
}
定义自己的链表队列类:
public class My_linkedQueue<T> implements My_queue<T> {
private Node head;
private Node rear;
private int size;
public My_linkedQueue() {
head = null;
rear = null;
size = 0;
}
@Override
public void add(T t) {
Node node = new Node<>(t);
if (isEmpty()) { //如果队列为空,头指针第一次需要后移一位
head = node;
} else {
rear.next = node;
}
rear = node;
size++;
}
@Override
public T remove() {
T tmp;
if(isEmpty()){
new NullPointerException("queue is empty!");
tmp = null;
} else {
tmp = (T) head.data;
head = head.next;
size--;
}
return tmp;
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return head == null;
}
@Override
public T front() {
return (T) head.data;
}
}
定义测试类:
public class arrayTest {
public static void main(String[] args){
My_linkedQueue<Integer> ar = new My_linkedQueue<>();
ar.add(1);
ar.add(2);
ar.add(3);
ar.add(4);
ar.add(1);
ar.add(2);
ar.add(3);
ar.add(4);
while(!ar.isEmpty()){
Integer tmp = ar.remove();
System.out.println(tmp);
}
}
}