当前位置:文档之家› 数据结构期末复习资料.doc

数据结构期末复习资料.doc

数据结构期末复习资料.doc
数据结构期末复习资料.doc

第1章绪论

是一门研究非数伉计算的程序设计问题屮计算机的操作对象以及它们之间的关系和操作等的学科。

数据结构(Data Structure):相互之间存在一种或多种特定关系的数据元素的集合。

2、数据结构的形式定义:二元组Data_St rUC t ure=(D,S)其中,D是数据元素的有限集,S是D上关系的有限集。

3、数据元素之间关系的映像:1、顺序映像(顺序存储结构):以相对的存储位置表示后继关系。

2、非顺序映像(链式存储结构):借助指针元素存储地址的指针表示数据元素之间的逻辑关系。

任何一个算法的设计取决于数据(逻辑)结构,其实现取决于物理结构。

4、算法的定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。特性:有穷性、

确定性、可行性、输入、输出

5、算法的评价——衡量算法优劣的标准

正确性(correctness):满足具体问题的需求

可读性(readability):易读、易理解

健壮性(mbustnes咏当输入数据非法时,算法能够做出反应或进行处理

时间复杂性与空间复杂性:执行吋间短、存储空间小

第2章线性表

1、线性表是一种最简单的线性结构。

线性结构是一个数据元素的有序(次序)关系

特点:存在唯?一的一个“第一个”的数据元素;存在唯一的一个“最后一个”的数据元素;除第?一个数据元素外,均有唯一的前驱:除最后一个数据元素外,均有唯一的后继

2、线性表类型的实现——顺序映像定义:用一组地址连续的存储单元依次存放线性表中的数据元素。

■以“存储位置相邻”表示有序对<心-1, 乂〉,则有:LOC{ai} = LOC{ai-\} + I其屮I是一个数裾元素所占存储量LOC(ai) = LOC(a L) + (/-l)X/

■特点:丨、实现逻辑上相邻一物理地址相邻2、实现随机存取

3、若假定在线性表中任何一个位置上进行插入的概率都是相等的,则移动元素的期望值为:

1 n+\

n + l t

n

~ 2

若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为:

4、线性表类型的实现——链式映像线性链表特点:用一组地址任意的存储单元存放线性表中的数据元素。

5、在单链表屮第i个结点之前进行插入的基本操作为:找到线性表屮第i-1个结点,然后修改其指向后继的指针。

s = (LinkList) malloc ( sizeof (LNode)); // 生成新错点s-〉

data = e; s->next = p-〉next; p->next = s; // 插入

在单链表中删除第i个结点的基本操作为:找到线性表中第i-1个结点,修改其指向后继的指针。q = p->next;

p->next = q->next; e = q-〉data; free(cj);

5、循环链表:最后一个结点的指针域的指针又指回第一个结点的链表。

和单链表的差别仅在于:判别链表中最后一个结点的条件不再是“后继是否为空”,而是“后继是否为头结点”。

6、双向链表的操作特点:I、“查询”和单链表相同;2、“插入’’和“删除”时需要同时修改两个方向上的指针‘‘插入”:s-〉next = p-〉next; p->next = s; s->next->prior = s; s->prior = p; (s 是插入的结点)

删除:p-〉next = p-〉next-〉next; p-〉next-〉prior = p;(要删除的是p 的下一个结点)

第3章栈和队列

1、栈、队列的特点:

□从数据元素间的逻辑关系看?是线性表

□从操作方式与种类看?不同于线性表:栈与队列是操作受限的线性表

2、桟的基本概念栈---是限制仅在线性表的一端进行插入和删除运算的线性表。

栈顶(TOP)--允许插入和删除的一端。

栈底(bottom)--不允许插入和删险的一端。

空栈--表中没有元素。

栈--又称为后进先出的线性表

3、栈中元素的特性:1、具有线性关系2、后进先出

4、栈的进栈出栈规则:

a)按序进栈:有n个元素1,2,...,n,它们按1,2,…,n的次序进栈(i进栈时,1?(i-1)应该已经进栈);

b)栈顶山栈:栈底最后山栈;

c)时进时出:元素未完全进栈时,即可出栈。

5、栈的表示与实现

顺序栈即栈的顺序存储结构:一组地址连续的存储单元依次存放向栈底到栈顶的数椐元素。

1、附设一个栈底指针base,总是指向栈底。

2、附设一个栈顶指针top。空栈吋,top=base;非空栈吋,总是指向栈顶元素+ 1的位置。

□插入一个栈顶元素,指针top增1;

□删除一个栈顶元素,指针top减1;

□非空栈屮的栈顶指针始终在栈顶元素的下一个位置上

链栈:注意:链栈中指针的方向指向前驱结点!

6、队列

■队列:只允许在表的一端进行插入,而在表的另一端进行删除的线性表。

□队尾(rear) -------- 允许插入的一端

□队头(front)——允许删除的一端

■队列特点:先进先出(FIFO)

7、队列类型的实现

■链队列——队列的链式表示和实现

■顺序队列——队列的顺序表示和实现用一组连续的存储单元依次存放队列中的元素

8、顺序队列运算时的头、尾指针变化

设两个指针front,rear,约定:rear指示队尾元素;front指示队头元素前一位罝初值front=rear=0 空队列

条件:Q.front==Q.rear 队列满:Q.rear-Q.front=m 入队列:Q.baselrear++J=x;

出队列:x=Q.base[++frontJ;

存在问题:设数组维数为M,贝IJ:

■当rear-front=m时,再有元素入队发生溢出---------- 真溢出

■当rear已指向队尾,但队列前端仍有空位置吋,再有元素入队发生溢山——假溢出

9、循环队列:将数组首尾相接(即:base[0j连在base[m-lj之后)。

入/出队列运算

利用“模运算”,贝IJ:

>入队:Q.rear=(Q.rear+l )%m

>岀队:Q.front=(Q.front+l)%m 队满和队空判断条件:

少用一个元素空间:

队空:Q.rear=(Q.front)

队满:(Q.rear+1 )%m=Q.front

10、栈和队列是限定插入和删除只能在表的“端点”进行的线性表。

a)栈具有“后进先出”的特性:

b)队列具有“先进先出”的特性。

1. 串的基本定义

2. 模式匹配和KMP 算法

第6章数组和广义表

1. 数组基本概念

2. LOC (6Z /./)=LOC (6Z,J )+[(/-1 )*/?+(/-1 )]*々

3. 稀疏矩阵

4. 广义表基本定义 GL=(al ,a2,...,ai ,...,an )

第7章树和二叉树

本章小结

■二叉树的结构特性,各性质相应的证明方法。

■二叉树的各种存储结构的特点及适用范围。

■遍历二叉树是二叉树各种操作的基础,遍历的具体算法与所采川的存储结构有关。

■树和森林与二叉树的转换。

■最优二叉树的特性,掌握建立最优树和哈夫曼编码的方法。

一、 树的定义

1、树型结构:(非线性结构)至少存在一个数据元素有两个或两个以上的直接前驱(或直接后继)元素的数据结 构。

树的定义:是n (n 彡0)个结点的有限集合T,对于任意一棵非空树,它满足:有且仅有一个特定的称为根(root ) 的结点;当时,其余结点可分为zn (m 〉0)个互不相交的有限集Tl, T2, Tzn,其屮每个集合本身又是 —棵树,称为根的子树。上述树的定义是一个递归定义。

2、基本术语

结点:包含一个数据元素及若干指向其子树的分支。结点的度:结点拥有的子树数。叶子(或终端)结点:度为 零的结点。分支(或

非终端)结点:度大于零的结点树的度:树中所有结点的度的最大值结点的层次: 根结点的层次为1,第/层的结点的子树的根结点的层次为/+1。 树的深度:树屮叶子结点所在的最大层 次。

任何一棵非空树是一个二元组Tree = (root ,F )其中:root 被称为根结点F 被称为子树森林

二、 二叉树

1、 二叉树的定义是z7(n 〉=0)个结点的有限集合,它或为空树(/?=0),或由一个根结点和至多两棵称为根的左子树和 右子树的互不相交的二叉树组成。注:二叉树屮不存在度大于2的结点,并且二叉树的子树有左子树和右子树之 分。

2、 二叉树的五种基本形态:

空树只含根结点右子树为空树左子树为空树左右子树均不为空树

3、 二叉树的性质

性质1 :在二叉树的第/层上至多有2<1个结点(i>l )。其屮2Z -1为2的i-1次方

性质2:深度为k 的二叉树上至多含2<1个结点(k>1)。其中2<1为2的k 次方减一

性质3:对任何一棵二叉树,若它含有个叶子结点、n2个度为2的结点,则必存在关系式:〃0 = 〃2+1。 证明:设二叉树上结点总数n = n0 + n\ + z?2, ?.?二叉树上分支总数/? = n\+2n2,①而Z? = = n0 + n 1 + z?2 一 1 ② 由①②,n0 = ?2 + 1 0

除根结点外,其余结点都有一个分支进入,设/7为分支总数,则n=/7+l 性质4:具有〃个错点的完全二叉树的深度为L log2n ] +1 o

