考研数据结构如何学习?
这个是我自己整理的数据结构思维导图,希望可以帮到大家(文末附有下载链接) 下面来具体谈谈该如何进行数据结构的复习 一、数据结构是什么? 要学好一门学科首先需要去了解这门学科的基本概念和基本知识;那么对于数据结构而言我们首先要了解的是什么是数据结构,为什么要去学习它呢? 我们知道计算机处理的对象是二进制信息,而二进制的0与1又是可以通过各种各样的编码表示成人类易于理解的形式的,比如:1100=十进制数52,这种将二进制转化成十进制的过程就是编码过程。 但是人们又不仅仅满足于对二进制信息的存储和处理,还希望能够存储和处理更为复杂的信息。例如我们需要去存储和处理一个学生基本信息表,其中可能包含学生的学号、姓名、性别等字段以及这些数据的值,这时我们就会发现一个问题:这些信息都是一些基本类型的变量所组成的集合,虽然这些变量的类型不同但是都有相同的属性,即它们的长度都为int型数据的长度,因此我们可以将这些具有相同属性的数据抽象出来形成一种新的数据类型,称为结构体或struct类型(C语言中),在上面的例子中就形成了Student这个结构体类型,从而将这些信息以一种更加结构化,更加组织化的方式存储起来,这样我们就解决了存储复杂信息的问题。
这就是数据结构所要解决的问题——如何将随机分布的非结构化数据以一种结构化和组织化的形式有序地组织和存储起来。 二、为什么要学数据结构 在解决上述问题时我们会发现一个问题:当我们要存储的数据量越来越大时,通过简单的线性表是无法完成的了。于是我们会想到使用类似于树这样的非线性结构来实现复杂的存储需求,然而当我们真正开始着手去编写代码实现这种非线性结构的时候我们又会发现很多问题,比如说:二叉查找树的插入、删除操作的时间复杂度分别是O(lgN)和O(N)。如果我们只需要完成一次插入或者一次删除则这个问题并不是太大,但是如果我们需要对这棵树进行大量操作的话就会发现这两个时间复杂度是非常可怕的!所以这个时候就需要数据结构来帮助我们来解决这些问题了——让我们能够更好的设计出符合实际需求的线性数据和非线性数据结构,从而使我们的程序运行的更快、更稳定 三、学习数据结构有什么用? 对于上面两个问题相信大部分同学都会说有用啊,但是具体有什么用却很难说得上来。在这里我举几个例子来说明一下它们都有哪些用武之地吧!
第一个当然就是编程,因为几乎所有的编程语言都提供了一种或者多种用于描述各种复杂的数据结构和其相关操作的语法格式及函数,只要按照这些语法规则和函数原型编写相应的代码就可以方便地实现不同的数据结构和数据操作功能。另外一个用处就在于它可以用来指导我们在现实生活中如何去分析和设计某种复杂数据结构及其相关的操作流程。