1 / 15
文档名称:

算法与数据结构复习.doc

格式:doc   页数:15
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

算法与数据结构复习.doc

上传人:wh7422 2015/6/6 文件大小:0 KB

下载得到文件列表

算法与数据结构复习.doc

相关文档

文档介绍

文档介绍:算法与数据结构复习
第1章绪论
一、基本概念
1、数据的基本单位是数据元素。
2、数据对象是性质相同的数据元素的集合。
3、数据项:数据的不可分割的最小单位。
4、数据结构是数据元素之间抽象的相互关系。
5、数据结构在计算机内存中的表示是指数据的存储结构。
6、数据逻辑结构的三种类型是线性结构和非线性结构(树型结构和图形结构)。
7、算法的5个重要特性是有穷性(或有限性)、确定性、可行性、输入和输出。
8、算法分析是为了找出高效的算法,算法效率通过空间复杂度和时间复杂度来描述。
9、空间复杂度是指在算法运行过程中临时占用的存储空间的大小。
10、时间复杂度是指算法中包含简单操作的次数。
例、求下列程序段的时间复杂度。
for( i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=0;
时间复杂度是 O(n*m)
第2章线性表
一、线性表
1、线性表是由零个或多个具有相同类型的元素组成的一个有序序列。
2、用数组表示的线性表
#define malength 100
struct LIST{
Elementtype elements[malength];
int last;
};
用数组表示一个线性表,表中的所有元素依次存储在数组的连续单元中。
在表头或中间插入或册除元素都要移动元素,移动多少个。
3、用指针表示的线性表
struct celltype{
Elementtype elements;
celltype *next;
};
用指针把表中的各个元素(称结点)依次链接起来,形成一个单向链表。
在链表中插入或册除结点都不要移动结点,移动多少个。
不带头结点的单链表h:
h
…..
^
不带头结点的单链表h为空的判定条件是:
h=NULL
带头结点的单链表h:
h
…..
^
带头结点的单链表h为空的判定条件是: h->next=NULL
二、栈
1、栈的定义
栈是一种特殊的线性表,栈是一种只能在叫做栈顶的一端进行进栈或出栈操作的线性数据结构。
栈的特点是“后进先出”。
例1、已知一个字符串,次序为3*-y-a/y^2,试利用栈写出把该串的次序改为3y-*ay2^/-的操作步骤。
例2、有6个元素a,b,c,d,e依次进栈,允许任何时候出栈,能否得到下列的每个出栈序列,若能,给出栈操作的过程,若不能,简述其理由。
(1)edcba (2) decba (3) dceab (4) abcde
解:对于(1)a,b,c,d,e 进栈,e,d,c,b,a出栈。
对于(2)a,b,c,d 进栈,d出栈,e进栈,e,c,b,a出栈。
对于(3)a,b,c,d 进栈,d出栈,c出栈,e进栈,e出栈,此时栈中,栈底是a,栈顶是b,不可能a先出栈,所以(3)是不可能是出栈序列。
对于(4)a进栈,a出栈,b进栈,b出栈,c进栈,c出栈,d进栈,d出栈,e 进栈,e出栈。
2、栈的表示
(1)用数组表示栈
栈的结构体:
typedef struct {
int top ;
elementtype elements[maxlength];
} STACK ;
STACK S ;
栈的容量:maxlength – 1 ;
栈空: = maxlength ;
栈满: = 0 ;
栈顶元素:[ ] ;
(2)用指针表示栈
栈的结构体:
struct node{
Elementtype val;
node *next;
};
typedef node *STACK;
三、队列
1、队列的定义
队列是一种特殊的线性表,只允许在表的一端进行插入,另一端进行删除。
在表的一端进行插入的一端叫队列的尾;在表的一端进行删除的一端叫队列的头。
队列的特点是先进先出。
例1,一个队列的入队列序列是1,2,3,4,则队列的输出序列是1,2,3,4。
2、队列的表示
用指针表示队列
struct celltype {
elementtype element ;
celltype *next ;
}
注意:栈和队列的共同点是只允许在端点处插入和删除元素。
四、广义表
一个广义表是n(n³0)个元素的一个有限序列。n是广义表的长度。当n=0时称为空表。
若(a1,a2,…,an)表示广义表,则(a1)表示广义表的头,(a2,…,an) 表示广义表的尾。
广义表的长度指该广义表中所包含的元素的个数。
广义表的深度指该广义表中所包含括号的层数。
例、广义表((a,b),c,d)的表头是(a,b),表