如何实现单链表任意两个元素交换(不包括表头)

2023-11-09






// 凭第一感觉写的版本,算法和思路有好的想法再优化





/* 交换链表任意两个元素 */
void SwapItem(LinkedList *head, int posA, int posB)//从非头结点开始交换操作
{
	//保证至少存在两个节点
	assert(head && head->next && head->next->next);
	assert(posA>=1 && posB>=1);

	if (posA == posB)
	{
		printf("\nerror: %d,交换位置相同,不做任何操作!\n", __LINE__);
		getchar();
		//return;
		exit(1);
	}

	//保证交换位置合理性,参数2,3写反位置也没关系
	int first,second;
	if (posA<posB) 
	{ 
		first = posA, second = posB;
	}
	else 
	{
		first = posB;
		second = posA;
	}


	if ((second - first) == 1) //A与B是相邻的两个节点
	{
		LinkedList *prev, *nodeA, *nodeB, *post;
		int i = 1;
		prev = head;
		nodeA = prev->next;
		nodeB = nodeA->next;

		while (i<first && nodeB) //定位到节点A、B的位置
		{
			prev = prev->next;
			no
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现单链表任意两个元素交换(不包括表头) 的相关文章

  • 数据库多维迭代算法

    关键词 数据库 迭代 递归 多维 一 两种传统的数据库迭代结构算法 对于数据库的迭代结构 有两种传统的算法 递归算法和边界算法 比如对于下面图1的结构 图1 递归算法的数据结构如表1所示 节点id 节点值 父节点id 1 1111 2 3
  • Mysql 数据库

    数据库基础 1 什么是数据库 用来存储数据 数据库可在硬盘及内存中存储数据 数据库与文件存储数据的区别 数据库本质也是通过文件来存储数据 数据库的概念就是系统的管理存储数据的文件 数据库介绍 本质就是存储数据的C S架构的socket套接字
  • 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.29. Coreutils-8.23...

    Coreutils 软件包包含用于显示和设置基本系统特性的工具 大概编译时间 2 5 SBU 需要磁盘空间 193 MB 6 29 1 安装 Coreutils POSIX 要求 Coreutils 中的程序即使在多字节语言环境也能正确识别
  • Sort List

    Sort a linked list in O n log n time using constant space complexity 题目要求用 O n log n 的时间复杂度和常数的空间复杂度来进行链表排序 O nlogn 的排序算
  • 一文弄懂循环链表、双向链表、静态链表

    循环链表 双向链表 静态链表 三遍定律 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 1 循环链表 将单链表中终端结点的指针端由空指针改
  • PCL—低层次视觉—点云分割(RanSaC)

    点云分割 点云分割可谓点云处理的精髓 也是三维图像相对二维图像最大优势的体现 不过多插一句 自Niloy J Mitra教授的Global contrast based salient region detection出现 最优分割到底鹿死
  • 循环单链表(C语言版)

    前言 小可爱们 本次一起来看看循环单链表吧 嘻嘻 一 循环单链表的定义 循环单链表是单链表的另一种形式 其结构特点链表中最后一个结点的指针域不再是结束标记 而是指向整个链表的第一个结点 从而使链表形成一个环 和单链表相同 循环链表也有带头结
  • 算法系列15天速成——第八天 线性表【下】

    一 线性表的简单回顾 上一篇跟大家聊过 线性表 顺序存储 通过实验 大家也知道 如果我每次向 顺序表的头部插入元素 都会引起痉挛 效率比较低下 第二点我们用顺序存储时 容 易受到长度的限制 反之就会造成空间资源的浪费 二 链表 对于顺序表存
  • JavaScript系列——数组元素左右移动N位算法实现

    引言 在自己刚刚毕业不久的时候 去了一家公司面试 面试官现场考了我这道题 我记忆深刻 当时没有想到思路 毫无疑问被面试官当成菜鸟了 最近刚好在研究数组的各种算法实现 就想到这道题 可以拿来实现一下 纪念自己逝去的青春 需求 假设有这样一个数
  • 图 - Java实现无向带权图的邻接矩阵表示法

    图 Java实现无向带权图的邻接矩阵表示法 1 图 1 1 图的介绍 图 Graph 是一种复杂的非线性表结构 图中的元素我们就叫做顶点 vertex 图中的一个顶点可以与任意其他顶点建立连接关系 我们把这种建立的关系叫做边 edge 跟顶
  • 4Sum

    Given an array S of n integers are there elements a b c and d in S such that a b c d target Find all unique quadruplets
  • OJ-合并两个有序链表

    题目描述 代码如下 Definition for singly linked list struct ListNode int val struct ListNode next struct ListNode mergeTwoLists s
  • Linux 内核中的 Device Mapper 机制

    Linux 内核中的 Device Mapper 机制 尹 洋 在读博士生 尹洋 中科院计算所国家高性能计算机工程技术研究中心的在读博士生 主要从事服务部署和存储资源管理以及Linux块设备一级的开发和研究工作 简介 本文结合具体代码对 L
  • Linux下进程退出的几种形式

    进程退出 Linux 下进程的退出分为正常退出和异常退出两种 1 正常退出 a 在main 函数中执行return b 调用exit 函数 c 调用 exit 函数 2 异常退出 a 调用about函数 b 进程收到某个信号 而该信号使程序
  • 二叉树结构的建立与遍历

    实验项目 1 编写建立二叉树的二叉链表存储结构 左右链表示 的程序 并以适当的形式显示和保存二叉树 2 完成二叉树的7种遍历操作 3 给定一个二叉树 编写算法完成下列应用 1 判断其是否为完全二叉树 2 求二叉树中任意两个结点的公共祖先 输
  • 基数排序代码实现

    详情请看排序总结 传送门 https blog csdn net m0 52711790 article details 121914543 基数排序的知识点我就不贴出来 相信都能搜到对应概念解释 下面就直接上代码 代码解释其实也很清晰了
  • 雪糕的最大数量 排序+贪心

    雪糕的最大数量 雪糕的最大数量 题目描述 样例 数据范围 思路 代码 题目描述 夏日炎炎 小男孩 Tony 想买一些雪糕消消暑 商店中新到 n 支雪糕 用长度为 n 的数组 costs 表示雪糕的定价 其中 costs i 表示第 i 支雪
  • 【数据结构】单链表的定义和操作

    目录 1 单链表的定义 2 单链表的创建和初始化 3 单链表的插入节点操作 4 单链表的删除节点操作 5 单链表的查找节点操作 6 单链表的更新节点操作 7 完整代码 嗨 我是 Filotimo 很高兴与大家相识 希望我的博客能对你有所帮助
  • C++ AVL树(四种旋转,插入)

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子
  • C++ AVL树(四种旋转,插入)

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子

随机推荐

  • 云优化:您需要知道的一切

    在不考虑云优化的情况下将开发工作迁移到云端有点类似于吃 PB J 花生酱 果酱 三明治 只不过没有果酱 虽然花生酱已经够美味了 但您错过了把这一切结合在一起的要素 如果您想确保最大限度地利用您的云支出并消除任何可能拖慢速度的低效率事项 那么
  • 在idea中集成redis

    https www cnblogs com yiMro p 13529150 html SpringBoot Redis 基本配置及使用 Test public void TestRedis Jedis jedis new Jedis 19
  • [docker学习笔记] 11.docker网络模式及容器间网络通信

    docker的容器之间需要进行业务通信 11 1 默认网络 初始安装docker 之后 有三种网络 可以通过 docker network ls 查看 root localhost docker network ls NETWORK ID
  • 常用校验码(奇偶校验码、海明校验码、CRC校验码)

    常用校验码 奇偶校验码 海明校验码 CRC校验码 一 奇偶校验码二 海明校验码三 CRC校验码 计算机系统运行时 各个部之间要进行数据交换 交换的过程中 会有发生误码的可能 即0变成1或1变成0 由于计算机的储存是通过二进制代码来实现的的
  • C#连接云服务器MySql数据库

    环境 vs2017 第一步 在主窗口代码区新建一个类 用于连接数据库 在开发过程中其他窗口 常常也需要 对数据库进行操作 如果在每一个窗口的代码区域都连接一次数据库的话 就会很麻烦 所以在主窗口先用一个公共类连接了数据库 其他窗口就可以直接
  • go 进阶 请求代理相关: 一. 基于原生HTTP实现请求代理

    目录 一 代理基础概念了解 什么是正向代理 什么是反向代理 二 基于原生HTTP实现代理 简单正向代理示例 简单反向代理示例 上方代理中可能存在的问题 一 代理基础概念了解 什么是正向代理 是一种客户端的代理技术缩写为 forward pr
  • HarmonyOS云开发基础认证

    单选 答案 Cloud DB的数据同步模式包括缓存模式和本地模式 应用可以仅使用缓存模式 或者本地模式 也可以同时使用缓存模式和本地模式 正确 True Cloud DB服务在通过OnSnapshotListener类中的onSnapsho
  • MISRA-2012 规则整理

    说明 为了方便标准的对照 标题从8 1开始 目录 8 1 一个标准C环境 8 2 不使用的代码 8 3 注释 8 4 字符集 8 5 标识符 8 6 类型 8 7 常量 8 8 声明与定义 8 9 初始化 8 10 基本数据类型 8 11
  • 华为OD机试真题 整数对最小和 JavaScript java python c++ 参考解题

    题目描述 给定两个整数数组 array1 array2 数组元素按升序排列 假设从array1 array2中分别取出一个元素可构成一对元素 现在需要取出K个元素 并对取出的所有元素求和 计算和的最小值 注意 两对元素如果对应于array1
  • 在navicat中做数据库建模

    前几天 项目经理和我说要我把最近这个项目的数据表做一个关联图 我一想 这不就是数据库建模了嘛 可是公司电脑里没有power designer啊 公司电脑里还不能装外部来源的软件 这咋办 难不成要手工画图 想想就头疼 无意中就发现了navic
  • LVGL V8之flex grow

    flex grow布局 static void lv example flex 3 void lv obj t cont lv obj create lv scr act 当前活动界面创建obj对象作为容器 lv obj set size
  • 《STL源码剖析》深入剖析理解

    目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 前言 标准程序库和STL概论 空间配置器解析 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 目录 前言 标准程序库和STL概论 空间配置器
  • OpenWrt 修改源码的密码配置(七)

    通过修改源码方式 修改账号及密码 修改密码 package base files files etc shadow root 0 0 99999 7 daemon 0 0 99999 7 ftp 1 BKbzZZm0 nrDMDt2K5Yu
  • qt修改构建套件

    1 qtcreator 工具 选项 qtVersion 添加 选择要添加的qmake 2 点击构建套件 选择对应的编译器 3 选择对应的调试器 解决can not find qmake conf问题
  • Synchronized(对象锁)和Static Synchronized(类锁)的区别

    Synchronized和Static Synchronized区别 通过分析这两个用法的分析 我们可以理解java中锁的概念 一个是实例锁 锁在某一个实例对象上 如果该类是单例 那么该锁也具有全局锁的概念 一个是全局锁 该锁针对的是类 无
  • 打造万物识别之利器!微信扫一扫植物识别篇技术解析

    导语 冬去春来日渐暖 柳絮萌芽草生根 立春已过 又到了户外踏青赏花的季节 再过段时间 公园 郊外 路边各种鲜花都会渐次开放 大家踏春的时候都会拍一些好看的照片 发一些朋友圈 写一些花语 市场上也出现了不少识花app 用户下载app 拍张照片
  • 单播与多播mac地址

    MAC 地址 Media Access Control Address 是一个用于识别网络设备的唯一标识符 每个网络设备都有一个独特的 MAC 地址 用于在局域网中进行通信 单播MAC地址 单播MAC地址用于单播通信 即一对一的通信模式 当
  • static静态代码块

    static静态代码块 public class Person 静态代码块 在类加载时候执行静态代码块 只会执行一次 static System out println Person static initializer 实例初始化块 每次
  • 富文本编辑器 VUE-QUILL-EDITOR 使用教程

    一 基础用法 1 NPM 导入 VUE QUILL EDITOR npm install vue quill editor save 2 引入 VUE QUILL EDITOR 在全局中引入 import Vue from vue impo
  • 如何实现单链表任意两个元素交换(不包括表头)

    凭第一感觉写的版本 算法和思路有好的想法再优化 交换链表任意两个元素 void SwapItem LinkedList head int posA int posB 从非头结点开始交换操作 保证至少存在两个节点 assert head he