原题目
1、解题思路
2、小贴士
线性表是n个数据元素的有限序列,最常用的是链式表达,通常也叫做线性链表或链表,在链表中存储的数据元素也叫作结点,一个结点存储的就是一条数据记录,每个结点的结构包括两个部分:
①具体的数据值
②指向下一个结点的指针
在链表最前面,通常会有个头指针用来指向第一个结点
对于链表的最后一个结点,她的指针是个空指针
3、代码实现
#include<iostream>
using namespace std;
//链表节点类
class ListNode
{
public:
int val;//整数值
ListNode* next;//指向下一节点指针
ListNode(int val):val(val),next(nullptr){}//构造函数初始化列表
};
//翻转链表函数
ListNode* reverseLinkedList(ListNode* head)
{
if (!head || !head->next)
return head;
ListNode* pre = nullptr;
ListNode* cur = head;
ListNode* next = nullptr;
while (cur)
{
next = cur -> next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}
//打印链表
void printLinkedList(ListNode* head)
{
while (head)
{
cout << head->val << "->";
head = head->next;
}
cout << "nullptr" << endl;
}
int main()
{
//创建链表
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
head->next->next->next->next = new ListNode(5);
head = reverseLinkedList(head);
printLinkedList(head);
while (head)
{
ListNode* temp = head;
head = head->next;
delete temp;
}
return 0;
}