数据结构复习

线性表

1. 线性表的逻辑结构定义、抽象数据类型定义。

2. 线性表的两种存储结构的不同特点及其适用场合。

顺序存储:借助元素在存储器中的相对位置来表示元素之间的逻辑关系。

链式存储:借助指示元素存储地址的指针来表示元素之间的逻辑关系。

顺序表和链表的优缺点比较(正好是相对的)。

3. 在线性表的两种存储结构上实现基本操作的算法。

查找、插入、删除、归并、分解、就地逆置等。

注意:单链表与双向链表、普通链表与循环链表的区别。

双向链表中结点的特征:p=p->next->prior=p->prior->next

因此,在插入和删除时,对单链表,必须要知道第i-1个结点

的地址,而对双向链表则不必如此。

例1.已知la是不带头结点的单链表的头指针,试编写逆序

输出表中各元素值的递归算法。

例2.按递增有序输出单链表中的元素值。

例3.实现集合的交、并、差等运算。

堆和队列

1. 栈的定义、特征以及抽象数据类型定义。

会灵活运用栈的特征(后进先出)。

例:设输入元素为1, 2, 3, P, A,输入次序为123PA,元素经过栈后到达输出序列,当所有元素均到达输出序列后,有哪些序列可以作为高级语言的变量名?

2.栈的存储结构顺序栈:栈满和栈空的条件

链栈

入栈、出栈、取栈顶元素等基本操作的实现算法。

3.栈的应用表达式计算:了解基本思想、栈在算法中的作用

实现递归算法

4. 队列的定义、特征以及抽象数据类型定义。

5.队列的存储结构(顺序)循环队列

链队列

入队、出队、取队头元素等基本操作的实现算法。

循环队列:入队:Q->queue[Q->rear]=x;

Q->rear=(Q->rear+1)%MaxQueueSize;

出队:*d=Q->queue[Q->front];

Q->front=(Q->front+1) %MaxQueueSize;

判断队满和队空:(1)少用一个存储单元;

(2)设置一个标志位;

(3)设置一个计数器。

6. 队列的应用:结合后面二叉树和图的遍历算法。

数组

1. 数组采用行优先或列优先顺序存储时,数组元素的

存储地址的计算方法(重点掌握二维、三维数组)。

2. 特殊矩阵进行压缩存储时下标变换公式的推导方法。

要求掌握上三角矩阵、下三角矩阵、对称矩阵、三对角

矩阵分别按行优先或列优先压缩存储时的下标变换公式。

1. 树、二叉树的结构特性;二叉树的五种基本形态。

2. 满二叉树和完全二叉树的定义、特点;二叉树的性质

(五条,其中有两条只对完全二叉树满足)。

1、若深度从0开始计算则第i层有2^i个结点

2、共有2^(i+1) -1个结点

3、n0=n2+1

4、完全二叉树有n个结点,则他的深度为log2(n+1)-1

5、完全二叉树:第i个结点的左孩子在2i+1 右孩子是2i+2

3. 二叉树的遍历策略及算法(递归和非递归)。由前序

和中序遍历序列、中序和后序遍历序列能唯一构造出一棵二叉树。

会灵活运用遍历算法求解其他问题。

例1.输出某类结点的值或求某类结点的个数(如叶子结点)。

例2.判定一棵二叉树是否为二叉排序树(采用中序遍历策略,判断正在访问的结点与它的前驱结点之间是否递增有序)。

4. 树的三种存储结构及其特点(双亲表示法、孩子表示法和孩子兄弟表示法,重点掌握孩子兄弟表示法);树、

森林与二叉树的转换方法。

5. 树的遍历方法:

先根(对应二叉树的前序遍历)

后根(对应二叉树的中序遍历)

森林的遍历方法:先序和中序。

6.

Huffman树的概念及构造方法,哈夫曼编码的设计。

注意:Huffman树是扩充二叉树(只含度为0和度为2的结点)。

补充作业:写出二叉树的中序和后序遍历的非递归算法。

voidNInOrder(BiTreeNode*bt)

/*中序遍历二叉树bt的非递归算法*/