其中L log2n ]为不大于log2n 的最大整数 性质5:若对含《个结点的完全二叉树从上到下且从左至右进行1至《的编号,则对完全二叉树中任意一个编 号为f 的结点:

(1)若/=1,则该结点是二叉树的根,无双亲,否则,编号为L//2」的结点为其双亲结点;

(2) 若2i>n,则该结点无左孩子,否则,编号为2/的结点为其左孩子结点;

11

、 栈的链忒存储不需义结点

(3)若2i+\>n f则该结点无右孩子结点,否则,编号为2/+1的结点为其右孩子结点。

4、两类特殊的二叉树:

满二叉树:指的是深度为A且含有2<1个结点的二叉树。其中2<1为2的k次方减1 特点:是每一层上的结点数都是最大结点数。完企二叉树:树中所含的n个结点和满二叉树中编号为1至H的结点一一对应。

特点:(1)叶子结点只可能在层次最大的两层出现;⑵对任一结点,若其右分支下的子孙的最大层次为/,则其

左分支下的子孙的最大层次为/或/+1。

■性质练习:

1.一棵二叉树在其第五层中有17个结点,可不可能?

第/层上至多有2/-1个结点,则25-1 = 16。所以,不可能。

2.二叉树的根结点属于第0层还是属于第1层?第1层

3.已知一棵二叉树有20个结点,其中6个结点为叶子,则该树中度为2的结点数为_5_?度为0的结点为i? 由性质3: n0=n2+1,则n2=n0-1 =6-1 =5。

4.己知一棵完全二叉树屮编号为101的结点有LC和RC结点,则其LC结点编号为202 ,RC结点编号为

203 ?由性质5,可知左孩子为2i,右孩子为2i+l

5.—棵深度为h的完全k叉树,如果按层次自顶昀下、同一层自左向右、顺序从1开始对全部结点进行编号,试问:该树上最多有多少个结点?最少有多少个结点?

由性质1和定义,可知除第h层外,其余各层都是满的,所以:

