leetcode_24_Swap Nodes in Pairs

来源:互联网 发布:网络公开课观后感 编辑:程序博客网 时间:2024/05/17 03:47

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢微笑


Swap Nodes in Pairs

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.


//测试Accepted//要注意的一点是一旦是把A和B交换了以后,A的父节点就指向了B。这个是容易忘记的一点。class Solution {public:ListNode *swapPairs(ListNode *head) {ListNode* prev = NULL;ListNode* first = NULL;ListNode* second = head;int k = 1;while (second != NULL){if (k%2 == 0){first->next = second->next;second->next = first;if(prev != NULL)//when process prev pointer, we should be very carefulprev->next = second;else head = second;ListNode* tmp = first;first = second;second = tmp;}prev = first;first = second;second = second->next;k++;}return head;}};



//要注意的一点是一旦是把A和B交换了以后,A的父节点就指向了B。这个是容易忘记的一点。#include<iostream>using namespace std;#define N 5struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};class Solution {public:ListNode *swapPairs(ListNode *head) {ListNode* prev = NULL;ListNode* first = NULL;ListNode* second = head;int k = 1;while (second != NULL){if (k%2 == 0){first->next = second->next;second->next = first;if(prev != NULL)//when process prev pointer, we should be very carefulprev->next = second;else head = second;ListNode* tmp = first;first = second;second = tmp;}prev = first;first = second;second = second->next;k++;}return head;}};ListNode *creatlist(){ListNode *head;head=NULL;for(int i=0; i<N; i++){int a;ListNode *p;cin>>a;p = (ListNode*)malloc(sizeof(ListNode));p->val=a;p->next=head;head = p;}return head;}int main(){ListNode *list=creatlist();Solution lin;ListNode *outlist=lin.swapPairs(list);for(int i=0; i<N; i++){cout<<outlist->val;outlist = outlist->next;}}


1 0
原创粉丝点击