如何学好数据结构?
无数人发过此问,求而未得。究其缘由,大概数据结构有种只可意会,不可言传的神秘。
想到这几天的学习经历,学完了数组和链表这两种线性表数据结构。又看了栈和队列这两种特殊的线性表,发现完全不是那回事儿。啥玩意!!!这么复杂一堆代码,栈不就是这有一个出口的容器,先进去的元素后出出来。队列不就是有一个入口和一个出口的容器,先进的元素先出吗?没想到用数组和链表都可实现他们,而且加了判断栈空、扩容这些操作。
该如何理会这些神操作呢?
我也不知道,但我觉得光看是不行的。知道某种数据结构的特点,用自己已经会的基本数据结构去搭建这种新的数据结构。跟算法有点像,需要考虑好多问题,一些隐含的条件都有考虑到。让我设计栈我可能这样设计:1、创建一个数组(容量大点的)2、初始换一个指针指向arr[0]即栈底 3、进栈:将元素存到数组中,指针指到arr[1] 4、出栈:顶部元素扔调,指针往下移动一位。感觉也像个汽车,但是比不了别人的跑车!!!
为什么我设计的不行呢!!当然是考虑的不够全面,说白了就是没有完全理解栈这种数据结构。所以骚年,多多思考吧,你还很嫩。
为什么要学习数据结构?
这个问题也是被问烂了,今天面试后发现我对Java的基本执行语句其实不够熟悉。就是还不能随心所欲的写出代码来,而当你用你熟悉的语言把数据结构实现了一遍才能说你熟了这门语言。所以学好数据结构,关键在理解后,用语言去实现它。以后学pythone打算从数据结构开始。