灰灰考研复习全书之数据结构
2020 版前言
本书针对计算机/软工相关专业数据结构考研所制,为灰灰考研系列复习全
书,可作为数据结构考研复习时使用。
皮皮灰先回答三个大家最关心的问题:
1.为什么要编写灰灰全书(数据结构)?
市面上现存的考研数据结构讲解大多针对统考408 ,与各大高校自主命题
的试题往往不适配(要么缺了内容,要么多了内容)。
主要缺失的内容有以下几点:
1.缺少动态规划的讲解
2.对贪心法、蛮力法、分治法涉猎甚少
3. 回溯问题完全被pass 掉了
对于这些缺失的内容,灰灰数据结构全书均有以各大高校真题为突破口的
相关补充。
2. 为什么选择灰灰全书(数据结构)?
灰灰全书最有价值的一点:皮皮灰整理了近几年100 所高校(985/211/重点
双非)的数据结构考研真题,并将其按内容依次整理分成各章节供各位考生学
习。
市面上的习题大多过于古老,00 后的题?
3. 如何以考研为目的学习数据结构?
首先皮皮灰表明下对这个问题的看法:
1、如果你踏踏实实按部就班正常学习数据结构,学会了考试自然没问题
2 、如果只是为了考研拿高分,数据结构一些先修课程(C 语言,离散数
学)不认真学习,直接死背算法概念(考研中数据结构算法是背的完的),你也
同样可以取得高分。但这样以考研为目的学习的数据结构知识是残缺的,是不
利于今后更深入的学习的。
但是我们现在的首要矛盾是时间与分数的不一致性:在尽量短的时间(1
个月时间)内,取得较为理想的分数,这就需要一定的技巧。
(1)关于先修课程
皮皮灰个人认为,如果你只是为了应付考研,数据结构先修课只需要理解
清楚下面这几点。
1.顺序结构:单纯地从上往下执行。
2.选择结构:
如果(今天天气好),那么就去外面跑步锻炼。
如果(今天下雨了),那么就在屋子里面不出去。
3.循环结构:
程序在一定条件下,原地转圈
最初有1 根筷子;
循环(每次都增加一根筷子){
如果(筷子数量小于10) 筷子数量加1
如果(筷子数量大于或者等于10) 退出循环
}
I
灰灰考研复习全书之数据结构
4.结构体与指针
现实世界中的青蛙可以抽象成一类对象,一个青蛙对象拥有特有的属性
(青蛙的颜色,青蛙的大小),下图表示了一个青蛙实体。
结构体可以将上述青蛙表示为
typedef struct{
String name; //数据域
int age; //数据域
struct Frog *next; //指针域
}Frog;
那么不同的青蛙之间怎么建立联系?
通过指针(指针包含下一地址信息),可以建立青蛙之间的关系。
这就是数据结构中的顺序存储结构。
5.什么是函数?
以一道题为例子
你现在是一个买卖青蛙的 huster 。每天的青蛙价格不一样,prices[i]代表青
蛙在第 i 天的价格,求只做一次交易(买入1 只,卖出1 只)能得到的最大收益
(你必须先买了青蛙之后才能卖青蛙)。
函数:int maxIncome (int prices[ ] )
例子:
输入: i 0 1 2 3
prices[i] 4 1 2 3
输出:2
函数名称:上述函数函数名称为maxIncome
输入参数:青蛙每天的价格数组prices
函数主体:编程需要完成的功能,计算买卖青蛙最大的收益。
返回类型与返回结果:上述函数返回一个int 型的结果
II
灰灰考研复习全书之数据结构