l+k+k2+...+k h-2=(k h_,-l)/(k-l),则最多有:(k hd-l)/(k-lHk h4=(k h-l)/(k-l);

最少有:(k h-1-l)/(k-l)+l

三、二叉树的存储结构

1、顺序存储结构:

特点:一组地址连续的存储单元存储各结点(定义一个一维数组):自根而下、自左而右存储结点;按完全二叉树上的结点位置进行编号和存储。

缺点:空间利用率太低!

2、链式存储结构:

二叉链表:结点结构至少包含:数据域和左右孩子指针域Ichild data rchild

三叉链表:结点结构至少包含:数据域、左右孩子指针域、双亲指针parent Ichild data rchild

四、遍历二叉树和线索二叉树

1、遍历二叉树:顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。基本操作是访问结点

先(根)序的遍历算法:若二叉树为空树,则空操作;否则,(1)访问根结点;⑵先序遍历左子树;⑶先序遍历右子

巾(根)序的遍历算法:若二叉树为空树,则空操作;否则,⑴中序遍历左子树;⑵访问根结点;⑶巾序遍历右子树。

后(根)序的遍历算法:若二叉树为空树,则空操作;否则,⑴后序遍历左子树;⑵后序遍历右子树;⑶访问根结点。

2、建立二叉树的存储结构:

基本要点:以“遍历”为基本出发点;不同的遍历方法相应地有不同的建立算法代码

如何由二叉树的先序和中序序列建树???

3、线索二叉树

指向该线性序列中的“前驱”和“后继”的指针,称作“线索”。包含“线索”的存储结构,

称作“线索链表”。与其相应的二叉树,称作“线索二叉树”

遍历二叉树的结果是,求得结点的一个线性序列。

线索化的实质是将二叉链表中的空指针改为指向前驱或着后续的线索,而前驱或者后续的信息只有在遍历时才能得到,因而线索化的过程即为在遍历的过程屮修改空指针的过程。

四、树和森林

1、树的存储结构

①双亲表示法:川一组连续空间存储树的结点,并附设一个指示器指示其双袭畜:点的位置。其巾根节点的值为-1

②孩子链表表示法:树结点表和孩子结点表为了快速查找每个结点的孩子结点

③树的二叉链表(孩子-兄弟)存储表示法:又称二叉树表示法,即以二叉链表作树的存储结构。链表屮结点的两个链域分别指向结点的第一个孩子结点和下一个兄弟结点。左边孩子右边兄弟与孩子一兄弟链表对应的二叉树:转化后,二叉树的右子树必为空!

2、森林与二叉树的转换

给定一棵树,可以找到惟一的一棵二叉树与之对应。——用二叉链表作为存储结构(依据)

把森林中第二棵树的根结点看成第一棵树的根结点的兄弟,即作为二叉树的右子树,则同样可以导岀森林和二叉树的对应关系。注意:和树对应的二叉树,其左、右子树的概念己改变为:左是孩子,右是兄弟。

3、树和森林的遍历两种遍

历树的方法:

①先根(次序)遍历:若树不空,则先访问根结点,然后依次先根遍历各棵子树。

②后根(次序)遍历:若树不空,则先依次后根遍历各棵子树,然后访问根结点。

麻林的遍历:

森林由三部分构成:森林中第一棵树的根结点;森林中第一棵树的子树森林;森林中其它树构成的森林。

遍历森林:

先序遍历:若森林不空,则访问森林屮第一棵树的根结点;先序遍历森林屮第一棵树的子树森林;先序遍历森林中(除第一棵树之外)其余树构成的森林。即:依次从左至右对森林中的每一棵树进行先根遍历。

中序遍历:若森林不空,则中序遍历森林中第一棵树的子树森林;访问森林中第一棵树的根结点;中序遍历森林中(除第一棵树之外)其余树构成的森林。

即:依次从左至右对森林中的每一棵树进行后根遍历。

五、哈夫曼树及其应用

1、最优二叉树(哈夫曼树)

结点的路径长度:从根结点到该结点的路径上分支的数目。

树的路径长度:树巾每个结点的路径长度之和。

树的带权路径长度:树中所有叶子结点的带权路径长度之和WPL(T) = Sid从(对所有叶子结点)

在所有含〃个叶子结点、并带相同权值的m叉树屮,必存在一棵其带权路径长度取最小值的树,称为“最优树”。

2、如何构造最优树?(赫夫曼算法)以二叉树为例:

⑴根据给定的n个权值{wl, w2, ...? wn),构造n棵二叉树的集合F = {Tl, T2,... , Tn),其中每棵二叉树中均只含一个带权值

为wi的根结点,其左、右子树为空树;

⑵在F中选取其根结点的权值最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权值为

芄左、右子树根结点的权值之和;

⑶从F中删去这两棵树,同时加入刚生成的新树;

⑷重复(2)和(3)两步,直至F中只含一棵树为止。

3、采用二叉树设计二进制前缀编码规定:左分支用“0”表示;右分支用“1”表示。

4、算法实现:巾于哈夫曼树中没有度为1的结点,则一棵有n个叶子结点的哈夫曼树共有2n-l个结点(因n2=n0-l),可以存储在一个大小为2n-l的一维数组屮。

5、编码需要从叶子到根;译码需要从根到叶子

第8章图

本章小结

■图是一种S杂的非线性结构。

■图的存储表示方法:邻接矩阵邻接表十字链表——有向图邻接多重表——无向图

■图的遍历:深度优先、广度优先

■图的遍历的应用:最小生成树、拓扑排序及关键路径、最短路径等问题各种算法思想!

一、图的定义和基本术语1、

图的定义

图形结构:较线性表和树更为复杂的数据结构。结点之间的关系是任意的,图中任意两个数据元素都可能相

关。

图的结构定义:厘:是由一个顶点集V和一个顶点间的关系集合组成的数据结构。Graph = (V , VR)

其中,V={x|xe某个数据对象},是顶点的有穷非空集合;

2、顶点之间关系的有労集合,也叫做边(edge)或弧(Arc)集合。“弧”是有方向的,

3、由顶点集和弧集构成的图为有向图。由顶点集和边集构成的图称作无向图

基本术语

①有(无)向fi:弧(边)上带权的图

②假没图中有n个顶点,e条边,则含有e=n(n-l)/2条边的无向图称作完全图;含有e=n(n-l)条弧的有向图称作

有向完全图;若边或弧的个数e<nlogn,则称作稀疏图,否则称作稠密图。

③和顶点v关联的边的数目定义为边的度

对有向图来说,顶点的出度:以顶点v为弧尾的弧的数目;顶点的入度:以顶点v为弧头的弧的数目。

顶点的度(TD)=出度(0D)+入度(ID)

④若图G中任意两个顶点之间都有路径相通,则称此图为连通图;

若无向图为非连通图,则阁屮各个极大连通子阁称作此阁的连通分量。

对有向图来说,若任意两个顶点之间都存在一条有向路径,则称此有向图为强连通图。否则,其各个强连通子图称作它的强连通分量。

假设一个连通图有n个顶点和e条边,其中n-1条边和n个顶点构成一个极小连通子图,称该极小连通子图为此连通图的生成树。比较:连通分量和生成树!连通分量:非连通阁的极大连通子阁而生成树:连通阁的极小连通子阁

二、图的存储结构对图中所有顶点使用一个一维数组来存放

1、图的数组(邻接矩阵)存储表示

无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不对称的。

借助于邻接矩阵容易求得顶点的度:①在无向图中,统计第/行(列)1的个数可得顶点/的度。②在有向图中统计第行1的个数可得顶点f的出度;统计第J列1的个数可得顶点./的入度。

2、图的邻接表抒储表示

单链表中每个结点由三个域组成邻接点域(adjvex):指示与顶点vZ邻接的点在图中的位置;链域(nextarc):指示下一条边或弧的结点;数据域(info):存储和边或弧相关的信息,如权值等。

3、有向图的十字链表存储表示

将有向图的邻接表和逆邻接表结合起来的一种链表从横14上看是邻接表,从纵昀上看是逆邻接表。

4、无向图的邻接多重表存储表示

三、图的遍历

从图中某个顶点出发游历图,访遍图巾其余顶点,并且使图巾的每个顶点仅被访问一次的过程。

1、深度优先搜索

连通阁的深度优先搜索遍历:深度优先搜索遍历连通阉的过程类似于树的先根遍历

非连通图的深度优先搜索遍历

深度优先遍历图的实质:对每个顶点查找其邻接点的过程!

2、广度优先搜索

广度优先遍历图的实质:通过边或弧找邻接点的过程!

四、图的连通性问题

1、无向图的连通分量和生成树

生成树的特点:n个顶点的连通子图的生成树是一个极小连通子图,它包含图中所有顶点和n-1条边(但有n-1 条边的图不一定是生成树)。生成树巾任意两个顶点间的路径是唯一的。注:边数>n-l时,则形成环;边数<n-l 时则不连通

五、最小生成树

构造M的一棵最小生成树,5卩:在e条带权的边中选取n-1条边(不构成回路),使“权值之和”为最小。

1、普里姆算法:

基本思想:

第一步:取图中任意一个顶点v作为生成树的根:

第二步:往生成树上添加新的顶点w。在添加的顶点w和已经在生成树上的顶点v之间必定存在一条边,

并且该边的权值在所有连通顶点v和w之间的边中取值最小;

第三步:继续往生成树上添加顶点,直至生成树上含有n个顶点为止。

构造的最小生成树不一定唯一,但最小生成树的权值之和一定是相同的。

2、克2?斯卡尔算法:考虑问题的出发点:为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能地小。

基本思想:

第一步:构造一个只含n个顶点的子图SG;

第二步:从权值最小的边开始,若它的添加不使SG中产生冋路,则在SG上加上这条边;

第三步:如此重复,直至加上n-1条边为止

比较两种算法:

□普里姆算法:O(n2)、适用于稠密图□克鲁斯卡尔算法:O(el O ge)、适用于稀疏

六、有向无环图及其应用

定义:一个无环的有向图称作有向无环图

1、拓扑排序检查有向图中是否存在回路的方法之一,是对有向图进行拓扑排序。

①用顶点表示活动,用弧表示活动间的优先災系的有向图称为顶点表示活?动的网(Activity On Vertex Network),简称AOV-网。在AOV-网屮不应该出现有环。对给定的AOV-网需首先判断网屮是否有环。

②如何进行拓扑排序?

□从有向图中选取一个没有前驱的顶点,并输出之;

□从有向图巾删去此顶点以及所有以它屋<的弧;

□重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。

③在算法中需要用定量的描述替代定性的概念:

没有前驱的顶点=入度为零的顶点;删除顶点及以它为尾的弧=弧头顶点的入度减1。

④为避免每次都要搜索入度为零的顶点,在算法中设賈一个“栈”,以保存“入度为零”的顶点

2、关键路径

“关键活动”指的是:该弧上的权值增加将使有向图上的最长路径的长度增加。

3、最短路径

从某顶点出发,沿图的弧到达另一顶点所经过的路径屮,各边上权值之和最小的一条路径——最短路径。

注意:和关键路径区别!

第9章查找

本章小结

■査找表是由同一类型的数据元素(或记录)构成的集合。

■对查找表经常进行的操作:查询检索插入删去■静态查找表:顺序表

有序表:等概率:折半查找一一判定树不等概率:静态树表的查找一一次优二叉查找树■动态查找表:

二叉排序树和平衡二叉树B-树哈希表

查找的方法取决于查找表的结构一、

静态查找

1、顺序表的查找以顺序表表示静态杏找表,称为顺序查找表。

“哨兵”的作用:免去查找过程屮每一步都要检测整个表是否査找完毕。

分析顺序查找的时间性能:、、…、

在等概率查找的情况下P f=-,顺序表查找的平均查找长度为:A5L SS+ U = -

当查找不成功的情况不能忽视椅,且等概率情况下n /=1 2

=3(n+l)/4

胤,,(打+1)

2、有序的查找"

■(1)折半查找若以有序表表示静态查找表,则查找过程可以基于“折半”进行。

注意:折半查找只适用于有序表,且限于顺序存储结构!

静态树表的查找

■(2)在不等概率查找的情况下,折半查找不是有序表最好的查找方法。

次优二叉树的构造方法请看PPT第九章幻灯片20

3、动态查找表

特点:表结构本身在查找过程中动态生成。

二叉排序(查找)树:或者是一棵空树;或者是具有如下特性的二叉树,

□若它的左子树不空,则左子树上所有结点的值均小于根结点的值;

□若它的右子树不空,则右子树上所有结点的值均大于根结点的值;

□它的左、右子树也都分别是二叉排序树。

如何构造二叉排序树是重点

平衡二叉树(又称AVL树)树中每个结点的左、右子树深度之差(称为平衡因子BF)的绝对值不大于1 □ AVL树的平均查找长度和log/?是同数量级的!

B-树定义:是一种平衡的多路查找树。

一棵m阶(纟S点的最大分支数)的B-树上:

多叉树的特性:非终端结点结构为:(n,A0,Kl,A1,K2,A2,K3,A3,...,Kn,An)

每个非终端结点可能含有:

■至多n个关键字Ki, n彡m-1;

■至少含有个关键字Ki, B|J ^n;

■ /2+1个指向子树的指针

查找树的特性:非叶结点中的多个关键字均自小至大有序排列,即:Kl

平衡树的特性:树中所有叶子结点均不带信息,且在树中的同一层次上;根结点或为叶子结点,或至少含有两棵子树(至少有一个关键字);其余所有非叶结点均至少含有棵子树,至多含有/n棵子树;

二、哈希表这个是重点

查找的过程为:给定值依次和关键字集合中各个关键字进行比较;

查找的效率取决于和给定值进行比较的关键字个数

建立关键字与记录在表中的存储位置之间的函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f(key)为哈希函数。

关键要素:哈希函数H(key)处理冲突的方法

假设哈希表的地址集为0至迎邃是指由关键字得到的哈希地址为y的位置上已存有记录。“处理冲突”就是为该关键字的记录找到另一个“空”的哈希地址。

■开放定址法:为产生冲突的地址H(key)求得一个地址序列HO, HI, H2, ...,Hs 1彡s^m-\

其屮?? HO = H(key) Hi = ( H(key) + di) MOD m, i=l f2,…,s

■链地址法:将所有哈希地址相同的记录都链接在同一链表屮。

笫10章内排序

排序屮的基本操作:比较关键字大小和移动记录

不同的具体实现方法导致不同的算法描述:

直接插入排序(基于顺序查找)折半插入排序(基于折半查找)表插入排序(基于链表存储)希¥排序(基于逐趟缩小增量)

1、直接插入排序

■利用“顺序查找”实现“在R[l..i-1]中查找R[i]的插入位置”。

■算法的实现要点:从Rfi-11起向前进行顺序查找,监视哨设賈在即01

n个元素需进行n-1趟排序。

最好情况:关键字g排序前已递增有序。

“比较’’的次数:=77-1 “移动”的次数:0

最坏情况:关键字?非序前为递减有序。

“比较”的次数: (n+2)(n-l)

■ “移动”的次数:5^(/+1)= 直

接插入排序是一种稳定的排序劳法

2、折半插入排序

因为R[l..i-1]是一个按关键字有序的有序序列,则可以利用折半查找实现“在R[l..i-1]中查找R[i]的插入位置”, 如此实现的插入排序为折半插入排序。

3、 表插入排序

■利用静态链表进行排序,并在排序完成之后,一次性地调整各个记录相互之间的位置,即将每个记录都 调整到它们所应该在

的位罝上。

4、 希尔排序yj 私缩小增量排序{

希尔排序是一种不稳定的排序方法

基本思想:对待排记录序列先作“宏壓’调整,再作“微观”调整。所谓“宏观”调整,指的是,“跳跃式”的插入排序。 具体做法:将记录序列分成若干子序列,分别对每个子序列进行插入排序。

5、交换排序

起泡排序

■基本思想:

■注意:起泡排序的结束条件为,最后一趟没有进行“交换记录”;一般情况下,每经过一趟“起泡”,“i 减1”, 但并不是

每趟都如此。

时间性能分析:

最好的情况(关键字在记录序列中壓ft 有序):只耑进行一趟起泡。

■ “比较”的次数.? n-1

■ “移动”的次数:0

最坏的情况(关键史在记录序歹J 中肖卩有序): “比较”的次数: S (/-D =-

i=n

至该记录之前,反之,凡关键字大于枢轴的记录均移动至该记录之后

快速排序是土盪定的排序方法。

6、选择排序

基本原理:将待排序的记录分为己排序(初始为空)和未排序两组,依次将未排序的结点中值最小的结点插入己排 序的组屮。简单选择排序和堆排序 堆排序:堆排序只需要一个记录大小的辅助空间。

堆排序分为两个步骤:根据初始输入,形成初始堆。一一建堆通过一系列的记录交换和重新调整进行排序。一一 筛选

如何“筛选”? “筛选”指的是,对一棵左/右子树均为堆的完全二叉树,“调整”根结点使整个二叉树也成为一个堆。 如何“建堆”?建堆是一个从下往上进行“筛选”的过程。从最后一个非终端结点,即第Ln/2」个元素开始“筛选”! 堆排序的吋间复杂度分析:对深度为k 的堆,“筛选”所需进行的关键字比较的次数至多为2(k-l );对《个关键 字,建成深度为/t (=L^2/d+l )的堆,所需进行的关键字比较的次数至多4n;

堆排序的时间复杂度为空间复杂性为0(1)

堆排序是不稳定的排序方法

归并排序

阳并排序的过程基于下列堇本垦想进行:将两个或两个以上的有序子序列合并为一个有序序列。

各种排序方法的综合比较

时间性能:平均的时间性能:

时间复杂度为O (/7logn ):快速排序、堆排序和归并排序 时间复杂度为O(〃2):直接插入排序、起泡排序和简单选择排序 时间复杂度为O(n):基数排序

需进行趟起泡。

移动”的次数:

t=n 3"(,卜1) -2- (每次移动记录3次)

■起泡排序方法是稳定的。

快速排序

一趟快速排序(一次划分):目标:找一个记录,以它的关键字作为“枢轴”,凡其关键字小于枢轴的记录均移动

基于“关键字间的比较”进行排序的方法可以按排序过程所依据的不同原则分为: 插入排序交换排序选择排序归并排序基数排序

数据结构课程设计说明书讲解

安徽理工大学 数据结构 课程设计说明书题目: 一元多项式计算 院系:计算机科学与工程学院 专业班级:数字媒体13-1班 学号: 2013303102 学生姓名:钱福琛 指导教师:梁兴柱 2015年 1月 9 日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

2014年 11 月 10 日安徽理工大学课程设计(论文)成绩评定表

目录 1 问题描述 2 功能描述 2.1 课题要求........................................... 2.2 软件格式规定....................................... 3 设计 2 3.1 相关函数介绍说明................................... 3.2 主程序的流程基函数调用说明......................... 4 程序设计 4 4.1 多项式存储的实现................................... 4.2 加减乘除算法....................................... 4.2.1加法运算的实现............................... 4.2.2减法运算的实现............................... 4.2.3乘法运算的实现............................... 4.2.4除法运算的实现............................... 4.3 函数调用关系图..................................... 5 运行测试

机械设计常用资料大全

机械设计常用资料大全》(Mechanical design common documents daqo)1.0 这么多的机械设计用资料,对你进行机械设计或者学习,有非常大的帮助,省去了你查找资料的时间。本资源对机械设计的资料进行了分类,极大地方便了你下载需要参考的资料,同时也会对你学习机械专业知识,有一个整体性的了解,可以帮助你应该加强哪部分内容的学习! 供在校大学生或机械类工程技术人员使用。 一、手册类 机械设计课程设计手册(第三版) 机械设计手册(第五版)第1卷 机械设计手册(第五版)第2卷 机械设计手册(第五版)第3卷 机械设计手册(第五版)第4卷 机械设计手册(第五版)第5卷 机械设计手册.(新版).第1卷 机械设计手册.(新版).第2卷 机械设计手册.(新版).第3卷 机械设计手册.(新版).第4卷 机械设计手册.(新版).第5卷 机械设计手册.(新版).第6卷 [精密加工技术实用手册].精密加工技术实用手册 包装机械选用手册上-印刷实务 包装机械选用手册下-印刷实务 机电一体化专业必备知识与技能手册 机械工程师手册.第二版 机械加工工艺师手册 机械设计、制造常用数据及标准规范实用手册 机械制图手册(清晰版) 机械制造工艺设计简明手册 联轴器、离合器与制动器设计选用手册 实用机床设计手册 运输机械设计选用手册.上册 运输机械设计选用手册.下册 中国机械设计大典数据库 最新金属材料牌号、性能、用途及中外牌号对照速用速查实用手册 最新实用五金手册(修订本) 最新轴承手册 二、机构类 高等机构设计 机构参考手册 机构创新设计方法学 机构设计丛书.凸轮机构设计 机构设计实用构思图册-verygood

2017年数据结构期末考试题及答案A

2017年数据结构期末考试题及答案 一、选择题(共计50分,每题2分,共25题) 1 ?在数据结构中,从逻辑上可以把数据结构分为 C 。 A. 动态结构和静态结构B?紧凑结构和非紧凑结构 C.线性结构和非线性结构 D .内部结构和外部结构 2?数据结构在计算机内存中的表示是指 A ° A. 数据的存储结构 B.数据结构 C.数据的逻辑结构 D .数据元 素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A. 逻辑B?存储 C.逻辑和存储 D.物理 4 .在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C ° A.数据的处理方法B?数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 5. 在决定选取何种存储结构时,一般不考虑 A ° A.各结点的值如何B?结点个数的多少 C?对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 6. 以下说法正确的是D ° A. 数据项是数据的基本单位 B. 数据元素是数据的最小单位 C. 数据结构是带结构的数据项的集合 D. —些表面上很不相同的数据可以有相同的逻辑结构 7. 在以下的叙述中,正确的是B ° A. 线性表的顺序存储结构优于链表存储结构 B. 二维数组是其数据元素为线性表的线性表 C?栈的操作方式是先进先出 D.队列的操作方式是先进后出

8. 通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 A. 数据元素具有同一特点 B. 不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C. 每个数据元素都一样 D. 数据元素所包含的数据项的个数要相等 9 ?链表不具备的特点是 A 。 A.可随机访问任一结点 B.插入删除不需要移动元素 C?不必事先估计存储空间 D.所需空间与其长度成正比 10. 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一 个结点,则采用 D 存储方式最节省运算时间。 A.单链表B ?给出表头指针的单循环链表 C.双链表D ?带头结点 的双循环链表 11. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。 A.单链表B .静态链表 C.线性链表 D .顺序存储结构 12 .非空的循环单链表head的尾结点(由p所指向)满足C 。 A. p—>next 一NULL B. p — NULL C. p—>next == head D. p = = head 13 .在循环双链表的p所指的结点之前插入s所指结点的操作是 D 。 A .p—> prior-> prior=s B .p—> prior-> n ext=s C.s —> prior—> n ext = s D.s —> prior—> prior = s 14 .栈和队列的共同点是C 。 A.都是先进后出 B .都是先进先出 C.只允许在端点处插入和删除元素 D .没有共同点

数据结构说明书

目录 引言....................................................... 错误!未定义书签。 一、设计要求............................................... 错误!未定义书签。 二、算法原理及思想 (1) 1、遍历概念 (1) 2、遍历方案 (2) 2.1 遍历方案 (2) 2.2三种遍历的命名 (2) 3、二叉树的链式存储结构 (2) 3.1、结点的结构 (2) 3.2、结点的类型说明 (3) 3.3、二叉链表 (3) 4、二叉树的非递归遍历(用栈实现) (4) 4.1先序非递归算法 (4) 4.2中序非递归算法 (5) 4.3后序非递归算法 (6) 三、遍历过程 (6) 四、程序测试 (8) 五、实验总结 (8) 六、参考文献 (9) 附录:源代码 (10)

数据结构课程设计 1 选题背景 《数据结构》在计算机科学中是一门综合性的专业基础课.数据结构的研究不仅涉及到计算机的硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题.在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方面.因此,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程.在计算机科学中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础。 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。满二叉树,完全二叉树,排序二叉树。 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。此程序主要实现二叉树的遍历并且是基于栈的非递归遍历方法。 2 方案论证 2.1遍历概念

数据结构期末考试题及答案

数据结构期末考试题及答案 、选择题 1.在数据结构中, 从逻辑上能够把数据结构分为 A. 动态结构和静态结构 B .紧凑结构和非紧凑结构 C.线性结构和非线性结构 D .内部结构和外部结构 2. 数据结构在计算机内存中的表示是指 A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系 3. 在数据结构中, 与所使用的计算机无关的是数据的 结构。 A.逻辑 B.存储 C.逻辑和存储 D.物理 4. 在存储数据时, 一般不但要存储各数据元素的值, 而且还 要存储C A. 数据的处理方法 B. 数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 5.在决定选取何种存储结构时般不考虑A 。 A. 各结点的值如何 B. 结点个数的多少 C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 A. 数据项是数据的基本单位

B. 数据元素是数据的最小单位 C. 数据结构是带结构的数据项的集合 D. —些表面上很不相同的数据能够有相同的逻辑结构7.算法分析的目的是C , 算法分析的两个主要方面是A 。 (1) A.找出数据结构的合理性 和输出的关系 C. 分析算法的效率以求改进 档性 ( 2) A .空间复杂度和时间复杂度 C. 可读性和文档性 性 8. 下面程序段的时间复杂度是 s = 0; for( I = 0; i v n; i + + ) for( j = 0; j v n; j ++ ) s +二B[i][j]; sum = s ; 9. 下面程序段的时间复杂度是 for( i = 0; i v n; i + + ) for( j = 0; j v m; j ++ ) B .研究算法中的输入 C .分析算法的易读性和文 B .正确性和简明性D .数据复杂性和程序复杂 O( n2) 。 O( n*m) 。

数据结构课程设计说明书

车厢调度问题 摘要:实现栈的基本操作,即实现类型。程序对栈的任何存取,即更改,读取和状态判别等操作,必须借助于基本操作。在操作过程中的任何状态下都有两种可能的操作:“入”“出”。每个状态下处理问题的方法都是相同的,具有递归特性。关键字:栈递归打印 0.引言 《数据结构》是计算机科学与技术、软件工程及相关学科的专业基础课,也是软件设计的技术基础。《数据结构》课程的教学要求之一是训练学生进行复杂的程序设计的技能和培养良好程序设计的风格,其重要程度决不亚于理论知识的传授,因此课程设计环节是一个至关重要的环节,是训练学生从事工程科技的基本能力,是培养创新意识和创新能力的极为重要的环节。基本要求如下: (1) 熟练掌握基本的数据结构; (2) 熟练掌握各种算法; (3) 运用高级语言编写质量高、风格好的应用程序。 1.需求分析 (1)这个实验要求我用栈实现车厢调度. (2)车厢的个数是由用户输入的. (3)程序会自动给车厢进行从1到 n的编号. (4)用户输入车厢个数后,程序打印出所有可能的车厢出站顺序. 2.数据结构设计 在这个程序中存储结构是栈,对于栈的声明和定义如下: typedef struct SqStack { int *top; /*栈顶指针*/ int *base;/*在栈构造之前和销毁之后.base的值为NULL*/ int stacksize; /*当前分配的存储空间*/ }SqStack; /*顺序栈的结构体声明和定义*/

3.算法设计 3.1 对算法的简单描述 这个实验中, 要求用到栈. 实现栈的基本操作,即实现类型。程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作。在操作过程中的任何状态下都有两种可能的操作:“入”“出”。每个状态下处理问题的方法都是相同的,具有递归特性。栈实现是方便的 无论如何调度,我们的操作都是入栈和出栈,设定入栈为1,出栈为-1,对n列车厢有2n次这样的操作,例如n=4,则有操作1111-1-1-1-1、1-11-11-11-1等.所以还要构造一个操作命令队列trainlist[]。 在算法中还要用到递归算法,其本质为: 一个数的进栈以后有两种处理方式:要么立刻出栈,或者下一个数的进栈。 一个数的出栈以后也有两种处理方式:要么继续出栈(栈不为空),或者下一个数的入栈。 3.2栈的基本操作 3.2.1构造一个栈 void InitStack2(SqStack *S,int base_size) { S->base=(int *)malloc(base_size * sizeof(int)); if(!S->base) { puts("ERROR!"); return ; } S->top=S->base; S->stacksize=base_size; }/*构造一个空栈*/ 3.2.2 插入新的栈顶元素

结构设计常用数据

结构设计常用数据

————————————————————————————————作者:————————————————————————————————日期: ?

混凝土结构设计规范 表3.4.3受弯构件的挠度限值 构件类型挠度限值 吊车梁手动吊车l0/500电动吊车l0/600 屋盖、楼盖及楼梯构件 当l0<7m时 l0/200(l0/2 50) 当7m≤l0≤9 m时 l0/250(l0/ 300) 当l0>9m时 l0/300(l0/4 00) 表3.3.5 结构构件的裂缝控制等级及最大裂缝宽度的限值(mm) 环境类别钢筋混凝土结构 预应力混凝土结 构 裂缝控 制等级 w lim 裂缝控 制等级 w lim 一 三级0.30 (0.4 0) 三级 0.20 二a 0.200.10 二b 二级——三a、三一级——

b 表3.3.2混凝土结构的环境类别环境类 别 条件 一室内干燥环境; 无侵蚀性静水浸没环境 二a 室内潮湿环境; 非严寒和非寒冷地区的露天环境; 非严寒和非寒冷地区与无侵蚀性的水或土壤直接接触的环境; 严寒和寒冷地区的冰冻线以下与无侵蚀性的水或土壤直接接触的环境 二b 干湿交替环境; 水位频繁变动环境; 严寒和寒冷地区的露天环境; 严寒和寒冷地区冰冻线以上与无侵蚀性的水或土壤直接接触的环境 三a 严寒和寒冷地区冬季水位变动区环境; 受除冰盐影响环境; 海风环境 三b 盐渍土环境;

受除冰盐作用环境; 海岸环境 四 海水环境 五 受人为或自然的侵蚀性物质影响的环境 表3.5.3 结构混凝土材料的耐久性基本要求 环境等级 最大水胶比 最低强度等级 最大氯离子含量(%) 最大碱含量(k g/m 3) 一 0.60 C 20 0.30 不限制 环境等级 最大水胶比 最低强度等级 最大氯离子含量(%) 最大碱含量(kg/m 3) 二a 0.55 C25 0.20 3.0 二b 0.50(0.55) C30(C 25) 0.15 三a 0.45(0.5 0) C35(C30) 0.15 三b 0.40 C 40 0.10 表8.1.1 钢筋混凝土结构伸缩缝最大间距(m) 结构类型 室内或土 露天

数据结构(c语言版)期末考试复习试题

《数据结构与算法》(c语言版)期末考复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位

B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

数据结构程序设计说明文档

数据结构课题报告说明书

数据结构课题报告 指导教师:喝安全 组长:肖清泉 组员:朱智红、苏彦洲 班级:计算机科学与技术(正大) 专业:计算机科学与技术(帅范) 时间:2015-01-20 ——2015-03-01 课程设计题目:图书管理系统 、八 前 图书馆管理系统或许众所周知,任何一个学校,有关单位似乎都需要这个类似的系统以此管理图书与读者借阅情况。借此,我们合作也做出一个系统,尽管可能有些逊色,但感觉还是可以本系统总结了前人牛人的经验,剔除了其中的不足创造了自己独有的特色。传承了牛人的优点,经过我们仔细的观摩,思考后创造此系统。“书上得来终觉浅,要知此事需躬行。”是呀!在没亲身动手去编写程序时,我总觉得我会了。书本上的我都懂了。可我真的懂

了吗?答案是否定的。在编写过程中,会出现很多的问题,而这些问题你是在书本上是接触不到的。只有发现问题,解决问题,你才会有提高。在过去人们对信息管理的主要方式是基于文本、表格等纸质的手工处理之上的,而用手工进行图书借阅管理存在多种弊端,其中包括图书过于繁多,包含很多的信息数据的管理对于图书借阅情况如:借阅天数、超过限定借阅时间等等的统计和核实,往往采用对借阅卡的人工查询进行,对借阅天数等用人工计算、手抄进行。信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说缺乏系统、规范的管理手段人们操控起来是很困难的;因此,使用电子化的管理手段将是大势所趋,建立一个图书管理系统也是图书管理部门提高工作效益的有效手段。系统能够合理高效地利用图书资源,使得图书借阅更加的科学合理。 第一章需求分析与目的概述 --------- 04 1.1 需求分析概述---------------- 一04 1.2 系统功冃匕分析------------- 一04 第二章系统设计---------- ---04 3.1 系统功能模块设计------------ ——04 3.1.1 信息录入--------------- 05 3.1.2 学生菜单-------------- 05 3.1.3 老师菜单-------------- 06 3.1.4 图书管理员菜单------------- 07

数据结构期末考试试题A卷(完成,不知对不对)

第 1 页,共 11 页 任课教师签名: 命题教师签名: 系主任签名: 主管院长签名: 湛江师范学院2007年-2008学年度第1学期 期末考试试题A 卷 (考试时间:120分钟) 考试科目: 数据结构 请将所有答案填写在答题卡上,交卷时请将所有试卷上交 一、单选题(每小题2分,共40分) 1.下列算法的时间复杂度是( B )。 for ( i=0; inext==L C L->next==p D p->next==NULL 4.4个元素进S 栈的顺序是A 、B 、C 、D ,进行两次Pop(S,x)操作后, 栈顶元素的值是( B )。 A A B B C C D D 5.经过下列栈的运算后GetTop(S)的值是( A )。 InitStack(s); Push(s,a); Push(s,b); Pop(s); A a B b C 1 D 2

6.栈的特点是(B )。 A 先进先出 B 后进先出 C 后进 后出 D 不进不出 7.经过下列运算后GetHead(Q)的值是( A ) InitQueue(Q); EnQueue(Q,a); EnQueue(Q,b); A a B b C 1 D 2 8.一维数组的元素起始地址loc[0]=1000,元素长度为4,则loc[2]为( C )。 A 1000 B 1010 C 1008 D 1020 9.二叉树第i层上最多有( C )个结点。 A 2i B 2i-1 C 2i-1 D i2 10.满二叉树( A )二叉树。 A 一定是完全 B 不一定是完全 C 不是 D 不是完全 11.二叉树按二叉链表存储,每个结点包含三个域(lchild、data、rchild),若p指针指向二叉树的根结点,经过运算while ( p->rchild!=null ) p=p->rchild,则( A )。 A p指向二叉树的最右下方的结点 B p指向二叉树的 最左下方的结点 C p仍指向根结点 D p为null 12.在具有n个结点的完全二叉树中,结点i(2i

《数据结构》期末考试题及答案

2011-2012学年第一学期期末考查 《数据结构》试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一、选择(每题1分,共10分) 1.长度为n的线性表采用顺序存储结构,一个在其第i个位置插入新元素的算法时间复杂度为(D) A.O(0) B.O(1) C.O(n) D.O(n2) 2.六个元素按照6,5,4,3,2,1的顺序入栈,下列哪一个是合法的出栈序列?(D) A.543612 B.453126 C.346512 D.234156 3.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为(B ) A.8 B.9 C.10 D.11 4.设森林F对应的二叉树B有m个结点,B的右子树结点个数为n,森林F中第一棵树的结点个数是( B ) A. m-n B.m-n-1 C.n+1 D.m+n 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B) A.9 B.11 C.15 D.不确定 6.下列哪一个方法可以判断出一个有向图是否有环。(A) A.深度优先遍历 B.拓扑排序 C.求最短路径 D.求关键路径 7.第7层有10个叶子结点的完全二叉树不可能有(B )个结点。 A.73 B.234 C.235 D.236 8.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是(B) A.(100,80,90,60,120,110,130) B.(100, 120, 110,130,80, 60,90) C.(100,60,80,90,120,110,130) D.(100,80, 60,90, 120, 130,110) 9.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序过程中变化如下:(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47(4)15 21 25 47 84则采用的排序方法是(B ) A.选择排序 B.起泡排序 C.快速排序 D.插入排序 10.对线性表进行折半查找时,要求线性表必须(D) A.以顺序方式存储 B.以顺序方式存储,且数据元素有序

数据结构-图书管理系统

课程设计说明书 课程名称: 数据结构课程设计班级: 11--电科1班 姓名: 张海琴学号: 1111121132 设计题目: 图书管理系统 一、设计题目与要求 【问题描述】 设计一个计算机管理系统完成图书管理基本业务。 【基本要求】 1)每种书的登记内容包括书号、书名、著作者、现存量和库存量; 2)对书号建立索引表(线性表)以提高查找效率; 3)系统主要功能如下: *采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; *借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; *归还:注销对借阅者的登记,改变该书的现存量。 【进一步完成内容】 1)系统功能的进一步完善; 2)索引表采用树表。

