博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode_链表操作1—Swap Nodes in Pairs
阅读量:5108 次
发布时间:2019-06-13

本文共 1006 字,大约阅读时间需要 3 分钟。

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的代码,唯有平时好好总结,没事多看几遍啦。。。

转载于:https://www.cnblogs.com/sunp823/p/5601430.html

你可能感兴趣的文章
尚学堂Java面试题整理
查看>>
MySQL表的四种分区类型
查看>>
[BZOJ 3489] A simple rmq problem 【可持久化树套树】
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
Loj #139
查看>>
StringBuffer是字符串缓冲区
查看>>
hihocoder1187 Divisors
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
Ubuntu下安装MySQL及简单操作
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
移动开发平台-应用之星app制作教程
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
伪类与超链接
查看>>
centos 7 redis-4.0.11 主从
查看>>
博弈论 从懵逼到入门 详解
查看>>