最近在看基于c++的数据结构,尤其看到树,实在不太理解树这些对于c++编程有什么作用,或者说他们的联系,或者说数据结构对于编程的意义,因为不是计算机专业,所以总觉得有一种门外汉的感觉,希望大牛们能指点一二,能推荐上一两本比较好的数据结构书更好,谢谢啦!
建议还是学一下数据结构。虽然实际工作中去实现基本的数据结构与算法的不太现实,但知其然知其所以然,更能写出优质代码。
书的话选本经典的C++,JAVA实现的数据结构书就行。
没有学过java,java实现的数据结构能看懂吗
表示计算机专业的数据结构都没学好,门外汉还是光了解一下C和C++吧,别深入了
我也不是计算机专业的,但是相近。我看过他们的数据结构这类的书,这类东西感觉侧重的是算法和策略。用处我能举出一些,也是书上看到的,比如计算机与计算机之间通信,如何找到另一个计算机,网络结构里面存在类似的树的模型,算法的优劣直接决定了访问速度。还有搜索引擎搜索,里面好像提到了哈希算法。像这种概念的提出都是为了优化算法,为实际应用提供指导意义的。看书+个人总结,高手勿喷。
如果是搞竞赛的话可以去看刘汝佳的白书,百度一下很多的
至于树的数据结构,那太多了,堆,线段树,平衡树,树套树,动态树,树的分治等等都和树的数据结构有关
你说不懂有什么用?
首先树的定义很广,由一个或多个节点组成的有线集合,存在一个根节点,所有非根的节点一定有一个祖先,这是树;一个图中有n个点和n-1条边,这也是树,百度一下都有
树的结构用的最多的是二叉树,它可以优化一些操作。比如用数组模拟规模是n的一个数列,要支持在任意位置插入/删除一个数、询问第k个数是多少,那么插入删除最坏情况下是要做n次操作,询问只要1次。如果链表模拟的话插入、删除都是1次操作,但是询问最坏情况下是要做n次操作。这样最坏情况下都是可以用特殊数据卡你时间的。但是用平衡树就可以解决。平衡树的插入、删除、询问最坏情况下都是只要log2n的,这样就解决了时间的问题。并不是说平衡数就一定比数组、链表模拟好,所有高级数据结构的思想都是放弃一些操作的效率,来换取另一些操作效率变快。具体还是要看情况决定。
选择数据结构非常重要,数据结构在一定程度上决定了设计的好坏和实现的难易程度。
数据结构是编程的基础,当你设计一个程序的时候,好的数据结构设计对程序的性能来说很重要。
虽然c++中有STL,提供了一些常用的数据结构,但是如果要弄好程序设计的话,对常用的数据结构
达到精通的状态还是很重要的。