VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 399|回复: 3

[求助] 链表的小问题

[复制链接]
83_avatar_middle
在线会员 helloworld! 发表于 2018-9-22 15:30:35 | 显示全部楼层 |阅读模式
3驿站币
void sort(NodePtr h)  //排序算法
{
        NodePtr pr, p, q, s;
        q = h->next; //q指向第1数据结点
        h->next = NULL;//断开附加头结点,成为空链表(即升序链表初态)
        while (q)  //依次摘下q所指结点,插入升序链表
        {
                s = q; //s为第一个节点
                q = q->next;//q为第二个节点
                pr = h; //空的头结点
                p = h->next; //开始寻找插入位置p = NULL
                while (p&&p->data < s->data)
                {
                        pr = p;
                        p = p->next;
                }
                pr->next = s;// 第一个节点为s
                s->next = p;//插入s所指结点到升序链表中 p为以pr头节点的第二个节点
        }

}
链表的排序算法  老师PPT里的看不懂
第一次进循环的时候p = NULL 对吗? pr ->s->p ;pr= p;只是把p指向的数据域赋值给pr对吗?





上一篇:关于链表的小问题
下一篇:CList的不断插入与移除,造成内存不断增加

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-9-22 18:23:50 | 显示全部楼层
对链表按指定的字段进行升序或者降序排列,同样的算法可能实现的方式多种多样,所以你们老师的这个是一种实现方式而已。

进入 sort 之后,h 是链表表头,q 就是表头之后的第一个节点,之后 h->next = NULL; 所以就是将链表表头断开,所以 表头之后的下一个节点就是空了,所以第一次进入 while 循环之后 p = h->next; //开始寻找插入位置p = NULL,也就是这个意思了。

至于楼主说的 pr ->s->p 不知道指的是哪块?没太明白意思

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

83_avatar_middle
ico_lz  楼主| helloworld! 发表于 2018-9-25 21:59:55 | 显示全部楼层
外循环第一次pr = h    p =h->next     意思就是p = NULL    pr->next =NULL?
如果这样的话, 内循环第一次 就进不去,pr->next = s;
是这样对的吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-25 23:55:56 | 显示全部楼层
helloworld! 发表于 2018-9-25 21:59
外循环第一次pr = h    p =h->next     意思就是p = NULL    pr->next =NULL?
如果这样的话, 内循环第一 ...

没错的~不过光这么说理解起来很费劲,楼主不妨下个断点调试跟踪下,这样流程就能理清了,代码不能光用眼睛看,要跑起来看才行

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-11 22:46

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表