数据结构学习记录(三)链表的选择排序排序操作

这篇博文介绍了如何在单链表中实现选择排序,包括关键的节点交换操作。通过图解和详细步骤,解释了不同情况下的交换策略,如头结点交换、相邻节点交换及非相邻节点交换。并提供了相应的源代码,帮助理解链表排序的过程。
摘要由CSDN通过智能技术生成

在上一篇博文中,我写过了根据下标进行链表元素交换的函数(并且不能交换头结点),这次由于选择排序需要用到交换元素这个功能,于是我写下了,一个全新的交换函数(整个节点的交换)。它可以根据两者的指针值来进行交换操作。

单链表交换两个节点有一个非常值得注意的地方,指针值十分容易混乱。所以我们用图解来讲解整个过程原理:

如下图为一个单链表:

首先,当链表为空或两个需要交换的元素为同一个节点时,不进行操作。接下来交换分为以下几种情况,当p1或p2中有一个是头指针时且另一个指针是它的下一个(即两个相邻),我们把头指针拟定为p1,若p2为头指针,则交换p1与p2的值,这样p1就总是头指针,只需写一个p1为头指针交换的操作了。

先把p2的值赋给头(p2就成为了头),在定义变量post2记住p2的后一个节点的指针,在把p1的值赋给p2的next(即让p2指向p1),p1在指向post2,这样就完成了交换操作。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值