美文网首页
自定义队列

自定义队列

作者: junjun2018 | 来源:发表于2018-08-01 16:12 被阅读0次

队列:像排队吃饭一样,先到的先点菜,后来的后点菜。
以下代码展示使用单向列表实现的队列。

//链表是以节点为单位的,对于单向链表,每个节点中包含一个值和指向下一个对象的引用
public class Node {
    Object value;
    Node next;

    public Node(Object value) {
        this.value = value;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public Node getNext() {
        return next;
    }

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

public class MyQuene {
    int size = 0;

    public int getSize() {
        return size;
    }

    //维护一个head节点和foot节点
    Node head;
    Node foot;

    //加入队列尾部
    public void enQuene(Object value) {
        //如果是第一个节点,那么此节点既是根节点也是尾节点
        Node newNode = new Node(value);
        if (head == null) {
            head = foot = newNode;
        } else {
            //如果不是根节点,那么就将节点放入尾部,步骤,1,关联到尾部节点,2,foot指向此节点
            foot.setNext(newNode);
            foot = newNode;
        }
        size++;
    }

    //离队,即是把头节点指向下一个节点
    public Object deQuene() {
        Object value = head.getValue();
        head = head.getNext();
        size--;
        return value;
    }

    //显示队列头部元素
    public Object peek() {
        return head.getValue();
    }
}
//测试
public class QueneTest {
    public static void main(String[] args) {
        MyQuene myQuene = new MyQuene();
        myQuene.enQuene(1);
        myQuene.enQuene(2);
        myQuene.enQuene(3);
        myQuene.enQuene(4);

        while (myQuene.getSize() > 0) {
            System.out.println(myQuene.deQuene());
        }
    }
}
//结果:取出的顺序和进入的顺序一致。
1
2
3
4

在实现上,相比栈结构,取出数据的做法都是将头节点的指向变为下一个。
不同的是放入的顺序。栈是把新节点放在了头部,所以栈的顺序是后进先出,而队列则是把新节点放到了尾部,先被取出的则是先放进队列的,所以队列的特点是先进先出。

相关文章

  • NSOperation

    1.1、NSOperationQueue为我们提供两种队列,主队列和自定义队列,主队列运行在主线程上,自定义队列运...

  • NSOperationQueue&NSOperation

    NSOperationQueue有两种不同类型的队列:主队列和自定义队列。主队列运行在主线程之上,而自定义队列在后...

  • 重用机制原理

    重用池:2个NSMutableSet的队列,一个等待使用队列,一个使用中的队列。 自定义的重用池使用方法: 自定义...

  • GCD使用·记录

    一、开端 队列与任务创建 dispatch_queue_t 自定义GCD队列,区分串行队列与并行队列 dispat...

  • iOS线程常用方法记录一下

    1、自定义串行队列 2、自定义并行队列 3、获取系统的4个并行队列 4、子线程中执行完之后,回到主线程 5、所有任...

  • iOS NSOperation

    NSInvocationOperation,NSBlockOperation,自定义 RJOperation 队列...

  • 只言片语(暂记)

    1.GCD:开发者可以自定义队列:串行或并行队列。在自定义队列中被调度的所有block最终都将被放入到系统的全局队...

  • iOS-dispatch_queue_t

    获取系统队列 1.常见用法 自定义队列 1.并行队列,异步执行 同步任务 2.串行队列,异步执行

  • 【数据结构】【C#】009-队列:👬👬链队列

    C#数据结构:链队列 1、自定义链队列结构: 链队列节点类 2、链队列类: 链队列测试用例: 输出结果: 注: 队...

  • GCD自定义队列的学习小结(swift)

    1.创建自定义队列 (1.)DispatchQueen(label:"") 默认为串行队列 //串行 let se...

网友评论

      本文标题:自定义队列

      本文链接:https://www.haomeiwen.com/subject/uudrvftx.html