我正在学习队列数据结构。我想用链表创建队列。我想编程输出:10 20 程序输出:队列为空-1队列为空-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());
}
}
答案 0 :(得分:2)
您正在覆盖您的根变量。你需要这样做:
public static void enque(int x){
if(root==null){
root=new Node(x);
root.x=x;
root.next=null;
latest=root;
}
答案 1 :(得分:2)
您的错误就在这一行:
Node root=new Node(x);
您正在创建名为root
的新本地变量,该变量隐藏了静态字段 root
。相反,你应该写:
root=new Node(x);
如果您有一个隐藏静态字段root
的局部变量root
,您还可以通过在其前面加上您的类名来访问静态字段:
QueQueLinked.root = new Node(x)
但是,在这种情况下,您应该重新考虑您的变量名称。