3)设计内容 4)程序流程图 5)源程序 6)软件测试报告(包括所用到的数据及结果) 二、概要设计 有八个模块 1)图书初始化 输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。 2)新书入库 新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。 3)添加读者信息 读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4)借书模块 读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。 5)还书模块 归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功。 6)查询图书信息 7)查询读者信息 可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。 8)退出 退出读书管理系统并保存读者和图书信息。

结构设计新手的七种学习方法(免费分享)

结构设计新手的七种学习方法 第一种武器:熟悉结构设计的任务和内容 如果你的职业规划是结构设计,了解民用建筑结构设计的深度很重要,起码要知道结构设计不同阶段的不同设计内容,这样可以做到有的放矢,心中有数。如果连起码的设计内容都不是这里缺一点就是那里漏一点,想不被审图办打回来都难! 结构新手必看--民用建筑结构设计深度及图样 https://www.doczj.com/doc/4f3097875.html,/forum.php?mod=viewthread&tid=35189&fromuid=991887 05G104民用建筑结构初步设计深度及图样 04G103民用建筑结构施工图设计深度及图样 第二种武器:扎实的结构理论基础知识要用结构理论武装自己的头脑,切忌盲目上阵: 大学本科的材料力学、结构力学、混凝土设计原理、工程结构抗震设计、土力学与地基基础等等这些和结构设计紧密相关的主干课程务必要重视。真正的高手一定是具备理论和实践相结合的素质,但如果这些理论不过关的话何谈理论与实践相结合呢?很多学生在学校的时候总是觉得学校的课程枯燥无味,不知道学这些知识和实际的设计有什么样的联系。其实当你真正地涉足设计的时候却往往发现:原来我们90%的设计总是可以从我们的大学课程中找到它的原型。我们很多学员都是在开始设计的过程中发现自己大学的主干课程学得不扎实然后恶补,与其亡羊补牢,不如未雨绸缪。如果你的职业规划是结构设计,这些和结构设计紧密相关的主干课程务是一个必须跨过去的坎,任何抱着侥幸心理而又想做好结构设计的思想都是不切实际的,在这个原则问题上是无法妥协也是没有捷径而言的。比如结构新人在画楼梯大样配筋时经常容易犯图一的错误,之所以犯这样的错误就是因为对钢筋和混凝土的材料特性不了解。

