2015-10-31 31 views
1

我想實現linkedList類,添加一個方法reverse(int n)來反轉鏈表。例如,我有一個鏈表{A - > B - > C - > D - > E)。當我調用reverse(4)時,鏈表將變爲D - > C - > B - > A - > E。在JAVA中實現鏈接列表(反向不使用迭代器)

我想避免使用迭代器,構造新節點並複製數據值。有沒有人有想法如何做到這一點?我知道有一個關於反轉鏈接列表的帖子,但是一個是顛倒整個鏈接列表。

非常感謝您的幫助!

+0

只要使用相同的原則。 –

回答

1

既然你不提供您的LinkedList的落實,我只能提供總的想法:
完整的列表可以通過簡單地swaping指針到以前的節點和下一個節點和更新的字段被逆轉最後和第一個節點。

void reverse() 
    node tmp = first 
    first = last 
    last = tmp 

    while(tmp.next != null) 
     node swap = tmp.next 
     tmp.next = tmp.previous 
     tmp.previous = swap 

     tmp = swap 

我要把它留給你添加的範圍