#ifndef LINKLIST_H_
#define LINKLIST_H_

struct Node
{
    Node* ptr_;
    int data_;

Node():ptr_(0), data_(0) {}
    Node(int i):ptr_(0), data_(i) {}
};

class LinkList
{
public:
    LinkList();
    ~LinkList();

// 在链表的最后一个节点之后添加节点node
    void add_node(Node* node);

// 顺序打印链表节点数据
    void disp();

// 交换链表的奇数节点和偶数节点
    void swap_odd_even();

private:
    // 清空链表
    void clr_list();

// 表头指针
    Node* first_;
   
    // 表尾指针
    Node* last_;
};

#endif

#include "LinkList.h"
#include "iostream"
using namespace std;

LinkList::LinkList()
{
    first_ = new Node;
    last_ = first_;
}

LinkList::~LinkList()
{
    clr_list();
}

void LinkList::add_node(Node* node)
{
    last_->ptr_ = node;
    last_ = node;
}

void LinkList::clr_list()
{
    Node* tmp;
    while(first_->ptr_ != 0)
    {
        tmp = first_->ptr_;
        first_->ptr_ = tmp->ptr_;
        delete tmp;
    }
}

void LinkList::disp()
{
    Node* cur = first_->ptr_;
    while(cur != 0)
    {
        cout<<cur->data_<<endl;
        cur = cur->ptr_;
    }
}

void LinkList::swap_odd_even()
{
    Node* odd = first_->ptr_; // 初始奇数节点
    Node* even = odd->ptr_;   // 初始偶数节点

Node* pre = first_;       // 初始前序节点
    Node* next = even->ptr_;  // 初始后序节点

while(1)
    {
        // 交换偶数奇数节点
        pre->ptr_ = even;           
        even->ptr_ = odd;   
        odd->ptr_ = next;

pre = odd;     // 更新pre

odd = next;    // 更新odd
                  
        if(odd == 0)
        {
            last_ = odd;
            break;
        }

even = next->ptr_;  // 更新even

if(even == 0)
        {
            last_ = even;
            break;
        }
       
        next = even->ptr_;  // 更新next
    }
}

int main()
{
    LinkList list;
    for(int i=1; i<=11; i++)
    {
        list.add_node(new Node(i));
    }

list.disp();

cout<<endl<<"奇数节点和偶数节点交换后的结果如下"<<endl;

list.swap_odd_even();

list.disp();

return 0;
}

交换链表的奇数节点和偶数节点相关推荐

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

    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1),时 ...

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

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

  3. 奇数点偶数点fft的matlab,奇偶链表(奇数节点位于偶数节点之前) Odd Even Linked List...

    问题: Given a singly linked list, group all odd nodes together followed by the even nodes. Please note ...

  4. 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)

    问题描述:将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转 示例: 交换前链表的顺序 交换后链表的顺序 4→5→7→1→6   ==>  1→7→5 ...

  5. 奇数位升序偶数位降序链表排序

    题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的. 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9. 分析: 这道题可以分成三步: 首先根据奇数位和偶数 ...

  6. java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...

    2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序             交换后链表的顺序 4→5→3→1→2   == ...

  7. 1.删除链表的奇数节点 2.删除链表的偶数节点

    1.删除链表的奇数节点 /** 删除奇数节点*/public static ListNode deleteOddNode(ListNode head) {if (head == null)return ...

  8. 力扣 两两交换链表中的节点

    力扣 两两交换链表中的节点 题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2-> ...

  9. 5.18 优先队列(堆) 滑动窗口(二) 交换链表的节点

    295. 数据流的中位数 最简单的思路暴力法,每次读入数据都进行排序 但是中位数只对中间的一个或两个数据感兴趣,其他数没有必要进行交换或者比较 https://leetcode-cn.com/prob ...

最新文章

  1. MegEngine计算图、MatMul优化解析
  2. windows下实现Git在局域网使用
  3. spring启动过程之源码跟踪(续beanfactory)--spring Debug
  4. Fragment与Activity交互(使用接口)
  5. 前端基础进阶(十):面向对象实战之封装拖拽对象
  6. 读掘金小册组件精讲总结2
  7. 【计量经济学导论】09. 协整与误差修正模型
  8. linux su文件删除了,UBUNTU linux 批量删除文件
  9. 供应商太多,怎么才能高效比价?
  10. 我是怎么打开车库门的:ASK/OOK手动解码及重放
  11. 使用豆瓣源下载python包
  12. el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
  13. python 拆分excel单元格_如何用Python拆分合并后的Excel单元格?
  14. 一统大数据江湖,趣话图说“存算分离”武学心法
  15. 【强化学习】Q-Learning算法求解迷宫寻路问题 + Java代码实现
  16. 开关电源matlab仿真设计报告,基于MATLAB的开关电源反馈控制系统的设计和仿真
  17. 机器学习西瓜书第一章总结
  18. 【校招 --阶段一 系统编程】system V共享内存
  19. 怎么批量查询快递物流信息
  20. 对未来计算机的畅想作文1500,新年畅想作文1500字

热门文章

  1. 国际泰斗:现在谈强人工智能为时尚早
  2. 对话吴恩达:AI火得还不够,997都满足不了我
  3. 科普丨深度学习硬件(GPU、FPGA、ASIC、DSP)
  4. module ‘torchtext.data‘ has no attribute ‘LabelField‘
  5. 【前瞻】机器人领域十项前沿技术
  6. 2022年,哪些科技趋势将持续改变世界?这里有一份来自百度研究院的预测
  7. 热力学第二定律中的悖论 | 集智百科
  8. 国拨经费约31.48亿!科技部发布科技创新2030 —“脑科学与类脑研究”重大项目2021年度项目申报指南
  9. 最让青年科学家们困惑的 10 个问题,是什么?
  10. 数字孪生:连结现实与数字世界