1.知识迁移的能力锻炼好,这也许就是那些所谓学啥都快的原因吧。数据结构B=(D,R),D是数据元素的集合,R是D上二元关系的集合,讲完后接着就是实践-城市表的逻辑结构表示:City=(D,R),D={},R={}。这种方式就是让人不能懒惰。
精华的东西却又看似很简单。
把基础操作实现了,形成算法库。
不要只看,要思考加工,c语言中的typedef struct和Java中的class一样。
数组和顺序表、链表不一样。它们二者基于数组实现。
要养成学完就要用上的习惯,虽然函数里只是简单的一句话在代码中直接写也行,但是要养成这种函数堆砌的习惯。
2.线性表的基本操作学完以后,就是应用。第一个应用删除线性表中所有值为x的元素。自己首先想到的是
i=LocateElem(L,e);ListDelete(L,i,e);但是第一次删除后自己就不知道咋办了,想着用递归,这是自己的思考过程,完全是很混乱的过程。
视频中的解法while(i=LocateElem(L,e)>0)ListDelete(L,i,e);。
while条件循环。for次数循环。善于用while。
多个指针移动,这一遍更精细了,具体怎么移动,如何操作,操作后每个指针如何移动。
以前操作在脑海里都是模模糊糊的,这次能不能清清晰晰的。讲到哪一块,学懂哪一块,可以有疑问,但是不能被疑问疑惑。
一说next,都是指针,以前一说那个结点,直接就用字母标上了,以为字母就是结点。现在明白一说那个结点,这个字母代表的是指针,指向这个结点的指针。
一个指针指向一个结点,指针和结点是共生的,伴随出现的。并不是只有一个指针存活。申请完空间返回一个指针,这个指针指向这个结点,就像java中的引用一样。所以不要疑惑,申请了一个指针,怎么可以指向一个结点呢。多少年来,原来学的一直是错的,多少知识都是被自己模模糊糊的学了。结点包括指针,这是一个整体,而不是自己以前认为的头指针、头结点是分离的,没有关系的。
学完只是一个开始,要用得上,找到用武之地。
算法不要怕麻烦,要画出一个清晰的路线。
对于拆分单链表的应用,自己的想法能粗略的实现(首先根据L定义了三个相邻的变量),但是初始化条件不能保证成立,而且结束条件不能很好的进行判断。贺老师的解法,开始定义比较少的变量,这样利于判断结束条件,其他变量的初始化在循环体中定义。
1.找到循环体 2.初始化需要初始化的变量,其他的放到循环体里初始化 3.确定结束条件。要用纸和笔画出一个清晰的思