数据结构-图-学习笔记2

今天的问题是由老师提出的问题引发的一系列思考,还有和我的是有交流得到的。
数据结构在学图的这一章时,并没有向执勤啊那样使用模板类。但是直观的理解是节点只有编号,而边就是存储权重。所以并不需要像之前那样需要使用模板类。
事实上,和我的是有激烈讨论还有自己深入思考之后,我发现了里面还有很多精华。
树就是一种图,线性表->树->图,抽象程度一次递增,线性表示退化了的树,等等。那为什么树的节点是定义了一个节点类(模板),而图只是一个编号,不是模板呢?
其实,图也可以是模板的。每个节点抽象成一个编号是比节点类更高层次的抽象,所以此时节点类型就是整型。为什么这么说呢?因为可以通过编号与内容(节点类)的一一映射,可以将结构与内容分开。比如一个节点类代表一个城市(这时是节点类),我们也可以通过编号与城市之间建立映射关系,从而你的数据结构只关心结构,而不需要关心内容,变得更加普遍。更加普遍往往表示抽象程度越高。
我们比较图为什么没有用模板?可以考虑图用了模板会怎样,树不用模板会怎样?
树不用模板是完全可以的,这时树就是由编号与他们之间的关系组成,像图一样,邻接矩阵或邻接表,表示了编号与编号之间的关系。那么我们同样可以用邻接矩阵或邻接表表示树之间节点的关系。而这个时候我们不管其内容如何,只管结构,因为节点被抽象成了编号。
还有一点,图只用编号代表节点就可以了,因为图中所有节点没有什么较大区别,但是树的节点有根结点,中间节点,叶子节点的区别,他们的行为和内容差别还是比较大的,所以,用编号不方便区分。
数据结构也可以嵌套数据结构,比如一个Llist每个元素存储的都是一个Llist.
树是图,但是两者还是有很大区别。树的重要关系就是父节点,子节点,兄弟节点。而图就是邻居。
根据你的项目任务(应用场景),选择合适的数据结构,一般讲需要频繁执行的操作需要降低时间复杂度(牺牲其他一部分性能,平衡)。
在之前的理解上,数据结构可以根据你的应用场景灵活改造,(前提是你完全知道了数据结构的原理和设计思想),所以这是数据结构的魅力所在。还有就是那种抽象思维,不被内容所困扰,而要注重形式和结构。抽象编程可以体现一个代码君的水平。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值