24-Swap Nodes In Pairs

来源:互联网 发布:mac未知来源 编辑:程序博客网 时间:2024/05/22 13:14

难度:medium
类别:linked list

1.题目描述

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.

2.算法分析

这道题目其实非常简单,算不上medium难度,因为只需要将相邻两个节点的值进行交换即可。

3.代码实现

#include <iostream>using namespace std;struct ListNode {    int val;    ListNode *next;    ListNode(int x) :val(x), next(NULL) {}};//  ListNode* swapPairs(ListNode* head) {    int count = 0;    ListNode* temp = head;    int num = 0;    while (temp != NULL) {        if (count % 2 == 0) {            if (temp->next != NULL) {                num = temp->val;                temp->val = temp->next->val;                temp->next->val = num;            }        }        count++;        temp = temp->next;    }    return head;}void printList(ListNode* head) {    while (head != NULL) {        cout << head->val << " ";        head = head->next;    }    cout << endl;}int main() {    int n, num;    cin >> n;    ListNode* head = NULL;    ListNode* temp = NULL;    for (int i = 0; i < n; ++i) {        cin >> num;        if (i == 0) {            head = new ListNode(num);            temp = head;        }        else {            head->next = new ListNode(num);            head = head->next;        }    }    printList(temp);    temp = swapPairs(temp);    printList(temp);    system("pause");    return 0;}