java使用链表实现队列

时间:2021-08-05 17:37:53

队列使用Java进行链表实现,在网上找到了一张图,很好,借鉴一下

java使用链表实现队列

设置两个结点node,front指向队首元素,rear指向队尾;

上代码:



public class LinkedQueue {

Node front;//队头指针,指向队头节点
Node rail;//队尾指针,指向队尾节点

int size = 0;//记录队列长度


//构造函数
public LinkedQueue() {
front = rail = null;
}

public boolean isEmpty() {
return size == 0 ? true : false;
}

//添加元素
public boolean addQueue(Object ele) {
if (size == 0) {
front = new Node(null, ele);
rail = front;
size++;
return true;
}
Node s = new Node(null, ele);
//这块有个主意的地方,一旦rail设置了next属性,因为front节点与rail节点指向了同一个node节点,持有同一个结点的一个引用,因此front节点next属性也被填充
rail.setNext(s);
rail = s;
size++;
return true;
}


/**
* 删除元素,出队列
* @return
*/
public boolean deleteQueue() {
if (isEmpty()) {
System.out.println("当前队列为空");
return false;
}

front = front.next;
size--;
return true;

}


public static void main(String[] args) {
LinkedQueue queue = new LinkedQueue();

queue.addQueue(1);
queue.addQueue(2);
queue.addQueue(3);
queue.deleteQueue();

}


}

/**
* 首先链表底层是一个个结点
*/
class Node {

Node next;
Object element;

public Node(Node next, Object element) {
this.next = next;
this.element = element;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}

public Object getElement() {
return element;
}

public void setElement(Object element) {
this.element = element;
}

}

代码很少,但是思考却花了不少时间,记录我的学习历程