所以我一直在为即将到来的java考试学习,我遇到了一些我从未完全理解的东西。如果有人能向我解释,我会非常感激。
好的,我遇到的问题是理解为什么以下的AddToEnd方法有效。在我看来,所有的temp都是一个IntNode,表示列表中的最后一个元素,那么为什么通过修改temp以某种方式改变原始列表呢?在此先感谢您的帮助!
public class IntList {
private IntNode front; //first node in list
//-----------------------------------------
// Constructor. Initially list is empty.
//-----------------------------------------
public IntList() {
front = null;
}
//-----------------------------------------
// Adds given integer to front of list.
//-----------------------------------------
public void addToFront(int val) {
front = new IntNode(val,front);
}
//-----------------------------------------
// Adds given integer to end of list.
//-----------------------------------------
public void addToEnd(int val) {
IntNode newnode = new IntNode(val,null);
//if list is empty, this will be the only node in it
if (front == null)
front = newnode;
else {
//make temp point to last thing in list
IntNode temp = front;
while (temp.next != null)
temp = temp.next;
//link new node into list
temp.next = newnode;
}
}
//*************************************************************
// An inner class that represents a node in the integer list.
// The public variables are accessed by the IntList class.
//*************************************************************
private class IntNode {
public int val; //value stored in node
public IntNode next; //link to next node in list
//------------------------------------------------------------------
// Constructor; sets up the node given a value and IntNode reference
//------------------------------------------------------------------
public IntNode(int val, IntNode next) {
this.val = val;
this.next = next;
}
}
}
答案 0 :(得分:1)
在我看来,所有的temp都是一个IntNode,表示列表中的最后一个元素
我怀疑你意识到这是你的错误,但这是一个难以理解的概念。
实际上,点(或者更准确地说指的是)列表中的最后一个元素。
当代码显示temp.next = newNode
时,您实际上是在列表中的 last 条目的next
引用指向新条目 - 这正是你想要什么。