[英]Repeating last element on linked list
我有一個具有以下值的linkNode(名為List)
xyz 1 2 3
我希望它看起來像這樣:
xyz 1 2 3 3
我寫了以下內容:
ListNode front=list;
ListNode back = list;
while (front != null)
{
back = front;
front = list.getNext();
}
ListNode x = new ListNode (front.getValue(),back.getNext());
back.getNext().setNext(x);
為什么這不起作用? 我並沒有真正得到一個錯誤,當我運行代碼時,它會打印出我以前使用的方法,而這個方法只是空白
打印方法:
public static void print(ListNode list)
{
String p="";
while(list!=null)
{
p+=list.getValue()+" ";
list=list.getNext();
}
System.out.println(p);
}
添加節點的方法:
ListNode z = new ListNode("x",
new ListNode("y",
new ListNode("z",
new ListNode("1",
new ListNode("2",
new ListNode("3",,null)))));
好的,這里有很多問題。 在循環中,您可以執行以下操作:
front = list.getNext();
那將無處可去,只是重復成為列表的頭。 嘗試:
front = front.getNext();
接下來,您要做:
ListNode x = new ListNode (front.getValue(),back.getNext());
back.getNext().setNext(x);
如果您修復了上面的循環,則此時的front
為null
,因此將變為:
ListNode x = new ListNode (null.getValue(), null);
null.setNext(x);
這將嚴重崩潰,所以我認為您想要:
ListNode x = new ListNode(back.getValue(),back.getNext());
back.setNext(x);
但是,在沒有看到setNext()
等代碼的情況下,我不太確定這是否正確。
這是完整的解決方案。
節點的結構為:
class ListNode{
char ch;
ListNode next;
ListNode(char ch,ListNode next){
this.ch=ch;
this.next=next;
}
}
然后在末尾添加最后一個字符的方法是:
private ListNode repeatLastChar(ListNode list) {
ListNode front=list;
ListNode back = list;
while (front != null)
{
back = front;
front = front.next;
}
ListNode x = new ListNode (back.ch,null);
back.next=x;
return list;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.