写一个利用尾插法建立单链表,利用头插法完成单链表的逆置并输出逆置后的单链表 的代码
时间: 2023-08-29 13:04:40 浏览: 111
好的,这是一个简单的 C++ 实现:
```cpp
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* buildList() {
int n;
cin >> n;
ListNode* head = NULL;
ListNode* tail = NULL;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
ListNode* node = new ListNode(x);
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
ListNode* reverseList(ListNode* head) {
ListNode* prev = NULL;
ListNode* curr = head;
while (curr != NULL) {
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
void printList(ListNode* head) {
while (head != NULL) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
int main() {
ListNode* head = buildList();
head = reverseList(head);
printList(head);
return 0;
}
```
这里 `buildList()` 函数用于按照用户输入的数据利用尾插法建立单链表,并返回链表的头指针;`reverseList()` 函数用于利用头插法完成单链表的逆置,并返回逆置后的链表的头指针;`printList()` 函数用于输出链表的每个节点的值,方便我们观察逆置后的结果。在 `main()` 函数中,我们首先调用 `buildList()` 函数建立单链表,然后调用 `reverseList()` 函数逆置链表,最后调用 `printList()` 函数输出逆置后的链表。
阅读全文