例题:假设有一个单链表list,请问如何将它翻转?
分析:我们可以使用迭代或递归的方式来解决这个问题。具体实现时,我们可以定义两个指针pre和cur,分别表示当前节点的前一个节点和当前节点,然后遍历链表,依次将cur的next指向pre,然后将pre和cur向后移动一个节点即可。
Java代码实现:
public static ListNode reverseList(ListNode head) {
if (head == null) {
return null;
}
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
代码分析:
- 定义两个指针pre和cur,分别表示当前节点的前一个节点和当前节点。
- 遍历链表,依次将cur的next指向pre,然后将pre和cur向后移动一个节点。