【问题标题】:Java Queue.This program result is empty.Java 队列。此程序结果为空。
【发布时间】:2016-12-07 19:51:21
【问题描述】:

我正在学习队列数据结构。我想用链表创建队列。我想编程输出:10 20 程序输出:Queue empty -1 Queue empty -1

我在哪里犯错了?

代码如下:

class Node {
  int x;
  Node next;

  Node (int x){
    this.x=x;
    next=null;

}

}

public class QueQueLinked {
 static Node root=null;
 static Node latest=null;

 public static void enque(int x){
    if(root==null){
        Node root=new Node(x);
        root.x=x;
        root.next=null;
        latest=root;
    }

    else{
        latest.next=new Node(x);
        latest=latest.next;
        latest.next=null;


    }

}

public static int deque(){
    if(root==null){
        System.out.println("Queque empty");
        return -1;

    }
    int value=root.x;
    root=root.next;

    return value;
}

public static void main(String[] args) {
   enque(10);
   enque(20);

    System.out.println(deque());
    System.out.println(deque());
}

}

【问题讨论】:

    标签: java data-structures linked-list queue


    【解决方案1】:

    您正在覆盖您的根变量。你需要做的:

    public static void enque(int x){
        if(root==null){
            root=new Node(x);
            root.x=x;
            root.next=null;
            latest=root;
        }
    

    【讨论】:

      【解决方案2】:

      你的错误在这一行:

      Node root=new Node(x);
      

      您正在创建一个名为 root 的新 本地 变量,它隐藏了静态 字段 root。相反,你应该写:

      root=new Node(x);
      

      如果您有一个隐藏静态字段 root 的局部变量 root,您还可以通过在静态字段前面加上您的类名来访问该静态字段:

      QueQueLinked.root = new Node(x)
      

      但是,在这种情况下,您应该重新考虑变量名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-06
        • 2017-11-30
        • 2021-10-19
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        • 1970-01-01
        相关资源
        最近更新 更多