首页 > 其他分享 >LeetCode 206 反转链表

LeetCode 206 反转链表

时间:2022-09-30 23:33:39浏览次数:74  
标签:head ListNode val 206 int next 链表 LeetCode

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

示例 1:


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


输入:head = [1,2]
输出:[2,1]
示例 3:

输入:head = []
输出:[]
 

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
 

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

idea:第一眼看上去像是求一个数组的倒序,我是通过循环将头结点接到尾结点后实现的

 

/**  * Definition for singly-linked list.  * 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) {}  * };  */ class Solution { public:     ListNode* reverseList(ListNode* head) {         int n=0;         ListNode* p=head;         while(p&&p->next){  //找到尾结点p             p=p->next;             n++;         }         for(int i=1; i<=n; i++){  //头结点后移,并且将原有头结点接到尾结点后             ListNode* q=head;             head=head->next;             q->next=p->next;    //这里第一次实现忘记将尾结点后原有的东西接上去             p->next=q;         }         return head;     } }; TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:head,ListNode,val,206,int,next,链表,LeetCode
From: https://www.cnblogs.com/Ting-LOVE/p/16746557.html

相关文章