题目链接:
分析:最基础的数据结构为题,方法多样,可以模拟、头插法,甚至转成数组再转换回来,熟练掌握一种即可,这里使用头插法。
头插法:创建链表的一种经典的方式,每次将所需要插入的结点从链表的头部插入,与之对应的还有尾插法。
算法思路:模拟头插法的过程,我们可以先设置一个临时结点pre表示表头,然后遍历题目中给出的结点,将每个结点都从头部插入,对需要插入的这个结点,先让它指向临时结点pre所指向的位置,然后让pre->next指向这个需要插入的结点即可。
参考代码:
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* pre=new ListNode(-1);//临时头结点
while(head){//遍历题目中的链表
ListNode* temp=head->next;//定义临时结点 存储所需遍历结点的下一个结点
head->next=pre->next;//将当前结点指向头结点所指的部分
pre->next=head;//让头结点指向当前结点
head=temp;//向下一个结点移动
}
return pre->next;//因为刚开始设置了临时头结点 所以返回下一个
}
};