1.先通过遍历链表找到尾节点(图中list.next) (该节点即反转后的头节点)
保存好该节点
2.使尾节点的next指针指向前一个节点 并且断开前一个结点的next指针(赋null)
list.next.next = list;
list.next = null;
3.重复2操作
4.重复2操作
Java代码:
public ListNode reversalList(ListNode list){
if(list == null || list.next == null){
return list;
}
ListNode p = reversalList(list.next);
list.next.next = list;
list.next = null;
return p;
}
C代码
struct list* reversalList(struct list*){
if(list == NULL || list->next == NULL)
return list;
struct list* p = reversalList(list.next);
list->next->next = list;
list->next = NULL;
return p;
}