首页 > 代码库 > 翻转链表
翻转链表
翻转链表
翻转一个链表
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
挑战
在原地一次翻转完成
标签
链表 优步 脸书
1 /** 2 * Definition of ListNode 3 * 4 * class ListNode { 5 * public: 6 * int val; 7 * ListNode *next; 8 * 9 * ListNode(int val) { 10 * this->val = val; 11 * this->next = NULL; 12 * } 13 * } 14 */ 15 class Solution { 16 public: 17 /** 18 * @param head: The first node of linked list. 19 * @return: The new head of reversed linked list. 20 */ 21 ListNode *reverse(ListNode *head) { 22 // write your code here 23 ListNode *l1=NULL,*l2=NULL,*l3=NULL; 24 25 l1 = head; 26 // 链表没有节点或有一个节点 27 if(l1 == NULL || l1->next == NULL) { 28 return l1; 29 } 30 l2 = l1->next; 31 // 链表有2节点 32 if(l2->next == NULL) { 33 l2->next = l1; 34 l1->next = NULL; 35 return l2; 36 } 37 l3 = l2->next; 38 // 链表有3个以上节点 39 if(l2->next != NULL) { 40 while(l2 != l3) { 41 l2->next = l1; 42 if(l1 == head) 43 l1->next = NULL; 44 l1 = l2; 45 l2 = l3; 46 47 if(l3->next != NULL) 48 l3 = l3->next; 49 } 50 l2->next = l1; 51 return l2; 52 } 53 } 54 }; 55
翻转链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。