微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 《C与指针》读书笔记十

《C与指针》读书笔记十

时间:08-24 来源:互联网 点击:

与很多介绍C语言教材不同之处,在《C与指针》的第十二章介绍了一些关于《数据结构》的内容----链表。并且介绍了链表的插入、删除、初始化等操作。到这里应该明白了一门计算机语言的伟大之处不在于语言的本身。我当年在学校学习完Pascal觉得语言好像没有什么太大用处。现在想来不是语言没有用,而是我并没有使用语言来解决实际中问题。所以名牌大学与普通大学不同之处,不是授予学生的基本知识不同,而是启蒙方法不同。

链表是由节点组成的,每个节点组成,节点必须包括两大部分,一是节点的内容,另外是指向下一节点的指针。也就下一节点的地址。特殊两个节点是链表头(root)和链表尾。链表头只是有一个指针,指向链表第一个节点,最后一个节点的指针指向NULL,标志该链表结束。

与队列相比链表有很大优势。链表不需要一块地址连续的空间。因为这阵可以连接起各个节点。使得每个节点在物理上地址上处于不连续的离散状态。但是在逻辑上却是处于连续的地址空间。这也是程序员在编程过程中偏向于使用指针的原因吧!在使用链表过程中可以深刻体会到指针、结构体、地址之间巧妙关系。如果能有体会,那么高效的使用指针已经不是问题了。编程不是单纯语言问题。其实是思维、机器、问题三方面的结合体。处理好这三方面关系问题即可得到完美的解决。

书中介绍了链表的创建、插入、删除等。如果在队列中某个位置插入一个节点,需要将该位置以后节点向后移动。这在数据量大时消耗的时间非常可观的。但是链表只需要修改两个节点的指针即可完成。在数据量比较大时显得非常高效。删除链表也是一样的。队列需要移动节点,链表只需修改上一节点的指针。如果后销毁该节点即可。

一般单链表的遍历只能单向进行。每次遍历只能从链表头开始,到链表尾结束。为了提高遍历自由度,作者介绍了双向链表。可以从一个节点任意访问其前趋和后趋节点。

一个问题总会带来矛盾,双链表解决表里问题,但是同时在插入、删除方面带来了副作用。因为同事要维护两个指针。解决实际问题《数据结构》是非常重要的课程。如果能将其中理论用于实践那么将事半功倍!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top