把一个带头结点的单链表的倒置vc++6.0完整代码
时间: 2023-09-04 19:11:09 浏览: 37
下面是一个带头结点的单链表的倒置的VC++6.0完整代码:
```c++
#include <iostream>
using namespace std;
struct ListNode
{
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head)
{
if (head == NULL || head->next == NULL)
return head;
ListNode* p = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return p;
}
int main()
{
ListNode* head = new ListNode(0);
ListNode* p = head;
for (int i = 1; i <= 5; i++)
{
ListNode* node = new ListNode(i);
p->next = node;
p = p->next;
}
cout << "Original list: ";
p = head->next;
while (p)
{
cout << p->val << " ";
p = p->next;
}
head->next = reverseList(head->next);
cout << "\nReversed list: ";
p = head->next;
while (p)
{
cout << p->val << " ";
p = p->next;
}
return 0;
}
```
这个程序使用递归算法实现了带头结点的单链表的倒置。在 `main` 函数中,我们首先创建了一个带头结点的单链表,然后输出原始的链表内容。接着,我们调用 `reverseList` 函数将链表倒置,并将头结点的 `next` 指向倒置后的链表头结点。最后,我们输出倒置后的链表内容。