记录一下单链表反转问题思路
while(cur != null){
next = cur.next;
cur.next = Reverse.next;
Reverse.next = cur;
cur = next;
}
设置一个空的反转链表reverse,原链表用一个cur指向原链表;
因为需要将链表每一个数据进行反转,相当于要动cur的连接,所以需要设置一个next指针指向cur还未改变连接时的cur.next,这样可以将cur用完后还能准确指向原链表的next;
需要将一整个原链表反转,所以循环设置为当cur非空时;
next指针在cur连接改变前,找到cur.next指向cur的下一个(原链表中);
cur.next=reverse.next表示断开cur与上面next的连接,将cur与reverse.next连接(cur的下一个指向reverse的下一个);
reverse.next = cur 表示reverse下一个节点连接上cur;
此时reverse与原链接的cur连接,原链接cur的下一个链接也接上了reverse的下一个链接,与原本的next连接断了;
此时就是:reverse->cur->原reverse.next
再将cur指针在原链表上后移,动到保存的next指针那(需要next指针的情况出现了);
继续继续直到原链表为空(cur != null为false)
相当于每次的cur都插入在reverse.next
可以画个图理解
欢迎大家讨论