我正在尝试实现linkedList类,添加一个reverse(int n)方法来反转链表。例如,我有一个链表{A - > B - > C - > D - > E)。当我调用reverse(4)时,链表将变为D - > C - > B - > A - > E。
我试图避免使用迭代器,构造新节点并复制数据值。有谁知道怎么做?我知道有一篇关于逆转链表的帖子,但是有一篇文章正在颠倒整个链表。
非常感谢您的帮助!
答案 0 :(得分:1)
由于您未提供LinkedList
的实施,我只能提供一般性的想法:
只需将指针交换到上一个节点和下一个节点并更新最后一个节点和第一个节点的字段即可反转完整列表。
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
我会留给你添加界限