2015年数据结构期末考试题及答案

2012年数据结构期末考试题及答案 一、选择题 1.在数据结构中,从逻辑上可以把数据结构分为C。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指A。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的A结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储C。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑A。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是D。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是C,算法分析的两个主要方面是A。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2)。

s =0; for(I =0;i<n;i++) for(j=0;j<n;j++) s +=B[i][j]; sum =s ; 9.下面程序段的时间复杂度是O(n*m)。 for(i =0;i<n;i++) for(j=0;j<m;j++) A[i][j] =0; 10.下面程序段的时间复杂度是O(log3n)。 i =0; while(i<=n) i =i * 3; 11.在以下的叙述中,正确的是B。 A.线性表的顺序存储结构优于链表存储结构 B.二维数组是其数据元素为线性表的线性表 C.栈的操作方式是先进先出 D.队列的操作方式是先进后出 12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着B 。 A.数据元素具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 13.链表不具备的特点是A。 A.可随机访问任一结点B.插入删除不需要移动元素 C.不必事先估计存储空间D.所需空间与其长度成正比 14.不带头结点的单链表head为空的判定条件是A。

结构设计中常见问题及解决办法之一结构设计总则

结构设计中常见问题及解决办法之一结构设计总则结构设计中常见问题及解决办法之一 结构设计总则 目录、编制说明 一、结构设计总则 1.1总说明及图纸设计文件 1.2计算书完整性问题 1.3计算参数及荷载取值 二、地基处理及基础设计 三、钢结构 四、钢筋混凝土结构 五、结构加固 编制说明 1、根据现行国家有关规范、规程,对工程设计中由于设计人员的考虑不周和对规范、规程的理解不够全面,造成的一些不当做法和错误,以及在施工图设计文件审查中常出现的问题,进行汇总、整理、分析,并提出改进措施及依据,从而加强设计人员对规范及规程全面、准确的理解,避免类似错误的发生,合理和优化设计,提高设计质量。 2、主要编制依据 《建筑结构可靠度设计统一标准》GB50068-2001 《建筑工程抗震设防分类标准》GB50223-2008 《岩土工程勘察规范》GB50021-2001(2009年修订)

