链表反转常用的两种方式
1.建立虚拟头结点辅助反转

Java 实现
public static ListNode reverseListByDummyNotCreate(ListNode head) {
ListNode ans = new ListNode(-1);
ListNode cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = ans.next;
ans.next = cur;
cur = next;
}
return ans.next;
}
python实现
def reverseList1(self, head):
if not head or not head.next: # 如果链表为空,或者只有一个节点
return head
ans = ListNode(-1)
cur = head
while cur:
next = cur.next
cur.next = ans.next
ans.next = cur
cur = next
return ans.next
2.直接操作链表实现反转

Java实现
public static ListNode reverseListSimple(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
python实现
def reverseList2(self, head):
if not head or not head.next: # 如果链表为空,或者只有一个节点
return head
cur = head.next
head.next = None
while cur:
next = cur.next
cur.next = head
head = cur
cur = next
return head

![[C++学习] 多进程通信共享内存](https://img-blog.csdnimg.cn/20750f310908451e9a1d50f1bad475c0.png#pic_center)

















