给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。

请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。

示例 1:

输入: 1->2->3->4->5->NULL
输出: 1->3->5->2->4->NULL
示例 2:

输入: 2->1->3->5->6->4->7->NULL
输出: 2->3->6->7->1->5->4->NULL
说明:

应当保持奇数节点和偶数节点的相对顺序。
链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* oddEvenList(ListNode* head) {ListNode* p=head;if(p==NULL||p->next==NULL||p->next->next==NULL)return p;ListNode*q,*temp;q=p->next;   while(q!=NULL&&q->next!=NULL){temp=p->next;p->next=q->next;q->next=q->next->next;p=p->next;p->next=temp;q=q->next;}return head;}
};

题目来源:leetcode

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。相关推荐

  1. c语言给定一个单链表输入k,C语言实现单链表(不带头结点)的基本操作

    链表在数据结构和算法中的重要性不言而喻.这里我们要用C来实现链表(单链表)中的基本操作.对于链表的基本概念请参考<数据结构与算法之链表>这篇博客.示例代码上传至 https://githu ...

  2. 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。 请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。如下实例。示例 :输入: 1->2->3->4-

    #include<stdio.h> #include<stdlib.h>struct LB {int data;struct LB *next; };struct LB *Cr ...

  3. 设计一个算法,删除一个单链表L中元素值最大的结点(假设最大值结点是唯一的)

    设计一个算法,删除一个单链表L中元素值最大的结点(假设最大值结点是唯一的). #include <stdio.h> #include<malloc.h> typedef str ...

  4. Leetcode打卡四:将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→… 要求使用原地算法,并且不改变节点的

    题目: 将给定的单链表L: L 0→L 1→-→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→- 要求使用原地算法,并且不改变节点的值 例如: 对于给定 ...

  5. 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...

  6. 判断一个单链表中是否存在环

    #判断一个单链表中是否存在 环. #设置两个指针(fast, slow),初始值都指向头,slow每次前进1步,fast每次前进2步, 大概的思路如下: 如果链表存在环,则fast必定先进入环,而sl ...

  7. 用python 判断一个单链表是否有环

    文章目录 用python 判断一个单链表是否有环. 第二次做DAY20201130 [141. 环形链表](https://leetcode-cn.com/problems/linked-list-c ...

  8. 判断一个单链表是否有环,若有,找出环的入口节点

    题目:如何判断一个单链表是否有环?若有环,如何找出环的入口节点. 一.单链表是否有环 思路分析: 单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形 ...

  9. 如何逆置一个单链表(两种方法)?

    在做关于单链表的一些算法题的时候,往往需要将单链表逆置后操作更加方便,但是一般说起来逆置,常用循环遍历单链表,使用头插法再次创建一个单链表实现逆置,但是这样不仅有点浪费存储空间,而且还容易搞混,那么如 ...

最新文章

  1. 深度学习11个实用技巧
  2. 2017.10.9 JVM入门学习
  3. autofac JSON文件配置
  4. npm install --save和npm install --save-dev的区别
  5. css不常用,不常用的 CSS
  6. LLS战队高级软件工程第九次作业敏捷冲刺七
  7. 工厂模式例子之计算器的实现
  8. 最大化_怎样保证油压缓冲器工作效率最大化?
  9. Bootstrap 按钮的外观
  10. python打印当前文件的绝对路径,并解决打印为空
  11. python变量及其作用域,闭包
  12. Mac系统功能快速切换状态栏小工具One Switch for Mac
  13. Ubuntu 14中,Foxmail关联163邮箱账号时,总提示“密码错误”的解决方案
  14. Deep learning-based method coupled with small sample learning for solving partial differential equat
  15. iOS中 @synthesize 和 @dynamic 区别
  16. mysql数据备份与导入(二)
  17. LPC1768的iic通讯
  18. 数据挖掘实战—家用热水器用户行为分析与事件识别
  19. 嵌入式之SD卡/U盘只读问题解决方案(FAT只读修复方式)
  20. Java打开jnlp

热门文章

  1. 《华为数据之道》-第7章 打造“数字孪生”的数据全量感知能力
  2. 二叉树构建的各种方法
  3. 云原生相关介绍,什么是云原生很全面
  4. 【算法和数据结构】模拟和暴力
  5. 十大城市男人魅力新榜 [转帖]
  6. Qt实现的注册码工具
  7. 2023年JAVA JDK8的安装与配置(附JAVA8安装包)
  8. 国内股票KDJ指标计算,Python实现KDJ指标计算,Talib实现KDJ指标计算
  9. MFC中使用sqlite3操作数据库 创建,插入数据,查询数据
  10. Tensorflow.js||使用 CNN 识别手写数字