算法实践-观贺老师视频有感

本文作者分享了学习数据结构和算法的心得,强调知识迁移和基础操作的重要性。通过实例分析线性表的操作,探讨了编程中如何避免模糊理解,提倡使用纸笔画出清晰思路。作者指出,学完知识要通过实践应用,建立算法库,并提倡用while循环代替for循环以提高代码可读性。同时,作者反思了自我学习过程中的误区,如忽视基础知识的理解和练习,提醒要勇于面对困难,养成良好的学习和编码习惯。
摘要由CSDN通过智能技术生成

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.确定结束条件。要用纸和笔画出一个清晰的思

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值