单链表头插法逆置完整代码
时间: 2024-12-19 10:23:39 浏览: 15
单链表头部插入法逆置是指将一个已排序的单链表逆序排列,通常的做法是使用三个指针,分别指向当前节点、前一个节点和新的头节点。以下是使用C++编写的一个简单示例:
```cpp
#include <iostream>
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr; // 前驱节点
ListNode* curr = head; // 当前节点
ListNode* new_head = nullptr; // 新链表的头
while (curr != nullptr) { // 遍历整个链表
ListNode* next_temp = curr->next; // 保存当前节点的下一个节点
curr->next = prev; // 将当前节点的next指向前一个节点
prev = curr; // 更新前驱节点为当前节点
curr = next_temp; // 移动到下一个节点
}
new_head = prev; // 新链表的头就是原链表的尾部
return new_head;
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp) {
std::cout << temp->val << " ";
temp = temp->next;
}
std::cout << "\n";
}
int main() {
ListNode* list = new ListNode(1);
list->next = new ListNode(2);
list->next->next = new ListNode(3);
list->next->next->next = new ListNode(4);
std::cout << "Original List: ";
printList(list);
list = reverseList(list);
std::cout << "Reversed List: ";
printList(list);
return 0;
}
```
在这个代码中,`reverseList`函数接收一个链表头作为输入,通过循环和指针操作实现了链表的逆序。然后在`main`函数中创建了一个示例链表,并展示了逆序后的结果。
阅读全文