数据结构-单链表排序遇到的一个问题
在实现单链表功能的时候遇到的一个问题,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)。
看来自己还是很水,老犯这样的错误,哎~~。
学习的路上,与君共勉