给你单链表的头节点 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 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