数据结构考研高分笔记
第一章绪论
本章概略
▲ 针对考研数据结构的 语言基础以及代码书写规范
对于考研数据结构,需要C 与C++语言作为基础,但是又不需要太多,因此此处讲解
有针对性。现在我们面临的是研究生考试,要在答题纸上写代码,代码的评判者是阅卷老
师,而不是TC ,VC6.0 等编译器。如果之前你只熟悉在这些编译器下写代码,那你要看看
这一部分,这里教你怎么快速的写出能让阅卷老师满意的代码。
▲ 算法的时间复杂度分析基础
为什么要特别注重这一块的讲解?在09 年批阅数据结构算法那道题的时候,由于当
时阅卷的标准答案是教育部给出的,并且明确说明以此为标准答案,但是教育部给出的
算法时间复杂度太大,对于算法有研究的同学,可以很轻松的写出一个算法,并且时间
复杂度远远小于标准答案。教育部就是权威,没有办法,只能按照教育部的答案改,这
样就导致了算法牛人写出更完美的算法,却得了最低的分。也许是为了避免这种不公平
的再次出现,10 年的考试要求终于改了,考生必须对自己写的算法给出时间复杂度和空
间复杂度,并以此来作
为评分的依据。所以这已经成为数据结构45 分里面的必考内容,这一点的考察在图、排
序、查找这三章内体现的尤为明显,因此我会在本章先总体讲一下算法时间复杂度分析的
基本方法,并在以后章节中以题目的形式讲一些具体分析思路,这样考生逐渐的就会掌握
考研要求的算法复杂度分析方法。
▲ 数据结构和算法的基本概念
这一部分介绍一些贯穿于整本书的基本概念。
. 针对考研数据结构的代码书写规范以及 语言基础
. . 考研综合应用题中算法设计部分的代码书写规范
要在答题纸上快速的写出能让阅卷老师满意的代码,是有些技巧的,这与写出能在编
译器上编译通过的代码有所不同。为了说明这一点我们首先看一个例题:
设将n (n>1 )个整数存放到一维数组R 中。设计一个算法,将R 中的序列循环左移
P ( 0
1
{Xp,Xp-1,,Xn-1,X0,X1...Xp-1}。要求:写出本题的算法描述。
分析:本题不难,要实现R 中序列循环左移P 个位
置,只需先将R 中前P 个元素逆置,再将剩下的元
素逆置,最后将R 中所有的元素再整体做一次逆置
操作即可。本题算法描述如下:
#include //1
#define N 50 //2
using namespace std; //3
void Reverse(int R[],int l,int r) //4
{ //5
int i,j; //6
int temp; //7
for(i=l,j=r;i
{ //9
temp=R[i]; //10
R[i]=R[j]; //11
R[j]=temp; //12
} //13
} //14
void RCR(int R[],int n,int p) //15
{ //16
if(p<=0||p>=n) //17
cout<
else //19
{ //20
Reverse(R,0,p-1); //21
Reverse(R,p,n-1); //22
Reverse(R,0,n-1); //23
} //24
} //25
int main() //26
{ //27
int L,i; //28
int R[N],n;