簡體   English   中英

重復鏈表上的最后一個元素

[英]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);

如果您修復了上面的循環,則此時的frontnull ,因此將變為:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM