链表的冒泡排序

移动链表中的最大值到尾部,链表各元素位置未发生改变 编写函数MoveMaxToTail(),实现查找单链表中值最大的结点,并将其移动到链表尾部,注意其他结点的相对次序不变。要求尽量具有较高的时间效率。 例如输入8 12 46 30 5,输出为8 12 30 5 46 1.定义结构体和宏定义类型名 #include<stdio.h> #include<stdlib.h> typedef int DataType; struct Node { DataType data; struct Node* nex 阅读详情

由于链表的特殊性,只存在后向指针,所有的数只能向后移动,所以采用冒泡排序时先把最大的数交换到最后,然后第二大的数交换到倒数第二个结点上,注意每次交换的边界的更新。

void ListSort(ListNode* pHead)
{
	if(pHead == NULL)
		return;
 
	ListNode *pEnd, *pNode;
	pEnd = NULL;
 
	while(pEnd != pHead)
	{
		for(pNode = pHead; pNode->m_pNext != pEnd; pNode = pNode->m_pNext)
		{
			if(pNode->m_nValue > (pNode->m_pNext->m_nValue))
			{
				int tmp = pNode->m_nValue;
				pNode->m_nValue = pNode->m_pNext->m_nValue;
				pNode->m_pNext->m_nValue = tmp;
			}
		}
		pEnd = pNode;
	}
}




移动链表的最大元素到表尾,链表各元素位置发生改变 这种方式采用冒泡排序法,链表中各个元素的位置会发生改变(还有另一种方式,移动链表的最大元素到表尾时,元素的各个位置未发生改变,详情请参考博主另一篇博客《c语言移动链表的最大元素到表尾,链表各元素位置为发生改变》) 1.定义结构体和宏定义变量名。代码如下 #include<stdio.h> #include<stdlib.h> typedef int DataType; struct Node { DataType data; struct Node* 阅读详情

相关推荐

冒泡排序与链表的冒泡排序

首先看一看简单的冒泡排序是如何实现的: #include <stdio.h> int main() { int a[100],n; printf("请输入数组元素个数:\n"); scanf("%d",&n); printf("请输入数组元素:\n"); for(int k=0;k<n;k++) scanf("%d",&a[k]); /*冒泡排序*/ for(int i=0;i<(n-1);i++) //对于n个数,只需进行n-1次循环排序 f

m0_48728478的博客 1147

移动链表中的最大值到尾部

本题的思路为:先通过一次遍历找到最大值,然后第二次的遍历过程中将最大值的结点移动到尾部。在进行移动中先判断最大值是否在尾部,如果在尾部,则不需要进行操作。 测试结果如下

m0_64005272的博客 2158

用链表实现冒泡排序!

一、问题描述 存储数据不仅数组可以,链表也行。那么如何用链表实现冒泡排序呢? 我们需要把数据存储在链表中,然后调用排序函数就可以了。但必须要注意链表与数组的不同点,链表没有下标,要想访问数据域必须通过节点来访问。 二、代码实现 #include #include typedef int ElemType; typedef struct Node { ElemType pData

lixin_com的博客 5365

将非空单链表中的数据域值最大的那个链结点移至链表的末尾的算法

已知非空线性链表第1个链结点的指针为list,在算法的设计中需要用到4个LinkList指针,q 用来记录域值最大的那个链结点,s 用来记录域值最大的那个链结点的直接前驱结点,p用来遍历整个链表,r 用来记录在遍历过程中当前正在比较的链结点的直接前驱结点。在算法设计中需要分两步,第一步是要找到最大值结点,第二步是要将最大值结点移动至链表的末尾(如果最大值结点不是末尾结点)。 在将最大值结点移动到

CaryaLiu的专栏 1万+

单链表排序之冒泡排序

***单链表排序之冒泡排序*** /* 前段时间刚学会几种排序方法,最近学习了单链表,就用来试试,本篇链表的排序方法讲述的是 单链表的冒泡排序;(注意:请仔细看准节点结构体的包装和头指针的包装再阅读以下代码); 冒泡排序的思想和冒泡排序数组的方法以及冒泡排序的优化,我都已经在冒泡排序的文章中介绍了; 冒泡排序链接:http://blog.csdn.

John的博客 3万+

单链表冒泡排序与数组冒泡排序

冒泡排序冒泡排序是最基本也是最简单的一种排序,但是复杂度高不适合大数据的排序, 但是对于我们学习排序还是很有帮助的。冒泡排序的思想就是每遍历一次就选出最大值或最小值,类似水中的水泡一样,越到水面泡越大。 下面的链表基于这种定义:http://blog.youkuaiyun.com/dawn_after_dark/article/details/73610674形式一冒泡排序其实有好几种变形,原始的思想就是每一

dawn_after_dark的博客 1899

链表结点的移动(最大值移到尾结点)

#include<stdio.h>#include<stdlib.h>#define N 9typedef struct node{ int data; struct node * next;}ElemSN;ElemSN * Createlink(int a[]){ //逆向创建单向链表int i; El...

weixin_34234829的博客 4872

C++链表的冒泡排序

C++链表的冒泡排序 #include <iostream> using namespace std; #include <string> #include <ctime> #define NUM 10 //生成的随机数链表长度 struct Node //链表结构体的定义 { int value; Node* next; }typedef Node; void BubbleSort(Node* head); //链表冒泡排序函数 Node* No

Zzz的博客 1341

C语言单链表冒泡排序

前言 大家在做学生成绩管理系统的时候,其中一个功能是要实现对学生的成绩从高到低排名,如果数据是存储在数组中的话,会很容易实现,但是这时成绩信息作为结构体成员被保存在单链表中,所以在每一轮交换排序的时候,地址不像数组那样可以简单通过下标转换而改变 所以在这里给大家分享下单链表的冒泡排序 。 冒泡排序 先说说冒泡排序的中心思想:通过对无序序列的相邻元素两两比较交换,每次把最大(小)的数据放在最后...

莫影 is Joker 1万+

查找链表中值最大的节点

递归的方式查找链表中值最大的节点,用于交流学习。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)

本文主要探讨了Rockchip平台的DRM显示驱动架构及其在U-Boot阶段的实现。

一路寒风身如絮,命海沉浮客独行 1766

链表冒泡排序最详细的解释

我也是小白一枚~,最近接触数据结构做到了一个关于多项式相加的问题,但是输出的多项式x的幂次都是无规律性的,这就让我开始想到刚开始我们学的冒泡排序,根据冒泡排序的原理,我实现了链表冒泡排序。 本质上来说:普通的冒泡排序和链表的冒泡排序是一样的,只不过链表的冒泡排序的内部需要结点的next不断的改变,但是从表面来看无非也是相邻的进行比较,重复n-1次,确定n个数。 废话少说,直接上代码(有详细解释,小白一看也会懂/偷笑) void AdjustList(pointer head)//链表冒泡排序,按X的幂次从小

qq_45873949的博客 6424

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南)

本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。

pytorch8learner的博客 317

详解单链表冒泡排序

C语言,对单链表进行冒泡排序

oTheodore的博客 2908

R_柱状图(加误差线,显著性差异)

先放最终效果图 结果图 # bar_plot 2021/01/19 # 导入所需的包 library(ggplot2) library(ggthemr) library(ggsignif) library(tidyverse) library(dplyr) library(ggpubr) library(devEMF) # 导入并处理数据,需要两张表,一个是原始汇总表格,另外一些是每一...

wt141643的博客 2万+

【Audio】基于STM32 I2S移植WM8978 Audio Codec驱动

1. WM8978简介 WM8978是一款低功耗,高质量的立体声编解码器,专为便携式应用,如数码相机或数码摄像机等。 该芯片集成了立体声差分麦克风的前置放大器,并包括扬声器、耳机和差分或立体声线输出的驱动器。外部组件要求减少,因为不需要单独的麦克风或耳机放大器。 WM8978的功能框图如下所示: 2. WM8978硬件连接 使用STM32F429+WM8978硬件平台,通过I2S接口来读写音频数据,I2C接口发送写命令控制WM8978相关功能。 STM32F429与WM8978的引脚连接如下:

ZHONGCAI0901的博客 1万+

冒泡排序在单链表中的使用详解

冒泡排序是一种基础而又简单的排序方法,它能够很好地锻炼新手思维能力,同样地,在链表的冒泡排序中,它能够锻炼我们链表的熟悉使用和对链表数据的处理方法。在对单链表进行冒泡排序之前,我们得先掌握三个基础知识。

yami's博客 1万+

LDA主题模型简介及Python实现

一、LDA主题模型简介 LDA主题模型主要用于推测文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类或文本分类。 LDA主题模型不关心文档中单词的顺序,通常使用词袋特征(bag-of-word feature)来代表文档。词袋模型介绍可以参考这篇文章:文本向量化表示——词袋模型 - 知乎 了解LDA模型,我们需要先了解LDA的生成模型,LDA认为一篇文章是怎么形成的呢? LDA模型认为主题可以由一个词汇...

weixin_41168304的博客 20万+

单链表的冒泡排序

大家之前都对数组进行过冒泡排序,排序的方式很简单,通过两个for循环来解决问题,也很好理解,第一次循环的时候是将整个数组中最大的数字或者说最小的数字放到数组中的最后一个,之后是将数组中第二大或者第二小的放到数组中倒数第二个,所以直接将这个思想放到链表中就可以了。   每次循环都是从头结点开始,但是第一次结尾是最后一个元素,第二次结尾是倒数第二个元素,这里是一样的,但是链表你是不确定他到底有多少个

Hanani_Jia的博客 3716

第1.1节 构网型 vs. 跟网型:根本区别与技术原理

构网型与跟网型变流器的本质区别在于控制哲学与等效模型。跟网型变流器采用"电压跟随,电流注入"策略,等效为受控电流源,依赖电网电压作为参考,在弱电网下存在稳定性问题。构网型变流器采用"自主同步,电压构建"策略,等效为受控电压源,能主动构建电压和频率,具备自主运行、黑启动和电网支撑能力。两者的核心差异体现在同步机制、电网依赖性、故障行为和系统支撑等方面。构网型变流器更适合高比例新能源、弱电网和微电网场景,是未来电力系统的重要发展方向。

技术工作者 1396

agent-browser 安装笔记(OpenClaw)

【代码】agent-browser 安装笔记(OpenClaw)

tiantiantbtb的博客 1242

C语言—单链表的冒泡排序

C语言—单链表实现冒泡排序 昨天在做学生成绩管理系统的时候,其中一个功能是要实现对学生的成绩从高到低排名,如果数据是存储在数组中的话,会很容易实现,但是这时成绩信息作为结构体成员被保存在单链表中,所以在每一轮交换排序的时候,地址不像数组那样可以简单通过下标转换而改变 所以查了资料时候掌握了单链表的冒泡排序 分享给大家。 先说说冒泡排序的中心思想:通过对无序序列的相邻元素两两比较交换,每次...

wintershii的博客 1万+

【Bug已解决】zsh: command not found: claude 解决方案

方案适用场景推荐指数难度方案一:配置 npm 全局目录所有平台,长期使用⭐⭐⭐⭐⭐低方案二:修复 PATH 变量快速修复,不想改 npm 配置⭐⭐⭐⭐低方案三:重建软链接文件存在但链接断裂⭐⭐⭐中方案四:nvm 专属方案使用 nvm 管理多版本 Node.js⭐⭐⭐⭐低方案五:Windows 专属Windows 系统⭐⭐⭐⭐⭐低方案六:Homebrew 安装macOS 用户,npm 有问题⭐⭐⭐低根本原因。

博客 1万+

链表冒泡排序

任意两个相邻节点p、q位置互换图示:      假设p1->next指向p,那么显然p1->next->next就指向q,      p1->next->next->next就指向q的后继节点,我们用p2保存      p1->next->next指针。即:p2=p1->next

Gary_Hendrix的专栏 1290

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

c语言链表冒泡排序,C语言链表冒泡排序,该怎么解决

给一个简单的数组冒泡排序算法和程序c语言链表冒泡排序,注释应写具体。不要在别处粘贴代码过来。我想实习的是交换的是它们的指针域也就是每个节点而不是结点后面的数据。C/C++ codestruct Node{int data;struct Node * pNext;};假设里面已经定义好了节点,也生成了一个链表出来了(带有头结点的),现在他们即使帮我排序的代码跟算法要写具体。------解决方案---...

weixin_42520277的博客 1480

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 最长回文字串-Manacher解法
下一篇: 给定因子求第K个数
moses1213
博客等级 码龄12年 56粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值