大家好,又见面了,我是全栈君。
problem:
Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
在单链表中。每两个结点交换一下位置。单个的不交换
thinking:
(1)这道题在不新建结点的情况下。指向关系复杂。慢慢分析
(2)head是头指针,指向第一个有效结点!
!
!
code:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *swapPairs(ListNode *head) { ListNode *index = head; ListNode *pre = NULL; ListNode *tmp = NULL; ListNode *modify = head;; int i=0; if(head==NULL||head->next==NULL) return head; while((index!=NULL)&&(index->next!=NULL)) { i++; pre=index; if(i==1) { head=pre->next; index = index->next; tmp = index->next; pre->next = tmp; index->next = pre; index=tmp; modify=pre; } else { index = index->next; tmp = index->next; modify->next=pre->next; pre->next = tmp; index->next = pre; index=tmp; modify=pre; } } return head; } };
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115548.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...