大二|考研必看,你必须知道的关于数据结构的知识

01

我眼中的数据结构

数据结构是个很神奇的东西,从一开始就贯穿着我们的生活,没学计算机之前隐隐感受到了它的存在,但不可名说,学了计算机之后,才知原来他叫数据结构。

如穿衣而言。一件T恤,总共有四个口。 一个出头,一个收腰,两个出手臂。那其实这个T恤就是一个定义好的数据结构,整个T恤是一个节点(Node),Node有四块区域,分别存放上述信息。而我们自身就是被存放的数据。可以想像,不同的人穿同样样式的T恤,站在一起,这就是数据结构中的链表了(后续会有链表专门的文章)

再如寝室而言。可放床,可放柜子等等,这就是一个复杂的数据结构。 因为床和柜子还可再细分。依学校四人间的床来看,上面放垫絮。然后旁边是上下的梯子。同理四人间的柜子来看,上面可放书,桌面可放电脑。

 这个是复杂数据结构,寝室这个节点(Node)可以分成两个区域,第一个区域是床的链表,第二个区域是柜子的链表。床和链表也可看做是Node,里面再进行区域划分。

借上述两个例子,再放眼看我们身边的事物,是不是都有了不一样的色彩,对身边事物有了不同的看法,可在群里和小伙伴们一起交流

02

学校中的数据结构

学校一直重理论,在数据结构这门课程中有很多新的概念和知识点,如算法复杂度,链表,栈,队列,树,图等等,其中每种又可分为数组实现和链表实现。每种实现的增删改查的效率都不一样。其于基础的结构,还会根据需求做一些变形,如单向循环的链表,可以两边同时进出的队列,要高度一样的树,等等。

借句古语:万变不离其宗。从最基础的开始学,弄懂他们弄透彻他们,然后看要变的需求是什么,为了满足这种需求需要怎么变。

03

工作后的数据结构

工作之后的数据结构对学校中的数据结构做了封装和改造。算法细节都是封装好的,变成了一个实体类,实体类里对外暴露了方法。 调用相应的方法就可完成相应的操作。

如List:

public void showList(){
    List<Model> modelList = new ArrayList<>();
    //添加一个元素
    modeList.add(new Model());
    //判断List中是否包含某一个元素
    modeList.contains(model);
}

看起来是简单了,但实际上对数据结构的要求又提升了一步,因为平时写代码时就一个用户,几条数据,但在生产环境使用时,可能数万条数据,这时对数据结构的选择就尤为重要。用Vector还是ArrayList 还是LinkedList。等等,这些都需要在大学期间对数据结构课程有着很好的理解

04

如何学习这门课程


学习数据结构如同重新认识我们身边的世界。想一想我们在幼年时期是如何去探索这个世界?一双眼睛四处看,不停的到处爬,这碰碰那动动。学习数据结构也是如此。

1

多画图

 如上述的T恤的例子,数据这门课要多画图,链表的图,各种树的图,各种状态图,图形是最为直观的。如果一直对着书或者百度死磕,容易乱,一定要动笔多画图。

2

多写流程

一个再复杂的操作也是由很多简单的操作组成的。计算机就是一个死家伙,一次只执行一行代码,不会跳着走,也不会倒着走。想要计算机执行的正确,那么我们自己要先清楚一步一步怎么去走,去执行。

 如向链表中某个元素A后插入一个元素B时:

 一.先找到元素A对应的index

 二.对应index后面的元素都向后移一位,把位置空出来

 三.将要插入的元素B赋值到中间空出的位置

 四.返回插入位置的index值

3

多联想现实

计算机是对现实的抽象,数据结构是对现实中各个事物的抽象,不能死学,一定要和现实对应起来,这样不仅记忆深刻,也能加深理解学习。如银行排队,食堂排队是队列。计算机处理()和四则运算是栈。去图书管找书是用的树。 淘宝京东等商城的推荐,猜你喜欢用的是图等等。

05

推荐学习书籍

书:《大话数据结构》,网盘链接:链接:https://pan.baidu.com/s/1TXTWwukn-YMgx_KOC-AyMQ 密码请在公众号回复 大话数据结构

不论数据结构课程考试还是考研的时候,这本书是必看必刷!!书中以老师上课的形式用诙谐优默的话句对多种数据结构进行现实生活类比。对弄懂数据结构大有脾益。

公众号:java技术大本营

QQ群: 661749608 

微信:best396975802 

邮箱: lixiang9409@vip.qq.com 

今日语录

选一个方向,定一个时间,剩下的只管努力与坚持 

文字来源:微笑的小小刀

图文排版:花音

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值