把一个带头结点的单链表的倒置vc++6.0完整代码
时间: 2023-09-04 11:11:09 浏览: 85
以下是一个带头结点的单链表的倒置的VC++ 6.0完整代码:
```c++
#include <iostream>
using namespace std;
// 定义单链表中的节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 带头结点的单链表的倒置函数
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* curr = head->next;
while (curr != nullptr) {
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
head->next = prev;
return head;
}
int main() {
// 创建带头结点的单链表
ListNode* head = new ListNode(-1); // 头结点
ListNode* p1 = new ListNode(1);
ListNode* p2 = new ListNode(2);
ListNode* p3 = new ListNode(3);
ListNode* p4 = new ListNode(4);
head->next = p1;
p1->next = p2;
p2->next = p3;
p3->next = p4;
// 输出原始链表
ListNode* p = head->next;
while (p != nullptr) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
// 倒置链表
head = reverseList(head);
// 输出倒置后的链表
p = head->next;
while (p != nullptr) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
return 0;
}
```
该代码使用迭代法实现了带头结点的单链表的倒置,即将链表中每个节点的 next 指针指向它的前驱节点。注意,题目中要求的是带头结点的单链表的倒置,因此在创建链表时需要先创建一个头结点,并将其 next 指针指向第一个节点。
阅读全文