将一个链表按逆序排列,即将链头当链尾,链尾当链头。 **输入提示:"\n请输入链表(非数表示结束)\n" **输入提示:"结点值:" **输出提示:"\n原来表:\n" **输出格式:"%4d" **输出提示:"\n\n反转表:\n" **输出格式:"%4d" 程序的运行示例如下: 请输入链表(非数表示结束) 结点值:3 结点值:4 结点值:5 结点值:6 结点值:7 结点值:end 原来表: 3 4 5 6 7 反转表: 7 6 5 4 3
时间: 2024-03-10 10:50:36 浏览: 163
好的,这是一道关于链表节点反转的问题。以下是 C++ 的程序实现,希望能够帮到你。
```
#include <iostream>
using namespace std;
// 定义链表节点
struct Node {
int val;
Node* next;
};
// 反转链表节点
Node* reverse(Node* head) {
Node* prev = nullptr;
Node* curr = head;
while (curr != nullptr) {
Node* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
int main() {
Node* head = nullptr;
Node* p = nullptr;
int num;
cout << "\n请输入链表(非数表示结束)\n";
// 输入链表节点
while (cin >> num) {
if (num == -1) break;
Node* node = new Node();
node->val = num;
node->next = nullptr;
if (head == nullptr) {
head = node;
p = head;
} else {
p->next = node;
p = p->next;
}
}
// 输出原链表
cout << "原来表:";
p = head;
while (p != nullptr) {
cout << p->val << " ";
p = p->next;
}
// 反转链表
head = reverse(head);
// 输出反转后的链表
cout << "\n\n反转表:";
p = head;
while (p != nullptr) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
return 0;
}
```
输入样例:
```
3
4
5
6
7
-1
```
输出样例:
```
原来表: 3 4 5 6 7
反转表: 7 6 5 4 3
```
阅读全文