欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构——链队列

程序员文章站 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的迭代器
    }

相关标签: DataStructure