当前位置:C++技术网 > 资讯 > 关于数据结构中的结点的理解

关于数据结构中的结点的理解

更新时间:2015-06-24 16:02:25浏览次数:1+次

    在数据结构这门学科中,链表的使用是最为频繁的。单链表,双链表,循环链表等等,这些的学习中,对于指针的使用需要很熟悉。其中在结点这里,究竟何为结点呢?
    在《线性表的学习心得》一文中,作者对自己的心得做了总结,总体来说,写的很棒。对于结点也说出了自己的理解,很不错。下面只是发表一下我自己的理解,不对其他人的理解进行否定和肯定,只是作为一种参考,相互学习而已。
    提起学习数据结构,那是两年前的事情了。第一次学习数据结构,几乎是挑战心理的游戏。对于指针的不熟悉,看到链表,看到心乱如麻,斩不断理还乱,是链表。不过,还是硬着头皮不断的熟悉,一遍遍的理解,做练习题。终于,在学习两三遍数据结构后发现,不仅数据结构的理解加深了,就连指针的用法也变得很熟悉了。其实我的指针的使用,熟悉掌握指针是从数据结构这里开始的,并不是C语言学完就掌握的。
    对于结点,那是也经常犯疑惑。也在“结点”和“节点”中质疑,到底用哪个词合适。在看到《线性表的学习心得》后突然思路清晰了一些,有所启发。很感谢作者的总结。
    据我现在的理解,我对“节点”“结点”做出如下解释,权作个人的理解。
    节点和结点,字面上不一样,实则所指代的意义也不一样。其实是一种思维方式不一样,看你怎么看了。
    节点,主要是站在链表整体的角度而定义的,是一种宏观的概念。每一个节点只是常常链表的一个关节,不在于关节内部如何构成。这样在使用哪种方式(指针和索引)实现节点不必太关心,我们在一个抽象的逻辑层面对其进行理解,无需理会内部实现。这样可以让我们得到更多的抽象。本来数据结构就是一个抽象的科学。数据结构都是一种模型,教会我们如何去实现,如何使用,如何挖掘。所以数据结构之所以难学,就在于这种抽象。而我们去实现,是基于具体的实现,和抽象是两回事,所以也会变得难。而节点的理解正是可以对此进行体现。
    相对于“节点”是一个高层次的抽象,不关心内部实现,“结点”就正好相反。正如《线性表的学习心得》提到的,结点是将节点中内部的元素作为一个组合,形成一个聚合体。结点的理解则侧重于结点的构成方式和实现方式。这样的话,数组索引构成的节点,其组成方式是二维数组,一个元素存储数据,一个元素存储下一个节点的索引,这种表示的方向性不强,纯粹需要人为的强行解释,否则一般无法得知索引的具体意义,这种难以理解一些。而链表中的节点,则是由一个结构体形成的组合,类似于数组的其中的数组一行,结构体由存储数据的成员和指向下一个节点的指针构成。这种实现,在理解上很容易。即使你不知道它是什么链表,但你也知道一个方向性。
    最后总结一下,节点和结点的叫法都是可以的,只是站在的角度不一样,没有对错之分。思想没有对错,只有站的层次的高低,这里不是说思想水平,而是角度的问题。不同的角度,效果不一样。如果你站在的角度比较多,就可以对一个事物认识的比较深刻。
    最后感谢《线性表的学习心得》的作者,受他的文章的启发,才促使我完善了我对节点的理解。相互学习交流,共勉。