{BiTreeNode*stack [MaxNode], *p;

int top;

if (bt==NULL)

return;

top=0;p=bt;

while (! (p==NULL&&top==0))

{ while (p!=NULL)

{ if (top

{stack[top]=p;

top++;

}

else {printf(“\noverflow!”);

return;

}p=p->leftChild;/*访问左子树*/

}/*while (p!=NULL)*/

if (top==0) return;

else { top--;

p=stack[top];

visit (p);/*访问根结点*/

p=p->rightChild;/*访问右子树*/

}

}/*while*/

}

typedefstruct

{BiTreeNode*pt;

inttag;

} Node;

voidNPostOrder(BiTreeNode*bt)

/*后序遍历二叉树bt的非递归算法*/

{ Node stack [MaxNode],BiTreeNode*p;

inttop;

if (bt==NULL)

return;

top=0;p=bt;

while (! (p==NULL&&top==0))

{ while (p!=NULL)

{ if (top

{stack[top].pt=p;stack[top].tag=1;

top++;

}else {printf(“\noverflow!”);

return;

}

p=p->leftChild;/*访问左子树*/

}/*while (p!=NULL)*/

if (top==0) return;

else {if (stack[top-1].tag==1)

{ p=stack[top-1].pt;stack[top-1].tag=2;

p=p->rightChild;/*访问右子树*/

}

else { top--;

visit (stack[top].pt);/*访问根结点*/

}

}

}/*while*/

}

图的定义、基本术语。

(如:无向完全图、有向完全图、路径、回路、连通图和连通分量、强连通图和强连通分量、连通图的生成树)

无向完全图:弧数量为Cn2 的图,有向完全图的弧数量为An2

连通图 :任意两个结点能连通

连通分量:在无向图中,极大的连通子图成为图的连通分量

连通图的生成树:一个连通图的生成树是一个极小连通子图,他含有途中全部定点n但只有足以构成一棵树的n-1条边。

注意:边数与顶点数、度之间的关系:

完全图、连通图以及生成树的特点。

判断图中是否存在回路的方法。?

无向图中结点的度均>=2 则改图一定存在回路

利用BFS,在遍历过程中,为每个节点标记一个深度deep,如果存在某个节点为v,除了其父节点u外,还存在与v相邻的节点w使得deep[v]<=deep[w]的,那么该图一定存在回路;

2.

图的各种存储结构(重点掌握邻接矩阵和邻接表)的

特点及构造方法。

注意:图和网的区别。

3. 图的两种遍历策略及遍历算法(深度优先和广度优先)。

会灵活运用遍历算法求解其他问题。

4. 图的应用

(1)生成树的定义、类型(深度优先和广度优先生成树);

最小生成树的定义;

Kruskal算法和Prim算法(破圈法)求网的最小生成树的方法(注意:记住算法特点,不要混淆)。

(2)Dijkstra算法求单源最短路径的方法(有向网和无向网都适用)。

查找

1.静态查找表的顺序查找、折半查找方法的实现算法;

描述折半查找过程的二叉判定树的构造方法;三种方

法的比较。

2.

二叉排序树的定义、构造以及查找、插入的实现方法。

注意:二叉排序树按中序遍历是递增有序序列

3.

哈希表的定义、构造及查找方法,重点掌握开放定址法和链地址法处理冲突时的构造方法。

开放地址法:线性探测、平方再散列法(-1^2,1^2,-2^2,2^2....)

链地址法:将冲突的结点连接在地址上,采用链式结构

4.

根据公式计算各种查找方法在等概率情况下的平均查找长度。

内部排序

1.

排序的定义,排序方法“稳定”或“不稳定”的含义。

注意:希尔排序、直接选择排序、堆排序、快速排序是不稳定的排序算法。

2.

各种排序方法的基本思想、算法特点、排序过程

以及它们的时间和空间复杂度分析。

(包括基本算法及它们的改进算法:直接插入排序、

折半插入排序、希尔排序、直接选择排序、堆排序、

冒泡排序、快速排序、归并排序及基数排序)

会根据实际应用情况选择合适的排序算法。


错误题目总结

1、数据的最小单位是数据项

2、时间复杂度不受初始状态影响而恒为 nlog2n 的是 堆排序。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容

  • 因为之前就复习完数据结构了,所以为了保持记忆,整理了一份复习纲要,复习的时候可以看着纲要想具体内容。 树 树的基本...
    牛富贵儿阅读 6,868评论 3 10
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 2,279评论 0 3
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,767评论 0 19
  • 本文涉及更多的是概念,代码部分请参考之前写过的 2 篇博客 基于Javascript的排序算法基本数据结构和查找算...
    faremax阅读 1,240评论 0 2
  • 不要问我为什么脚步匆忙因为我正赶往课堂什么时候学习这么积极?不好意思我根本没把听课放心上只是老师要点名翘课也需要胆...
    醉后长亭阅读 254评论 1 3