题目链接:力扣
代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
// 链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode* next) : val(x), next(next) {}
};
// 初始化链表
struct ListNode* init()
{
ListNode* head = new ListNode(5); // 头结点
ListNode* ListNode1 = new ListNode(6);
ListNode* ListNode2 = new ListNode(7);
ListNode* ListNode3 = new ListNode(8);
ListNode* ListNode4 = new ListNode(9);
head->next = ListNode1; // 连接在一起
ListNode1->next = ListNode2;
ListNode2->next = ListNode3;
ListNode3->next = ListNode4;
ListNode4->next = nullptr;
return head;
}
// 反转链表
ListNode* reverseList(ListNode* head) {
ListNode* pre = nullptr;
ListNode* cur = head;
while (cur) {
ListNode* tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
int main() {
ListNode* head = init(); // 初始化
head = reverseList(head); // 调用反转方法
while (head != nullptr) // 循环条件:头结点不为空
{
cout << head->val << endl; // 输出结点的值
head = head->next;
}
return 0;
}
运行结果:
提交结果: