首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

数据结构-单链表排序遇到的一个有关问题

2013-10-29 
数据结构-单链表排序遇到的一个问题在实现单链表功能的时候遇到的一个问题,mark下。吃一堑长一智!先看代码。

数据结构-单链表排序遇到的一个问题

在实现单链表功能的时候遇到的一个问题,mark下。

吃一堑长一智!


先看代码。

 /*第一件事*/        if (first == NULL) /*如果有序链表目前还是一个空链表*/        {            first = min; /*第一次找到键值最小的节点。*/            tail = min; /*注意:尾指针让它指向最后的一个节点。*/        }

当我修改了代码,按从高到低排列的时候,在不同的环境里遇到了不同的问题。

如果在windows上的codeblocks这个编译器跑,一切看似正常。正常排序。

当我在mac上的xcode这个编译器跑的时候,问题出现了,最大的那个元素没了,但是最小的变成了0.(我输入的测试数据都大于0)。


后来发现,

windows上的codeblocks一个变量没赋值,默认是随机数(一般都比较大)。
mac上的codeblocks一个变量没赋值,默认是0。

因为我的头结点的数据域(data)没赋值,在windows上,数值比较大,理所应当的排在了第一个结点。当我打印的时候,调用打印函数(这个函数考虑了头结点,即L->next表示第一个结点),这时候,排序后的链表的第一个结点成了打印函数中链表的头结点,经过L->next后,自然的把原来的第一个结点(即没赋值。数字比较大的那个)省略掉了,所以结果看似正常。


然而在xcode上,默认是0. 这样导致把头结点的数据考虑进去进行排列,0自然排到了最后,并且把第一个结点给省略了,导致最大的那个元素没了,但是最小的变成了0.(我输入的测试数据都大于0)。


看来自己还是很水,老犯这样的错误,哎~~。


学习的路上,与君共勉


Re: hitwhylz昨天 22:14
回复u012592378n晕..这是干啥
1楼u011960402昨天 21:11
所以要养成变量赋值的习惯。
Re: hitwhylz昨天 22:13
回复u011960402n其实,主要问题不是赋值呢。n一般头结点里面的数据域,都没赋值的。因为正常情况下是不会使用到的。n主要是遍历的时候出错了。

热点排行