交换链表的奇数节点和偶数节点
#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;
}
交换链表的奇数节点和偶数节点相关推荐
- 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1),时 ...
- 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。 请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。如下实例。示例 :输入: 1->2->3->4-
#include<stdio.h> #include<stdlib.h>struct LB {int data;struct LB *next; };struct LB *Cr ...
- 奇数点偶数点fft的matlab,奇偶链表(奇数节点位于偶数节点之前) Odd Even Linked List...
问题: Given a singly linked list, group all odd nodes together followed by the even nodes. Please note ...
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)
问题描述:将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转 示例: 交换前链表的顺序 交换后链表的顺序 4→5→7→1→6 ==> 1→7→5 ...
- 奇数位升序偶数位降序链表排序
题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的. 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9. 分析: 这道题可以分成三步: 首先根据奇数位和偶数 ...
- java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...
2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序 交换后链表的顺序 4→5→3→1→2 == ...
- 1.删除链表的奇数节点 2.删除链表的偶数节点
1.删除链表的奇数节点 /** 删除奇数节点*/public static ListNode deleteOddNode(ListNode head) {if (head == null)return ...
- 力扣 两两交换链表中的节点
力扣 两两交换链表中的节点 题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2-> ...
- 5.18 优先队列(堆) 滑动窗口(二) 交换链表的节点
295. 数据流的中位数 最简单的思路暴力法,每次读入数据都进行排序 但是中位数只对中间的一个或两个数据感兴趣,其他数没有必要进行交换或者比较 https://leetcode-cn.com/prob ...
最新文章
- MegEngine计算图、MatMul优化解析
- windows下实现Git在局域网使用
- spring启动过程之源码跟踪(续beanfactory)--spring Debug
- Fragment与Activity交互(使用接口)
- 前端基础进阶(十):面向对象实战之封装拖拽对象
- 读掘金小册组件精讲总结2
- 【计量经济学导论】09. 协整与误差修正模型
- linux su文件删除了,UBUNTU linux 批量删除文件
- 供应商太多,怎么才能高效比价?
- 我是怎么打开车库门的:ASK/OOK手动解码及重放
- 使用豆瓣源下载python包
- el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
- python 拆分excel单元格_如何用Python拆分合并后的Excel单元格?
- 一统大数据江湖,趣话图说“存算分离”武学心法
- 【强化学习】Q-Learning算法求解迷宫寻路问题 + Java代码实现
- 开关电源matlab仿真设计报告,基于MATLAB的开关电源反馈控制系统的设计和仿真
- 机器学习西瓜书第一章总结
- 【校招 --阶段一 系统编程】system V共享内存
- 怎么批量查询快递物流信息
- 对未来计算机的畅想作文1500,新年畅想作文1500字
热门文章
- 国际泰斗:现在谈强人工智能为时尚早
- 对话吴恩达:AI火得还不够,997都满足不了我
- 科普丨深度学习硬件(GPU、FPGA、ASIC、DSP)
- module ‘torchtext.data‘ has no attribute ‘LabelField‘
- 【前瞻】机器人领域十项前沿技术
- 2022年,哪些科技趋势将持续改变世界?这里有一份来自百度研究院的预测
- 热力学第二定律中的悖论 | 集智百科
- 国拨经费约31.48亿!科技部发布科技创新2030 —“脑科学与类脑研究”重大项目2021年度项目申报指南
- 最让青年科学家们困惑的 10 个问题,是什么?
- 数字孪生:连结现实与数字世界