《人民防空地下室设计规范》GB50038-2005 《地下工程防水技术规范》GB50108-2008 《建筑结构荷载规范》GB50009-2012 《建筑地基基础设计规范》GB50007-2011 《建筑地基处理技术规范》JGJ79-2012J220-2012 《建筑桩基技术规范》JGJ94-2008 《建筑抗震设计规范》GB50011-2010 《混凝土结构设计规范》GB50010-2010 《钢结构设计规范》GB50017-2003 《门式刚架轻型房屋钢结构技术规范》GB51022-2015 《高层建筑混凝土结构技术规程》JGJ3-2010J186-2010 《建筑工程设计文件编制深度规定》建质函[2016]247号 《施工图设计文件审查要点》建质[2013]87号 《民用建筑工程设计常见问题分析及图示》图集 《建筑结构设计问答及分析》 《高层建筑混凝土结构技术规程应用及分析》 《建筑抗震设计规范应用与分析》 《建筑地基基础设计方法及实例分析》 《PKPM产品使用手册及技术条件》 《盈建科产品使用手册及技术条件》 一、结构设计总则 1.1总说明及图纸设计文件 (1)设计依据和质量验收应遵循的工程建设标准的名称、编号与版本号正确性。

《数据结构》期末考试试卷

广东创新科技职业学院期末考试试题(标明A 卷、B 或C 卷) 2018 —2019 学年第二学期考试科目:《数据结构》 (闭(开)卷 90分钟) 院系____________ 班级____________ 学号___________ 姓名 __________ 一、选择题(每小题 2 分,共 40 分) 1.计算机识别、存储和加工处理的对象被统称为()。 A .数据 B .数据元素 C .数据结构 D .数据类型 2.数据结构指的是数据之间的相互关系,即数据的组织形式。数据结构一般包括()三方面内容。 A .数据的逻辑结构、数据的存储结构、数据的描述 B .数据的逻辑结构、数据的存储结构、数据的运算 C .数据的存储结构、数据的运算、数据的描述 D .数据的逻辑结构、数据的运算、数据的描述3.数据的逻辑结构包括()。 A .线性结构和非线性结构 B .线性结构和树型结构 C .非线性结构和集合结构

