6-1 带头结点的单链表就地逆置
时间: 2023-05-28 15:06:13 浏览: 216
带头结点的单链表,反转并输出
要实现带头结点的单链表就地逆置,可以按照如下步骤进行:
1. 定义三个指针变量:p、q、r。其中,p指向头结点,q指向第一个结点,r指向第二个结点。
2. 将p->next指向NULL,表示链表只剩下头结点。
3. 依次将q、r结点插入到p的后面,即q插入到p->next的位置,r插入到q->next的位置。插入操作可以参考带头结点的单链表插入操作。
4. 当r指向NULL时,表示链表已经反转完成。
代码示例:
```c
void reverseList(ListNode* head) {
if (head == NULL || head->next == NULL) {
return;
}
ListNode* p = head;
ListNode* q = p->next;
ListNode* r = q->next;
p->next = NULL;
while (r != NULL) {
q->next = p->next;
p->next = q;
q = r;
r = r->next;
}
q->next = p->next;
p->next = q;
}
```
阅读全文