| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 816 人关注过本帖
标题:历时3天终于搞懂了一个关于链表的NULL。不知道高手们以前犯过这样的错误没有 ...
只看楼主 加入收藏
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
结帖率:0
收藏
 问题点数:0 回复次数:9 
历时3天终于搞懂了一个关于链表的NULL。不知道高手们以前犯过这样的错误没有。
历时3天终于搞懂了一个关于链表的NULL:
原来最后一个节点的p->next就是0;
while (p != NULL)
{
    printf("NO.%d student\'s score is: %.2f. address: %0X\n", p->sequence, p->score, p->next);
    p = p->next;
    n++;
}
开始总是搞不对,后来发现所以范例程序都要打印如下(主要是最后一个值):
NO.99 student's score is: 99.00. address: 625FA0
NO.101 student's score is: 91.00. address: 4AFF20
NO.102 student's score is: 92.00. address: 4AFF40
NO.103 student's score is: 93.00. address: 0
如果这个值有不是0,那就是你的链表建错了。
我就是因为链表建立p2=p1和建新节点的顺序反了,结果总有一个空节点
不知道高手们以前犯过这样的错误没有。
搜索更多相关主题的帖子: sequence address 
2014-04-14 23:11
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:0 
我是渣渣~~刚刚才犯完
2014-04-15 00:42
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
收藏
得分:0 
我目测了下,这说的应该是单链表的尾节点的后向指针为NULL。
2014-04-15 09:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果明白了鏈表的概念,這是絕不會犯的錯誤,犯了表明對概念的模型根本不知曉。

授人以渔,不授人以鱼。
2014-04-15 10:03
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 4楼 TonyDeng
这么犀利

总有那身价贱的人给作业贴回复完整的代码
2014-04-15 10:04
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
收藏
得分:0 
大哥!我是根据老师提到链表特征和插入、删除的要求。然后暂停视频
自己摸索建的,没有明白概念就去做必定是要走弯路的。
我觉得走走弯路也无妨,反而更理解更深刻了。
自己做出来再去看天书就知道是怎么回事了,看书就是学学更合理的
构建方法了。
2014-04-15 23:32
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
收藏
得分:0 
今天完成了链表冒泡排序。呵呵
2014-04-15 23:34
C_lscll
Rank: 2
等 级:论坛游民
帖 子:22
专家分:18
注 册:2014-2-6
收藏
得分:0 
指针+结构体+链表 看来可以在结构体里放N个指针,可以有N种数据结构啊。
那岂不是要绕晕?
恐怖啊。
反正有时间慢慢绕。
2014-04-15 23:38
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 8 楼 C_lscll
指针通了链表就不叫个事

总有那身价贱的人给作业贴回复完整的代码
2014-04-16 07:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用C_lscll在2014-4-15 23:32:59的发言:

大哥!我是根据老师提到链表特征和插入、删除的要求。然后暂停视频
自己摸索建的,没有明白概念就去做必定是要走弯路的。
我觉得走走弯路也无妨,反而更理解更深刻了。
自己做出来再去看天书就知道是怎么回事了,看书就是学学更合理的
构建方法了。

先把概念弄懂了再去動手,特別是要有建立模型的意識,構建出鏈表的模型,再按照那個模型去設計代碼,不要盲目動手,沒有理論指導的“實踐”是盲動。你連鏈表的模型是怎樣的都不知道,就去看“天書”,當然不知道人家到底想幹什麽、那麽做的意圖是什麽,就是低效學習——其實很多人都是照炒了,作爲定式,然後自以爲懂,其實是沒懂,一旦情況有點變化,就錯漏百出。

鏈表祗是一條數據鏈,一個結點是一顆珠子,這個數據可以是任意數據(任何基本類型數據,或結構體,或是對象,甚至可以是指針,所以不要以爲鏈表的結點祗能是一個數據加一個指針),以及各種數據的組合,這一大集合捆綁起來,就是抽象的數據結點,然後在結點之外,建立一個指示器(所謂的指針),指向下一個(或上一個,甚至可以是第一個或最後一個,都是你可以按需要任意添加的)數據結點在哪裡,而且這個指向,也並不一定要是內存地址(其實數組本質上就是一個鏈表,每個數據的上下結點就在自己身邊,因爲它保證了數據必定是等大緊密相鄰的,故可以省掉指示器,而廣泛的鏈表是沒有這種假定的),也可以是數據表的序號,不是指針,也可以是引用,如磁盤文件就用鏈表構成的邏輯整體,這同樣是抽象的東西。由於鏈表有頭有尾,所以尾的結點爲了表示不存在下一個數據了,就讓那個指示器指向一個明顯不能用的位置(通常是空指針),就算是表達“沒有下一個”,這也是你任意設定的(就如字符串作爲字符數組的概念一樣,並不一定需要用'\0'指示後面不屬於字符串數據了,用0xff的也大有人在)。

鏈表有單向鏈表(每個結點有“下一個”指示器),也有雙向鏈表(每個結點同時有“上一個”和“下一個”指示器),也可以有環鏈表,是沒頭沒尾的。這些都不過是現實模型的抽象,不是什麽高深莫測的東西,明白了這些現實模型,如何搭建和使用鏈表,就有指導思想,不致於亂來。

[ 本帖最后由 TonyDeng 于 2014-4-16 14:52 编辑 ]

授人以渔,不授人以鱼。
2014-04-16 14:38
快速回复:历时3天终于搞懂了一个关于链表的NULL。不知道高手们以前犯过这样的错 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040050 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved