题目

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.

分析

如演示样例所看到的。给定一个链表。要求交换链表中相邻两个节点。

对于此题的程序实现,必须注意的是指针的判空,否则。一不注意就会出现空指针异常。

AC代码

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if (head == NULL || head->next == NULL)
return head; ListNode *p = head , *q = p->next;
//首先交换头两个结点,同一时候保存q后结点
ListNode *r = q->next; head = q;
p->next = r;
q->next = p;
if (r && r->next)
{
ListNode *pre = p;
p = p->next;
q = p->next; while (q)
{
//保存q结点后结点
ListNode *r = q->next; pre->next = q;
p->next = r;
q->next = p;
if (r && r->next)
{
pre = p;
p = r;
q = p->next;
}
else{
break;
}
}
}
return head;
}
};

GitHub測试程序源代码

最新文章

  1. [转载]使用PyQt来编写第一个Python GUI程序
  2. 异步调试神器Slog,“从此告别看日志,清日志文件了”
  3. 解高次同余方程 (A^x=B(mod C),0<=x<C)Baby Step Giant Step算法
  4. android 工具类之图片加工
  5. 设计模式_Memento_备忘录模式
  6. java_设计模式_组合模式_Composite Pattern(2016-08-12)
  7. JAVA中Singleton的用法
  8. Chrome浏览器扩展开发系列之十三:消息传递Message
  9. poj2524 解题报告
  10. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
  11. 2019-04-05 Spring Boot学习记录
  12. 【Python】Part1 应用1-Netcat
  13. javascript之封装(引用网络)
  14. hdu-6333-莫队
  15. EF查询某个时间段内的数据遇到坑!
  16. Java常考面试题(五)
  17. ASP.NET 实现验证码以及刷新验证码
  18. dorado7-发布
  19. loj#2721. 「NOI2018」屠龙勇士
  20. 装了wamp之后,80端口被占用解决办法

热门文章

  1. 私有成员 ECMAScript6 weakmap
  2. 验证Oracle处理速度
  3. Java Enum用法详解
  4. 强大又简单的响应式框架——Foundation 网格系统
  5. 机器学习数学|Taylor展开式与拟牛顿
  6. QT制作窗口切换的小程序
  7. C#自定义运行时窗体设计器Runtime FormDesigner
  8. Python进阶---面向对象第二弹
  9. log4net基础学习
  10. socket.io 入门篇(一)