day2
“最慢的步伐不是跬步,而是徘徊;最快的脚步不是冲刺,而是坚持”
数据结构学起来真不好受,若非有学姐给的心理安慰,我现在已经开始严重质疑自己的智商了。
配合着数据结构与算法和b站的课程一起看,课上教程和课本教程不一致的糟糕性瞬间体现了出来。先是面对符号“->”的不理解,后是对宏定义的不理解,再面临status的不理解,种种不理解让我头疼。
最后的结果是,其实我c语言基础也学的很糟糕吧。
简单阐述一下我解决的问题:
链表,线性表:
我一开始甚至于没有分清楚链表和线性表之间的关系。直到chatgpt给出了一个解释:
线性表和链表是不是包含关系,要根据具体含义进行判断。
线性表是一种数据结构,指的是具有相同数据类型的 n (n>=0) 个元素的有限序列。线性表中的元素通过元素之间的线性关系,按照逻辑顺序排列。
链表不是一种数据结构,而是一种基于指针的数据结构表示方法。链表同样可以用来实现线性表这种数据结构。链表中的每个元素不再具有连续的存储空间,而是由一个“节点”表示,每个节点包含两个部分:一个数据元素和一个指向下一个节点的指针。
因此,可以说链表是一种实现线性表的数据结构,也可以说链表是线性表的一种表示方法,但不能说线性表是链表的一种表示方法,更不能说线性表包含链表。两者是概念上的区别,只是关注的方向不同:线性表是关注元素的间隔和相对位置,链表是关注节点之间的指针关系。
链表只是实现线性表的一种方法,但是链表不是线性表唯一的实现方法,比如数组,栈等,都可以是实现线性表的一种方式。
查询线性表和插入线性表元素一般来说时间复杂度都是O(n),目前我还没有见过其他的复杂度(头部和尾部可能存在O(1)的情况)。
是的,讲述完学习上的状况,我应当也反省自身问题,这些天的学习效率大幅度降低,虽然存在在线性表这个知识点上卡克的情况,但是依旧改变不了这几天稍许怠慢的学习状态。面对双向链表和循环链表的实现方式,我却一直因为懒而不愿意去实现,去跑一遍代码。
的确很紧张,只要有一天不是在学习的状态都会让自身所感到浓浓的紧张情绪,我想,这是一件很糟糕的事情吧。