zoukankan      html  css  js  c++  java
  • 【LeetCode】24. 两两交换链表中的节点

    【题目描述】

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例:

    给定 1->2->3->4, 你应该返回 2->1->4->3.

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs

    【解题思路】

    增加一个哑节点dummy,dummy->next指向head;

    保持后续操作的一致性;

    【提交代码】

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     struct ListNode *next;
     6  * };
     7  */
     8 struct ListNode* swapPairs(struct ListNode* head){
     9     struct ListNode *dummy;
    10     struct ListNode *pre;
    11     struct ListNode *cur;
    12     struct ListNode *next;
    13     struct ListNode *tmp;
    14 
    15     dummy = (struct ListNode *)malloc(sizeof(struct ListNode));
    16     dummy->next = head;
    17 
    18     pre = dummy;
    19     cur = head;
    20 
    21     while( cur != NULL && cur->next != NULL )
    22     {
    23         next = cur->next;
    24 
    25         tmp = next->next;
    26 
    27         pre->next = next;
    28         next->next = cur;
    29         cur->next = tmp;
    30 
    31         pre = cur;
    32         cur = tmp;
    33         //pre = pre->next->next;
    34     }
    35 
    36     return dummy->next;
    37 }
  • 相关阅读:
    VERSIONINFO Resource
    WCF 学习文摘
    hook 学习
    COM 学习
    ActiveX开发
    Word 开发资料集合
    Loops with PL/SQL
    TWain 在 Qt4 中的调用方法
    从 TWAIN 设备中扫描图像
    Qt enum使用总结
  • 原文地址:https://www.cnblogs.com/utank/p/13262162.html
Copyright © 2011-2022 走看看