数据结构——链队列
程序员文章站
2022-05-04 16:24:14
...
一、链队列
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列。为了操作上的方便,我们将队头指针指向队列的虚拟头结点的后一个结点,而队尾指针指向最后一个结点。
二、链队列的实现
创建一个链表实现queue的接口
public class LinkedQueue<E> implements Queue<E> {
private LinkedList<E> list;
public LinkedQueue(){
list=new LinkedList();
}
}
获取队长和判空
//获取队长
@Override
public int getSize() {
return list.getSize(); //调用list的获取长度的函数
}
//判空
@Override
public boolean isEmpty() {
return list.isEmpty(); //调用list的判空函数
}
进队/出队
进队列这里调用了 list 的尾插函数,直接将新结点的地址给rear当前所指结点的指针域,再将rear指针后移即可。(示意图如下)
出队这里调用了 list 的头删函数,将第一个节点的指针域赋给头结点的指针域即可。(示意图如下)
//进队
@Override
public void enquque(E e) {
list.addLast(e); //调用了 list 的尾插函数
}
//出队
@Override
public E dequeue() {
return list.removeFirst(); //调用了 list 的头删函数
}
获取 队头/队尾 元素
@Override
public E getFront() {
return list.getFirst(); //调用list的获取表头元素的函数
}
@Override
public E getRear() {
return list.getLast(); //调用list的获取表尾元素的函数
}
清空队列
@Override
public void clear() {
list.clear(); //调用list的清空表的函数
}
迭代器
@Override
public Iterator<E> iterator() {
return list.iterator(); //调用list的迭代器
}
上一篇: chrome 调试 SASS
下一篇: MySQL逻辑架构及存储引擎简介