当前位置:   article > 正文

LeetCode第16天--反转链表_给你一个单链表的头节点 head ,请你反转链表,并输出反转后的链表。 例: 输入: 1->

给你一个单链表的头节点 head ,请你反转链表,并输出反转后的链表。 例: 输入: 1->

问题描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
输入:head = [1,2]
输出:[2,1]
输入:head = []
输出:[]

解题思路 :我们需要三个指针变量,首先prev指向NULL,cur指向head,tmp指向cur->next,tmp在这里的作用及就是保存cur的下一个节点。我们每次操作只需要变换cur指针的指向,使它指向前边的节点即可,前边的节点用prev指向,变换完后将三个指针同步后移即可。

画图实现:

 代码实现

  1. struct ListNode* reverseList(struct ListNode* head)
  2. {
  3. struct ListNode* prev = NULL;
  4. struct ListNode* cur = head;
  5. while(cur)
  6. {
  7. struct ListNode* tmp = cur->next;
  8. cur->next = prev;
  9. prev = cur;
  10. cur= tmp;
  11. }
  12. return prev;
  13. }
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号