2020.10.29日 C++实现链表(数据结构与算法思考)
想看实现的直接到第二天的稿子,链表,循环链表,循环双向链表分别在第二天,第三天和第四天的稿子里。
昨天刚学完数据结构与算法的线性表,在这里记录下我自己对于线性表的一些思考,主要是为了防止自己以后忘记今天和昨天的思考,回忆起来会很麻烦。
我用的是《大话数据结构》这本教材,无奈本身出生于控制(这里吐槽下控制科学与工程,真的是什么都学,什么都不精,哈哈,牛逼大佬忽略我,我才刚入学2个月),本身基础薄弱,所以在进行一轮饿补,数据结构上对于链表的一些操作已经写得很清楚了,只要会改变链表的头指针的操作(即改变头结点的地址,头指针指向变了,头指针本身的值发生变化)就要传递头指针的指针,这和函数传参是一个道理。
于是为了方便,大家加了一个“方便的头结点”,这个“方便的头指针”加在第一个节点之前,这个头结点永远不会改变,即头指针永远不会发生改变,那么你通过普通函数传入一级指针,就可以完成对一个链表的遍历,那就有人质疑了,明明数据结构说了,只要改变了链表就一定要传入二级指针,你这里怎么就传一级指针,还可以完成一些操作?你这不是在瞎逼逼吗?而且,你还没代码。哈哈哈,你们看这位大佬的文章,绝对赞。转载
其实本质上讲,链表只是由头指针标识的,所谓改变链表就是改变头指针,要去这么想,这么想,就清楚一些,也知道为什么传二级指针和一级指针的原因。
还有一个问题,我今天用类来实现链表类时发现,在类中用成员函数来实现基本操作时,不用往成员函数中传入成员属性(头指针),这是为什么呢?因为类中成员函数是可以直接对成员属性进行操作和使用的。不想普通函数,是不可以直接对一个变量进行操作和使用,所以普通函数要传一级指针或者二级指针。但是成员函数不要,他可以直接调用成员属性和修改成员属性,既然可以直接修改和调用,那我为什么还要传呢?对吧!
2020.10.29线性表的实现
最新推荐文章于 2024-08-29 13:33:23 发布