D .线性结构和图状结构 4.()的特征是:有且仅有一个开始结点和一个终端结点,且所有结点都最多只有一个直接前驱和一个直接后继。 A .线性结构 B .非线性结构 C .树型结构 D .图状结构 5. 评价一个算法时间性能的主要标准是()。 A .算法易于调试 B .算法易于理解 C .算法的稳定性和正确性 D .算法的时间复杂度 6. 下述程序段①中各语句执行频度的和是()。 s=0; ① for(i=1;i<=i;j++) s+=j; A .n-1 B .n C .2n-1 D .2n 7. 下面程序段的时间复杂度为()。 for(i=0;i

2017数据结构期末考试试题及答案

2017《数据结构》期末考试试题及答案 《数据结构》期末考试试题及答案 1 ................................................................. 2..试题 1 答案............................................................ 7..《数据结构》期末考试试题及答案 2 ................................................................. 9..试题 2 答案........................................................................ 1.. 4. 《数据结构》期末考试试题及答案 3 ............................................................... 1..6试题 3 答案........................................................................ 2.. 1.

数据结构》期末考试试题及答案 1 单选题(每题 2 分,共 20 分) 1. 栈和队列的共同特点是 ( )。 A. 只允许在端点处插入和删除元素 B. 都是先进后出 C. 都是先进先出 D. 没有共同点 2. 用链接方式存储的队列,在进行插入运算时 ( ). A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D .头、尾指针可能都要修改 3. 以下数据结构中哪一个是非线性结构? ( ) A. 队列 B. 栈 C. 线性表 D. 二叉树 4. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(io ), A[2][2]存放 若有18个元素的有序表存放在一维数组 A[19]中,第一个元素放A[1]中, 现进行二分查找,则查找 A [3]的比较序列的下标依次为( A. 1 , 2, 3 B. 9, 5, 2, 3 C. 9, 5, 3 D. 9, 4, 2, 3 8. 对n 个记录的文件进行快速排序,所需要的辅助存储空间大致为 A. O (1) B. O (n ) C. O ( 1 og 2n ) D. O (n2) 9. 对于线性表( 7, 34, 55, 25, 64, 46, 20, 10)进行散列存储时,若选 用 H (K )=K %9 作为散列函数,则散列地址为 1 的元素有( )个, 位置在 676(10),每个元素占一个空间, 表示用 10 进制表示。 问 A[3][3] (10)存放在什么位置?脚注 (10) 5. A .688 B .678 C . 692 D . 696 树最适合用来表示 ( )。 A.有序数据元素 B.无序数据元素 6. C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据 二叉树的第 k 层的结点数最多为 ( ). A .2-1 B.2K+1 C.2K-1 D. 2k-1 7.

数据结构图书管理系统

数据结构 课程设计说明书 年月日1设计目的(小标题黑体五号字)

设计一个计算机管理系统完成图书管理基本业务(数据可以存储在一个数据文件中,数据结构、具体数据自定)。 2.设计内容和要求 具体功能有:1)每种书的登记内容包括书号、书名、著作者、出版单位、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;4)借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;5)归还:注销对借阅者的登记,改变该书的现存量。 3.本设计所采用的数据结构 所用数据结构:线性表、查找、排序 链表:用一组地址任意的存储单元存放线性表中的数据元素。 以元素(数据元素的映象) + 指针(指示后继元素存储位置) = 结点(表示数据元素或数据元素的映象) 以“结点的序列”表示线性表称作线性链表(单链表) 单链表是一种链式存取的结构,为找第 i 个数据元素必须先找到第 i-1 个数据元素。 因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和i。

