zoukankan      html  css  js  c++  java
  • LeetCode_链表操作1—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.

    ListNode *swapPairs(ListNode *head)
    {
         if(head==NULL) return head;
         int flag = 0;
         ListNode *p = head;
         ListNode *q = p->next;
         while(q!=NULL)
         {
            p->next = q->next;
            q->next = p;
            if(flag==0)//第一次操作时保存头指针 
            {
                 head = q;
            }
            flag = 1;
            ListNode *pre = p;//记录P
            //p后移,q指向p的后继,如果p==NULL,p=p->next;报错,此时只需要直接
            //将q赋NULL 
            p = p->next;
            if(p!=NULL)
            q = p->next;
            else 
            q = NULL;
            //若前面的p=p->next使得q==NULL,就不对了 
            if(q!=NULL)
            pre->next = q;
         }
         return head;
    } 
    关于链表的操作比较麻烦,虽然不会涉及到动态规划、搜索等复杂的算法思想,但是指针操作特别容易出错,面试或者笔试时,不容易准确快速的写出没有bug的代码,唯有平时好好总结,没事多看几遍啦。。。

  • 相关阅读:
    Tensorflow io demo (待)
    tf.Dataset
    tf.estimator
    并发队列
    Callable的Future模式
    hadoop之HDFS介绍
    线程池
    并发工具类
    并发编程
    初学hadoop之hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/sunp823/p/5601430.html
Copyright © 2011-2022 走看看