我正在尝试理解这种称为追加和前置的方法,但如果没有正确的视觉图像,我似乎无法理解它。 last.next到底意味着什么?为什么你的实例变量会被另一个实例变量所困?正如您所看到的,两个类一起工作以在链表中形成listnode。继承人代码:
在linkedlist.java类中的代码如下所示:
public class LinkedList {
/** First node in linked list - dummy node */
private ListNode first = new ListNode(null);
/** Last node in linked list */
private ListNode last = first;
/**
* Appends a String data element to this LinkedList.
*
* @param data
* the data element to be appended.
*/
public void append(String d) {
// TODO Code here for append
ListNode node = new ListNode(d);
last.next = node;
last = last.next;
length++;
//last = appendSecondNode;
//first = appendFirstNode;
} // method append(String)
/**
* Prepends (adds to the beginning) a String data element to this
* LinkedList.
*
* @param data
* the data element to be prepended.
*/
public void prepend(String d) {
// TODO Code here for prepend
// assigns to d to the first box of ListNode
// handle first prepend by making it
// work exactly like append
if(length==0){
append(d);
return;
}
//create new ListNode to prepend
ListNode toAddNode = new ListNode(d);
//set link from the node to add the previous
// first element so we don't lose the rest of the list
toAddNode.next = first.next;
//update the new first node
first.next = toAddNode;
// increment the length of the list
length++;
} // method append(String)
in another class we have a listnode.java the code looks like this:
// ListNode.java
public class ListNode
{
public String data;
public ListNode next;
public ListNode(String d)
{
data = d;
next = null;
} // constructor
} // class ShortNode
答案 0 :(得分:0)
LinkedList中的每个元素都有数据,以及指向下一个元素的链接。 你最后确实是列表中的最后一个元素。但ListNode仍然需要链接到下一个不存在的ListNode。解决方案是简单地使last.next为空,即为null。
当你附加一个元素时,你需要告诉LAST实际上有一个新的ListNode将在它之后。因此,您创建last.next = new Node。最后,过去的最后一个元素现在不再是最后一个元素了,所以你需要将last更新为=新节点。
同样对于第一个元素(虽然在这种情况下,我个人会将其重命名为'beforeFirst',因为它更清楚其目的)。
阅读LinkedLists上的维基百科页面: http://en.wikipedia.org/wiki/Linked_list
以下是我大学关于名单结构的讲义: http://undergraduate.csse.uwa.edu.au/units/CITS2200/Resources/LectureNotes/LectureNotes-Topic09-Lists.pdf
为什么你可以让一个实例变量卡在另一个实例上 变量
不确定你的意思......