当前位置: 首页 > 知识库问答 >
问题:

使用带有堆栈的链表:节点中的私有访问错误

胡野
2023-03-14

我一直在获取x,下一个在节点中有私人访问权限。我试着在Node类和link List类中进行切换,但无论切换什么,都会出现相同的错误。我的节点保存在另一个文件中,看起来是这样的:``

public class Node{
	private Node next;
	private String name;
	private int ssn;
	private int key;

	public Node(String name, int ssn){
		this.name = name;
		this.ssn = ssn;
	}

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

	public int getSSN(){
		return this.ssn;
	}
	
	public int getKey(){
		return ssn%10000;
	}
	public String getName(){
		return name;
	}
	
	public Node getNext(){
		return this.next;
	}

	public void setSSN(int ssn){
		this.ssn= ssn;
	}

然后我的链表堆栈代码如下:

public class StackLL{
	private Node head; //Whatever is on top of the stack
	private int n; //Suze of the stack
	private Node next;
	
	public StackLL(){
		head = null;
		n = 0;
	}
	

	public boolean isEmpty(){
		return n == 0;
	}
		
	public void push(){
		Node temp = head;
		head = new Node();
		head.x = x;
		Node head.next = temp;
		n++;
	}
	
	public Node pop(){
		Node x = head.x;
		head = head.next;
		n--;
		return x;
	}
		
	public Node top(){
		return head.x;
	}
	
	// printStack method for StackLL
	public void printStack() {
		System.out.println(n);
		Node temp = head;
		while (temp != null) {
		System.out.println(temp.getKey());
		temp = temp.getNext();
        }
    }
	
}

共有1个答案

施飞昂
2023-03-14

我在你的代码中插入了关于我看到的问题的注释。在节点类中只有一个节点,在setNext()中

public void setNext(Node n){
    // assign the parameter to the field
    this.next = n;
}

StackLL课程中有一个数字:

public class StackLL{
    private Node head; //Whatever is on top of the stack
    private int n; //Suze of the stack
    // the field next is not used; just delete it
//  private Node next;

    public StackLL(){
        head = null;
        n = 0;
    }

    public boolean isEmpty(){
        return n == 0;
    }

    public void push(){
        Node temp = head;
        // The Node constructor takes two arguments
        head = new Node("Jim", 541365250);
        // x is not defined; delete this statement
//      head.x = x;
        // Node.next is not visible (it’s private), so use the setter 
        head.setNext(temp);
        n++;
    }

    public Node pop(){
        // if you want to return a Node, just return head
        Node x = head;
        // next is private, use the getter
        head = head.getNext();
        n--;
        return x;
    }

    public Node top(){
        // if you want to return a Node, just return head
        return head;
    }

    // printStack method for StackLL
    public void printStack() {
        System.out.println(n);
        Node temp = head;
        while (temp != null) {
        System.out.println(temp.getKey());
        temp = temp.getNext();
        }
    }

}

除了pop()中的局部变量,我没有发现x,所以我删除或更改了对它的引用。在生产代码中,返回仍然链接到其他节点的节点实例不是一个好主意,但我现在已经这么做了。

 类似资料:
  • 因此,我试图使用ArrayList在名为Table的类中创建卡片的“堆”,其中包含包含卡片对象(在单独的类中定义)的堆栈。 我是这样初始化的: 我的问题是,我不知道如何在ArrayList内的堆栈中添加内容。我对它的初始化是否错误?如果是,我如何修复它? 注意:MyArrayList和MyStack本质上只是ArrayList和Stack的稍微不同版本。

  • 所以我有一个堆栈,它允许典型的Push和Pop函数。我很难理解这一切实际上是如何在代码方面工作的。我在这里看到了这篇文章,最佳答案中的图片/图表,展示了列表是如何被“推”下来的,你指向最新的元素。我有一个 它挂接到结构“节点” 我如何结合一个推拉与"节点*下一步;"?最难理解的是我将如何真正做到这一点。我知道它最初指向空,然后如果我推一个2,4,6,它将是6,4,2,#。掌握如何实际使用链表中的指

  • 问题内容: 使用Java中的链表实现堆栈的最佳方法是什么? 编辑:我将最好的定义为最有效的使用干净的代码。我已经使用数组来实现堆栈,但是对链接列表不熟悉,因此想知道是否有人可以帮助我实现类似于以下内容的内容: 编辑:如果有人感兴趣,这是链表的实现。 问题答案: 假设您真的想从头开始,而不是使用现有的完美堆栈实现之一,那么我建议您: 创建一个“ MyStack ”类,该类实现所需的任何接口(也许列出

  • 好的,通过下面的代码,我从pop方法中的所有内容中得到了一个null指针异常。因此,我知道当该方法运行时,“head”必须为null。问题是我不知道为什么,我已经仔细检查了我的代码。请帮忙! 节点类: 链接列表类: 我在一个将十进制数转换为二进制数(对于一个类)的程序中实现了这一点。我可以打印第一个节点的数据,也就是链表的头,但是当再次弹出时,就会出现空值问题。

  • 我已经掌握了XPath的基本知识,但在确定以下内容是否可以在使用XPath的C代码中实现时遇到了一些困难(或者我是否需要将其转移到其他代码中,正如我目前所做的那样)。 我有一个XML文档,它由以下结构组成: 其中有多个设置参数值。现在我需要做的只是检索那些包含name属性某些值的setParameter节点。我可能有这些值的可能匹配列表,但它们不会是完全匹配,它们将是节点的name属性必须包含的值

  • 我正在尝试将一个图像推送到我的docker私有存储库: Docker告诉我: push引用存储库[living-registry.com:5000/busybox]Get https://living-registry.com:5000/v1/_ping:read tcp 195.83.122.16:39714->195.83.122.16:5000:read:对等体重置连接 这些命令正在Core