(1)malloc(size) 在内存的动态存储区申请一个长度为size字节的连续空间。 (2)calloc(n,size) 在内存的动态存储区申请n个长度为size字节的连续空间,函数返回值为分配空间的首地址。若此函数未被成功执行,函数返回值为0。 (3)free(p) 释放由指针p所指向的存储单元,而存储单元的大小是最近一次调用malloc()或calloc()函数时所申请的存储空间。 运用了单链表的插入、删除、排序、修改等一些操作! 4.功能模块详细设计 4.1 详细设计思想 (一)基本思想: (二)图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。 (三)程序中的主要函数有: void main() //主函数 int CreateListR(LinkList *L) //尾插法建表 void LocateElem(LinkList *L) //查询

结构设计常用数据表格

建筑结构安全等级 2 纵向受力钢筋混凝土保护层最小厚度(mm) 不同根数钢筋计算截面面积(mm2)

板宽1000mm内各种钢筋间距时钢筋截面面积表(mm2) 每米箍筋实配面积 钢筋混凝土结构构件中纵向受力钢筋的最小配筋百分率(%) 框架柱全部纵向受力钢筋最小配筋百分率(%)

框架梁纵向受拉钢筋的最小配筋白分率(%) 柱箍筋加密区的箍筋最小配箍特征值λν(ρν=λνf/f)

受弯构件挠度限值 注:1 表中lo为构件的计算跨度; 2 表中括号内的数值适用于使用上对挠度有较高要求的构件; 3 如果构件制作时预先起拱,且使用上也允许,则在验算挠度时,可将计算所得的挠度值减去起拱值;对预应力混凝土构件,尚可减去预加力所产生的反拱值; 4 计算悬臂构件的挠度限值时,其计算跨度lo按实际悬臂长度的2倍取用。

注: 1 表中的规定适用于采用热轧钢筋的钢筋混凝土构件和采用预应力钢丝、钢绞线及热处理钢筋的预应力混凝土构件;当采用其他类别的钢丝或钢筋时,其裂缝控制要求可按专门标准确定; 2 对处于年平均相对湿度小于60%地区一类环境下的受弯构件,其最大裂缝宽度限值可采用括号内的数值; 3 在一类环境下,对钢筋混凝土屋架、托架及需作疲劳验算的吊车梁,其最大裂缝宽度限值应取为0.2mm;对钢筋混凝土屋面梁和托梁,其最大裂缝宽度限值应取为0.3mm; 4 在一类环境下,对预应力混凝土屋面梁、托梁、屋架、托架、屋面板和楼板,应按二级裂缝控制等级进行验算;在一类和二类环境下,对需作疲劳验算的须应力混凝土吊车梁,应按一级裂缝控制等级进行验算; 5 表中规定的预应力混凝土构件的裂缝控制等级和最大裂缝宽度限值仅适用于正截面的验算;预应力混凝土构件的斜截面裂缝控制验算应符合本规范第8章的要求; 6 对于烟囱、筒仓和处于液体压力下的结构构件,其裂缝控制要求应符合专门标准的有关规定; 7 对于处于四、五类环境下的结构构件,其裂缝控制要求应符合专门标准的有关规定; 8 表中的最大裂缝宽度限值用于验算荷载作用引起的最大裂缝宽度。 梁内钢筋排成一排时的钢筋最多根数

相关主题
文本预览
相关文档 最新文档