用链表实现队列
用链表实现队列,虽然听起来有点浪费感情~
队列
队列定义,参见百度。
简要的说,进行插入操作的端称为队尾,进行删除操作的端称为队头,或者用一种大家已经默认接受的概念叫做先进先出。(用代码来说)
换一种方式来阐述:
属性 head,tail,size;
方法 isEmpty();push();pop();
public class Queue<V> {
private Node<V> head;
private Node<V> tail;
private int size;
//构造方法
public Queue(){
head = null;
tail = null;
size=0;
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return this.size;
}
//TODO 返回值和size都没做很好的处理
public void push(V value){
Node<V> current = new Node<V>(value);
if(tail == null){
head = current;
tail = current;
}else{
tail.next = current;
tail = current;
}
size++;
}
//先进先出
public V pop(){
V value = null;
if(head != null){
value = head.value;
head = head.next;
size--;
}else{
tail = null;
}
return value;
}
}
反思&总结
目前仍然处于恶补基础阶段,希望这个阶段持续2~3周,并坚持每天一更。届时,会更新下一个系列,就是基于LeetCode上面的题目由简到繁;另外,已经申请仓颉语言,后续这些系列都会加上仓颉编程语言