目录
题目描述:
-
输入: 1->2->3->4->5->NULL
-
输出: 5->4->3->2->1->NULL
解题思路:
首先我们拿到一个单链表,假设该单链表不为null,并且该单链表至少有两个节点
此时我们要思考反转单链表的指向,
- 设反转的节点为 cur
- cur 的前驱j节点 prev
- cur 的后继节点 next
遍历单链表直到cur.next==null时不需要反转
图解:
原单链表:
反转后:
代码实现:
//反转一个单链表
public Node reverseList() {
Node reverseHead = null;//反转后新的头结点
Node cur = this.head;//cur代表当前需要反转的节点
Node prev = null;//cur的前驱-->前驱信息
while(cur != null) {
Node curNext = cur.next;//保存后继信息
if(curNext == null) {
reverseHead = cur;//将最后一个节点赋值成新的头结点
}
cur.next = prev;
prev = cur;
cur = curNext;
}
return reverseHead;
}
反转过程: