当前位置:文档之家› 数据结构复习

数据结构复习

数据结构复习
数据结构复习

2011-2012学年第一学期期末考查《数据结构》试卷

一、选择(每题1分,共10分)

1.长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法时间复杂度为()

A.O(0)

B.O(1)

C.O(n)

D.O(n2)

2.六个元素按照6,5,4,3,2,1的顺序入栈,下列哪一个是合法的出栈序列?()

A.543612

B.453126

C.346512

D.234156

3.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为()

A.8

B.9

C.10

D.11

4.设森林F对应的二叉树B有m个结点,B的右子树结点个数为n,森林F中第一棵树的结点个数是()

A. m-n

B.m-n-1

C.n+1

D.m+n

5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()

A.9

B.11

C.15

D.不确定

6.下列哪一个方法可以判断出一个有向图是否有环。()

A.深度优先遍历

B.拓扑排序

C.求最短路径

D.求关键路径

7.第7层有10个叶子结点的完全二叉树不可能有()个结点。

A.73

B.234

C.235

D.236

8.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是()

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则采用的排序方法是()

A.选择排序

B.起泡排序

C.快速排序

D.插入排序

10.对线性表进行折半查找时,要求线性表必须()

A.以顺序方式存储

B.以顺序方式存储,且数据元素有序

C.以链接方式存储

D.以链接方式存储,且数据元素有序

二、填空(每空1分,共15分)

1.数据结构中评价算法的两个重要指标是、空间复杂度。

2.在单链表中,指针P所指结点有后继的条件是。(结点构成:data和next)

3.栈的特点是。

4.判断循环队列是否队满的条件表达式是。

5.完全二叉树中的结点个数为n,则编号最大的分支结点的编号为。

6.如果A有7个兄弟,而B是A的双亲,则B的度是。

7.如果二叉树中有20个叶子节点,30个度为1的结点,则该二叉树的总结点数为。 8.设二叉树中每个结点均用一个字母表示,若一个结点的左子树或者右子树为空,用.表示。现前序遍历二叉树的结点序列为ABD.G…CE.H..F..,则中序遍历二叉树的结点序列为。

9.若用n表示图中的顶点数目,则有条边的无向图被称为完全图。

10.如果具有n个顶点的图是一个环,则它有棵生成树。

11.克鲁斯卡尔算法的时间复杂度是,它适合求图的最小生成树。

12.顺序查找n个元素的线性表,若查找成功时的平均查找长度为。

13.高度为5的完全二叉树,其结点最少有个。

14.直接插入排序中使用的监视哨的作用是。

三、判断题(每题1分,共10分)

1.算法独立于具体的程序设计语言,与具体的计算机无关。()

2.线性表采用链式存储时,结点内部的存储空间可以是不连续的。()

3.栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。()

4.哈夫曼树的结点总个数一定是偶数。()

5.已知二叉树的先序遍历序列和中序遍历序列,可以画出这棵二叉树()。

6.有e条边的无向图,在其对应的邻接表中有e个结点。()

7.连通分量指的是无向图的极大连通子图。()

8.在哈希表的查找过程中的“比较”操作是无法避免的。()

9.完全二叉树肯定是平衡二叉树。()

10.堆排序是稳定的排序算法。()

四、简答题(共30分)

1.线性结构的特点是?(4分)

2.已知图的邻接矩阵存储如下所示,请根据该邻接矩阵画出对应的图,并给出从A出发的广度优先搜索序列,以及相应的广度优先生成树。(6分)

3.已知一棵二叉树的后序遍历序列为EICBGAHDF,中序遍历序列为CEIFGBADH,请画出这棵二叉树,并把这棵二叉树转换成相应的树(或森林)。(6分)

4.已知电文内容为:ACACBACDAACDBAACADAA,字符集为A,B,C,D,设计一套二进制编码,使得上述电文的编码最短。(6分)

5.已知有序序列{3,7,11,20,45,77,90},请分别写出折半查找10和查找99的过程,并求出ASL(4分)

6.已知序列{34,17,6,29,33,11,80,37}请用快速排序的方法进行排序,并给出详细

过程。(4分)

五、算法填空(每空5分,共20分)

(1)按先序次序输入二叉树中的结点值(字符)构造二叉树Status CreateBiTree(BiTree&T)

{

charch;

read(ch);

if(ch==' ' )

T = NULL;

else

{

T = (BiTree)malloc(sizeof(BiTNode));

(1) ;

CreateBiTree(T->lchild);

(2) ;

}

return OK;

}

(2)在顺序表L的第 i个元素之前插入新的元素

e Status ListInsert(SqList&L, inti, ElemType e) {

if (i< 1 || i> L.length+1)

return ERROR; // 插入位置不合法

for ( j= L.length j>i j - - )

(3) ;

L.elem[i-1] = e // 插入e

(4) ;

return OK;

} // ListInsert_Sq

六、写算法(共15分)

1.请写出链式存储的线性表中,删除第i个位置数据元素的实现算法。(给出相应的结构体定义,关键部分给出注释。)

2011-2012学年第一学期期末考查《数据结构》标准答案一、选择(每题1分,共10分)

1-5 DBBBB 6-10 ACCDB

二、填空(每空1分,共15分)

1.时间复杂度,空间复杂度

2.FIFO,LIFO

3.Q.rear==Q.front

4.7

5.8

6.O(n2) ,稠密图

7.极大连通子图

8.n(n-1)

9.n-1

10.集合结构,树形结构,图状结构

三、判断题(每题1分,共10分)

1. ×

2. √

3. √

4. ×

5. √

6. ×

7. ×

8. ×

9. × 10. ×

四、简答题(共30分)

1. (1)在二叉树的第 i 层上至多有2i-1 个结点; (i≥1)

(2)深度为 k 的二叉树上至多含 2k-1 个结点(k≥1);

(3)对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1;

(4)具有 n 个结点的完全二叉树的深度为【 log2n】 +1 。

(5)若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为i的结点:若i=1,则该结点是二叉树的根,无双亲,否则,编号为 i/2 的结点为其双亲结点;若 2i>n,则该结点无左孩子,否则,编号为 2i 的结点为其左孩子结点;若 2i+1>n,则该结点无右孩子结点,否则,编号为2i+1 的结点为其右孩子结点。

2. 深度优先遍历序列:abefdc

深度优先生成树:

3.(1)T->next->next=P->next;

(2)Q=T;

While(Q->!=P)

{Q=Q->next;}

Q->next=P->next;

free(P);

4:

5.{11,3,7,77,20,45,90}

查找过程:11,3,7,77或者90,45,20,77

6.{34,17,6,29,33,11,80,37}

d=5 11,17,6,29,33,34,80,37

d=3 11,17,6,29,33,34,80,37

d=1 6,11,17,29,33,34,37,80

五、算法填空(每空5分,共20分)

1. (1)visit(T->data); 或者printf(T->data);

(2)PreOrderTraverse(T->rchild);

2.(1)return mid; (2)high=mid-1;

六、写算法(共15分)

//删除表L中第i个元素,结果用e返回,操作成功返回OK,失败时返回ERROR

Status ListDelete(SqList&L, inti, ElemType&e) {

if(i<1||i>L.length)return ERROR;

e=L.elem[i-1];

for(int j=i+1;j<=L.length;j++) L.elem[j-2]=L.elem[j-1];

L.length--;

return OK;

}

硬盘数据组织结构

EBR,叫做扩展MBR(Extended MBR),位于硬盘的某柱面0磁道1扇区 1.簇(cluster) 是DOS给文件系统分配磁盘空间的最小单位。由若干连续的逻辑扇区组成,不同的盘,簇的大小不同,簇是从2开始编号,见表6-1。 逻辑扇区号=(簇号-2)×扇区数/簇+数据区首扇区号 2.BOOT记录: 第一部分:0~2字节为跳转指令,转向启动码区。 第二部分:3~10字节为厂商标识字段,如MSDOS5.0。 第三部分:11~61字节为磁盘参数表(51字节)。 第四部分:62~509字节为启动程序(438字节)。 最后:55,AA字节。 51字节BPB表(BIOS Parameter Block) OB-OC:每扇区字节数(512) OD:扇区数/簇 0E-0F:保留扇区(指Boot区) 10:FAT个数 11-12:根目录最大登记项数 13-14:本分区扇区总数(小于32M的分区,大于32MB时,为0) 15:介质描述符 16-17:每个FAT扇区数 18-19:每道扇区数 1A-1B:磁头数 1C-1F:本分区前的扇区数(隐含扇区,即从0(X)柱0头1扇到0(X)柱1头1扇之间的扇区,由于不能为DOS访问,故称为隐含扇区)。 20-23:大容量盘总扇区数。 24:BIOS设备号(hex:HD=8x) 25:未使用 26:扩展引导标记(29H) 27-2A:卷序列号(随机) 2B-35:卷标,分区标识,如:WIN98 36-3D:文件系统格式(FAT16) 3.FAT(文件配置表) FAT有两个,当第一个损坏时,为人工修复提供方便,DOS不会自动用第二个去修复第一个FAT,而DOS实际上没有用尽2个FAT占用的扇区,因为可作为他用。FAT登记盘上簇的使用情况,登记项有12位、16位和32位之分,下面以16位为例说明FAT的格式。 16位FAT格式: 簇号(表项) 0000H 0001H 0002H … NNNNH 类型保留簇使用簇 含义介质标志记录文件簇号链

全国自学考试数据结构导论试题及答案(4套)

全国2011年1月自学考试数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.在顺序表中查找第i个元素,时间效率最高的算法的时间复杂度为( ) A.O(1) B.O(n) C.O(log2n) D.O(n) 2.树形结构中,度为0的结点称为( ) A.树根 B.叶子 C.路径 D.二叉树 3.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={,,,},则图G的拓扑序列是 ( ) A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7 C.V1,V3,V4,V5,V2,V6,V7 D.V1,V2,V5,V3,V4,V6,V7 4.有关图中路径的定义,表述正确的是( ) A.路径是顶点和相邻顶点偶对构成的边所形成的序列 B.路径是不同顶点所形成的序列 C.路径是不同边所形成的序列 D.路径是不同顶点和不同边所形成的集合 5.串的长度是指( ) A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 6.组成数据的基本单位是( ) A.数据项 B.数据类型 C.数据元素 D.数据变量 7.程序段 i=n;x=0; do{x=x+5*i;i--;}while (i>0); 的时间复杂度为( ) A.O(1) B.O(n) C.O(n2) D.O(n3) 8.与串的逻辑结构不同的 ...数据结构是( ) A.线性表 B.栈 C.队列 D.树

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

自考数据结构导论复习资料

数据结构导论复习 第一章概论 1.数据:凡能被计算机存储、加工处理的对象。 2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理 3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。 4.逻辑结构需要注意的几点: ①逻辑结构与数据元素本身的内容无关 ②逻辑结构与数据元素相对位置无关 ③逻辑结构与所有结点的个数无关 5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。 6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点? 答:集合中任何两个结点之间都没有逻辑关系,组织形式松散; 线性结构中结点按逻辑关系依次排列形成一条“锁链”; 树形结构具有分支、层次特性,其形态有点像自然界中的树; 图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。 7.运算是在逻辑结构层次上对处理功能的抽象

8.基本运算的含义? 答:假如是S上的一些运算的集合,是的一个子集,使得中每一运算都可以“归约”为中的一个或多个运算,而中任一运算不可归约为别的运算,则称中运算为基本运算 9.数据结构是指由一个逻辑结构S和S上的一个基本运算集构成的整体(S ,)。 10.数据结构涉及数据表示和数据处理两个方面 11.存储结构的含义和四种基本存储方式的基本思想? 答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。 一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。 存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。 12.运算实现与运算的联系与区别? 答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。 13.算法的概念和分类? 答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被

数据结构实验十一:图实验

一,实验题目 实验十一:图实验 采用邻接表存储有向图,设计算法判断任意两个顶点间手否存在路径。 二,问题分析 本程序要求采用邻接表存储有向图,设计算法判断任意两个顶点间手否存在路径,完成这些操作需要解决的关键问题是:用邻接表的形式存储有向图并输出该邻接表。用一个函数实现判断任意两点间是否存在路径。 1,数据的输入形式和输入值的范围:输入的图的结点均为整型。 2,结果的输出形式:输出的是两结点间是否存在路径的情况。 3,测试数据:输入的图的结点个数为:4 输入的图的边得个数为:3 边的信息为:1 2,2 3,3 1 三,概要设计 (1)为了实现上述程序的功能,需要: A,用邻接表的方式构建图 B,深度优先遍历该图的结点 C,判断任意两结点间是否存在路径 (2)本程序包含6个函数: a,主函数main() b,用邻接表建立图函数create_adjlistgraph() c,深度优先搜索遍历函数dfs() d,初始化遍历数组并判断有无通路函数dfs_trave() e,输出邻接表函数print() f,释放邻接表结点空间函数freealgraph() 各函数间关系如右图所示: 四,详细设计 (1)邻接表中的结点类型定义:

typedef struct arcnode{ int adjvex; arcnode *nextarc; }arcnode; (2)邻接表中头结点的类型定义: typedef struct{ char vexdata; arcnode *firstarc; }adjlist; (3)邻接表类型定义: typedef struct{ adjlist vextices[max]; int vexnum,arcnum; }algraph; (4)深度优先搜索遍历函数伪代码: int dfs(algraph *alg,int i,int n){ arcnode *p; visited[i]=1; p=alg->vextices[i].firstarc; while(p!=NULL) { if(visited[p->adjvex]==0){ if(p->adjvex==n) {flag=1; } dfs(alg,p->adjvex,n); if(flag==1) return 1; } p=p->nextarc; } return 0; } (5)初始化遍历数组并判断有无通路函数伪代码: void dfs_trave(algraph *alg,int x,int y){ int i; for(i=0;i<=alg->vexnum;i++) visited[i]=0; dfs(alg,x,y); } 五,源代码 #include "stdio.h" #include "stdlib.h" #include "malloc.h" #define max 100 typedef struct arcnode{ //定义邻接表中的结点类型 int adjvex; //定点信息 arcnode *nextarc; //指向下一个结点的指针nextarc }arcnode; typedef struct{ //定义邻接表中头结点的类型 char vexdata; //头结点的序号 arcnode *firstarc; //定义一个arcnode型指针指向头结点所对应的下一个结点}adjlist; typedef struct{ //定义邻接表类型 adjlist vextices[max]; //定义表头结点数组

数据模型所描述的内容包括三个部分

数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。 1)数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。 2)数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式。 3)数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、他们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。 数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。 1、概念数据模型(Conceptual Data Model):简称概念模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统(Database Management System,简称DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。 概念数据模型是最终用户对数据存储的看法,反映了最终用户综合性的信息需求,它以数据类的方式描述企业级的数据需求,数据类代表了在业务环境中自然聚集成的几个主要类别数据。 概念数据模型的内容包括重要的实体及实体之间的关系。在概念数据模型中不包括实体的属性,也不用定义实体的主键。这是概念数据模型和逻辑数据模型的主要区别。 概念数据模型的目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系。 在有些数据模型的设计过程中,概念数据模型是和逻辑数据模型合在一起进行设计的。 2、逻辑数据模型(Logical Data Model):简称数据模型,这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(Network Data Model)、层次

数据结构实验---图的储存与遍历

数据结构实验---图的储存与遍历

学号: 姓名: 实验日期: 2016.1.7 实验名称: 图的存贮与遍历 一、实验目的 掌握图这种复杂的非线性结构的邻接矩阵和邻接表的存储表示,以及在此两种常用存储方式下深度优先遍历(DFS)和广度优先遍历(BFS)操作的实现。 二、实验内容与实验步骤 题目1:对以邻接矩阵为存储结构的图进行DFS 和BFS 遍历 问题描述:以邻接矩阵为图的存储结构,实现图的DFS 和BFS 遍历。 基本要求:建立一个图的邻接矩阵表示,输出顶点的一种DFS 和BFS 序列。 测试数据:如图所示 题目2:对以邻接表为存储结构的图进行DFS 和BFS 遍历 问题描述:以邻接表为图的存储结构,实现图的DFS 和BFS 遍历。 基本要求:建立一个图的邻接表存贮,输出顶点的一种DFS 和BFS 序列。 测试数据:如图所示 V0 V1 V2 V3 V4 三、附录: 在此贴上调试好的程序。 #include #include #include V0 V1 V4 V3 V2 ??? ? ??? ? ????????=010000000101010 1000100010A 1 0 1 0 3 3 4

#define M 100 typedef struct node { char vex[M][2]; int edge[M ][ M ]; int n,e; }Graph; int visited[M]; Graph *Create_Graph() { Graph *GA; int i,j,k,w; GA=(Graph*)malloc(sizeof(Graph)); printf ("请输入矩阵的顶点数和边数(用逗号隔开):\n"); scanf("%d,%d",&GA->n,&GA->e); printf ("请输入矩阵顶点信息:\n"); for(i = 0;in;i++) scanf("%s",&(GA->vex[i][0]),&(GA->vex[i][1])); for (i = 0;in;i++) for (j = 0;jn;j++) GA->edge[i][j] = 0; for (k = 0;ke;k++) { printf ("请输入第%d条边的顶点位置(i,j)和权值(用逗号隔开):",k+1); scanf ("%d,%d,%d",&i,&j,&w); GA->edge[i][j] = w; } return(GA); } void dfs(Graph *GA, int v) { int i; printf("%c%c\n",GA->vex[v][0],GA->vex[v][1]); visited[v]=1;

空间数据结构

空间数据结构 摘要:空间数据模型和空间数据结构是地理信息系统(GIS)课题的中心内容。本文对空间数据结构的定义、分类进行了一定的研究性的归纳与总结。 关键词:空间数据结构,矢量数据,栅格数据 引言 GIS中空间数据结构和空间数据模型是紧密相关的。数据模型的建立必须通过一定的数据结构,但两者之间也有非常大的区别。数据模型是一个总得概念,是人为概念化的真实,是对现实世界的提取,对现实世界的认识和选择。而数据结构指数据元素之间的相互关系,它是软件常规内涵,根据空间数据结构和数据模型的特点及其关系,可以建立空间数据库系统。 空间数据结构定义 空间数据结构是带有空间数据单元的集合。这些数据单元是数据的基本单 位,一个数据单元可以有几个数据项组成,数据单元之间存在某种联系叫做结构。 所以,研究空间数据结构,是指空间目标间的相互关系,包括几何和非几何的关 系,数据结构是数据模型的表述,数据结构往往通过一系列的图表和矩阵,以及 计算机码的数据记录来说明。 空间数据结构的分类 矢量数据结构 定义 矢量数据结构是基于矢量模型,利用欧几里得(EUCLID)几何学中的点、线、 面及其组合体来表示地理实体的空间分布,是通过记录坐标的方式,尽可能精确 地表示点线多边形等地理实体,自然地理实体的位置是用其在坐标参考系中的空 间位置来定义的,坐标空间设为连续,允许任意位置长度和面积的精确定义,其 特点是定位明显,属性隐含。 GIS采用的矢量数据结构模型,是将空间地质实体抽象成点、线、面三种几 何要素,矢量数据结构通过优化拓扑结构表达空间实体的相关关系,为空间数据 库建立基本框架。 矢量数据结构的特点 优点:数据按照点、线或多边形为单元进行组织,结构简单、直观、易实现 以实体为单位的运算和显示。 缺点:

自考数据结构导论

全国2014年4月高等教育自学考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。 1.下列几种算法时间复杂度中,最小的是( A ) A.O(log2n) B.O(n) C.O(n2) D.O(1) 2.数据的存储方式中除了顺序存储方式和链式存储方式之外,还有( D ) A.索引存储方式和树形存储方式 B.线性存储方式和散列存储方式 C.线性存储方式和索引存储方式 D.索引存储方式和散列存储方式 3.表长为n的顺序表中做删除运算的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 4.顺序表中定位算法(查找值为x的结点序号最小值)的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 5.元素的进栈次序为A,B,C,D,E,出栈的第一个元素为E,则第四个出栈的元素为( C ) A.D B.C C.B D.A 6.带头结点的链队列中,队列头和队列尾指针分别为front和rear,则判断队列空的条件为( A ) A.front==rear B.front!=NULL C.rear!==NULL D.front==NULL 7.深度为5的二叉树,结点个数最多为( A )

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

2010年1月自考数据结构导论真题

全国2010年1月自学考试数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下述文件中适合于磁带存储的是() A.顺序文件 B.索引文件 C.散列文件 D.多关键字文件 2.某二叉树的后根遍历序列为dabec,中根遍历序列为debac,则先根遍历序列为() A.acbed B.becab C.deabc D.cedba 3.含有n个结点的二叉树用二叉链表表示时,空指针域个数为( ) A.n-1 B.n C.n+1 D.n+2 4.在一个图中,所有顶点的度数之和与图的边数的比是( ) A.1∶2 B.1∶1 C.2∶1 D.4∶1 5.长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( ) A.O(1) B.O(1og2n) C.O(n) D.O(n2) 6.下述几种排序方法中,要求内存量最大的是( ) A.插入排序 B.快速排序 C.归并排序 D.选择排序 7.对n个不同值进行冒泡排序,在元素无序的情况下比较的次数为( ) A.n-1 B.n C.n+1 D.n(n-1)/2 8.对线性表进行二分查找时,要求线性表必须( ) A.以顺序方式存储 B.以链式方式存储 C.以顺序方式存储,且结点按关键字有序排列 D.以链接方式存储,且结点按关键字有序排列 9.在表长为n的顺序表上做删除运算,其平均时间复杂度为( ) A.O(1) B.O(n)

C.O(nlog2n) D.O(n2) 10.当利用大小为n的数组顺序存储一个队列时,该队列的最大容量为( ) A.n-2 B.n-1 C.n D.n+1 11.有关插入排序的叙述,错误的 ...是( ) A.插入排序在最坏情况下需要O(n2)时间 B.插入排序在最佳情况可在O(n)时间内完成 C.插入排序平均需要O(nlog2n)时间 D.插入排序的空间复杂度为O(1) 12.有关树的叙述正确的是( ) A.每一个内部结点至少有一个兄弟 B.每一个叶结点均有父结点 C.有的树没有子树 D.每个树至少有一个根结点与一个叶结点。 13.循环队列存储在数组元素A[0]至A[m]中,则入队时的操作为( ) A.rear=rear+1 B.rear=(rear+1)%(m-1) C.rear=(rear+1)%m D.rear=(rear+1)%(m+1) 14.关于串的的叙述,不正确 ...的是( ) A.串是字符的有限序列 B.空串是由空格构成的串 C.替换是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 15.对称矩阵A[N][N],A[1][1]为首元素,将下三角(包括对角线)元素以行优先顺序存储到一维数组元素T[1]至T[N(N+1)/2]中,则任一上三角元素A[i][j]存于T[k]中,下标k为( ) A.i(i-1)/2+j B.j(j-1)/2+i C.i(j-i)/2+1 D.j(i-1)/2+l 二、填空题(本大题共13小题,每小题2分,共26分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.下列程序段的时间复杂度为____________。 for(i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=1;k<=n;k++) s=i+j+k; 17.在数据结构中,各个结点按逻辑关系互相缠绕,任意两个结点可以邻接的结构称为____________。

数据结构实验

实验1 (C语言补充实验) 有顺序表A和B,其元素值均按从小到大的升序排列,要求将它们合并成一 个顺序表C,且C的元素也是从小到大的升序排列。 #include main() { intn,m,i=0,j=0,k=0,a[5],b[5],c[10];/* 必须设个m做为数组的输入的计数器,不能用i ,不然进行到while 时i 直接为5*/ for(m=0;m<=4;m++)scanf("%d",&a[m]);// 输入数组a for(m=0;m<=4;m++)scanf("%d",&b[m]);// 输入数组b while(i<5&&j<5) {if(a[i]b[j]){c[k]=b[j];k++;j++;} else{c[k]=a[i];k++;i++;j++;}// 使输入的两组数组中相同的数只输出一 个 } if(i<5) for(n=i;n<5;n++) {c[k]=a[n];k++;} elseif(j<5) for(n=j;n<5;n++) {c[k]=b[n];k++;} for(i=0;i

求A QB #include main() { inti,j,k=0,a[5],b[5],c[5];//A=a[5],B=b[5],A n B=c[5] for(i=0;i<5;i++)scanf("%d",&a[i]);// 输入a 数组 for(i=0;i<5;i++)scanf("%d",&b[i]);〃输入b 数组 for(i=0;i<5;i++) {for(j=0;j<5;j++) if(a[i]==b[j]){c[k]=a[i];k++;}// 当有元素重复时,只取一个放入 c 中} for(i=0;i #defineN4 main() { inti,j,m,k,a[N+1];//k 为最后输出数组的长度变量

自考02142《数据结构导论》串讲笔记

第一张概论 1.1 引言 两项基本任务:数据表示,数据处理 软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护 由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。 机外表示------逻辑结构------存储结构 处理要求-----基本运算和运算-------算法 1.2 数据,逻辑结构和运算 数据:凡是能够被计算机存储,加工的对象通称为数据 数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。又称元素,顶点,结点,记录。 数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当做一个整体对待。又称字段或域,是数据不可分割的最小标示单位。 1.2.2数据的逻辑结构 逻辑关系:是指数据元素之间的关联方式,又称“邻接关系” 逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。即数据的组织形式。 四种基本逻辑结构: 1 集合:任何两个结点间没有逻辑关系,组织形式松散 2 线性结构:结点按逻辑关系依次排列成一条“锁链” 3 树形结构:具有分支,层次特性,形态像自然界中的树 4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。 注意点: 1.逻辑结构与数据元素本身的形式,内容无关。 2.逻辑结构与数据元素的相对位置无关 3.逻辑结构与所含结点个数无关。 运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。 加工型运算:改变了原逻辑结构的“值”,如结点个数,结点内容等。 引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。 引用:查找,读取 加工:插入,删除,更新 同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。 假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。 将逻辑结构S和在S上的基本运算集X的整体(S,X)称为一个数据结构。数据结构包括逻辑结构和处理方式。

02142数据结构导论份真题及答案.doc

2012年10月高等教育自学考试全国统一命题考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的。错选、多选或未选均无分。 1.下面几种算法时间复杂度阶数中,值最大的是 A.O(nlog2n) B.O(n2) C.O(n) D.O(2n) 2.即使输入非法数据,算法也能适当地做出反应或进行处理,不会产生预料不到的运行结果,这种算法好坏的评价因素称为 A.正确性 B.易读性 C.健壮性 D.时空性 3.设顺序表的长度为100,则在第40个元素之后插入一个元素所需移动元素的个数为 A.40 B.60 C.61 D.100 4.设带头结点的单循环链表的头指针为head,则判断该链表是否为空的条件是 A. head->next==head B. head->next==NULL C. head!=NULL D. head==NULL 5.在链栈的运算中,不需要 ...判断栈是否为空的是 A.出栈 B.进栈 C.取栈顶元素 D.求链栈的元素个数 6.一个队列的输入序列是A,B,C,D,则该队列的输出序列是 A.A,B,C,D B.B,C,D,A C.D,C,B,A D.C,D,B,A 7.以行序为主序的二维数组a[3][5]中,第一个元素a[0][0]的存储地址是100,每个元素占2个存储单元,则a[1][2]的存储地址是 A.100 B.108 C.114 D.116 8.对任何一棵二叉树T,若叶结点数为5个,则度为2的结点个数为 A.4 B.5 C.6 D.无法确定 9.m个叶结点的哈夫曼树中,其结点总数为 A.m B.2m+1

数据结构实验报告图实验

图实验 一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif #include using namespace std; #include "" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0;

{组织设计}硬盘数据组织结构

(组织设计)硬盘数据组织 结构

EBR,叫做扩展MBR(ExtendedMBR),位于硬盘的某柱面0磁道1扇区 1.簇(cluster) 是DOS给文件系统分配磁盘空间的最小单位。由若干连续的逻辑扇区组成,不同的盘,簇的大小不同,簇是从2开始编号,见表6-1。 逻辑扇区号=(簇号-2)×扇区数/簇+数据区首扇区号 2.BOOT记录: 第壹部分:0~2字节为跳转指令,转向启动码区。 第二部分:3~10字节为厂商标识字段,如MSDOS5.0。 第三部分:11~61字节为磁盘参数表(51字节)。 第四部分:62~509字节为启动程序(438字节)。 最后:55,AA字节。 51字节BPB表(BIOSParameterBlock) OB-OC:每扇区字节数(512) OD:扇区数/簇 0E-0F:保留扇区(指Boot区) 10:FAT个数 11-12:根目录最大登记项数 13-14:本分区扇区总数(小于32M的分区,大于32MB时,为0) 15:介质描述符 16-17:每个FAT扇区数 18-19:每道扇区数 1A-1B:磁头数 1C-1F:本分区前的扇区数(隐含扇区,即从0(X)柱0头1扇到0(X)柱1头1扇之间的扇区,由于不能为DOS访问,故称为隐含扇区)。 20-23:大容量盘总扇区数。 24:BIOS设备号(hex:HD=8x) 25:未使用 26:扩展引导标记(29H) 27-2A:卷序列号(随机) 2B-35:卷标,分区标识,如:WIN98 36-3D:文件系统格式(FAT16)

3.FAT(文件配置表) FAT有俩个,当第壹个损坏时,为人工修复提供方便,DOS不会自动用第二个去修复第壹个FAT,而DOS实际上没有用尽2个FAT占用的扇区,因为可作为他用。FAT登记盘上簇的使用情况,登记项有12位、16位和32位之分,下面以16位为例说明FAT的格式。 16位FAT格式: 簇号(表项)0000H0001H0002H…NNNNH 类型保留簇使用簇 含义介质标志记录文件簇号链 保留簇的第壹字节为磁盘介质标志,后为填充位,全为FFH。使用簇能够是; 0000:自由 FFF6:备用 FFF7:坏簇 FFF8-FFFF:文件结束 其它:文件的下壹簇 4.文件目录表(根目录表FDT) 记录文件名、属性、建立时间、日期、首簇及长度的壹个表。每个文件占用表32字节, O0-O7:文件主名(文件被删除后,00字节为E5H) O8-0A:文件扩展名 0B:文件属性 27H: ↑↑↑↑↑↑ X:未用,填0档案子目录卷标系统隐含只读 0C-15:保留(全0) 16-17:建立文件的时间 18-19:建立文件的日期 1A-1B:文件首簇 1C-1F:文件长度 LFNentry:长文件名项,属性字节为0F表示LFNentry Cr.timerefinementin10msunits:以10ms为计时精度 5.主引导记录(MBR)

自考02142《数据结构导论》串讲笔记

: 第一张概论 引言 两项基本任务:数据表示,数据处理 软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护 由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。 机外表示------逻辑结构------存储结构 ~ 处理要求-----基本运算和运算-------算法 数据,逻辑结构和运算 数据:凡是能够被计算机存储,加工的对象通称为数据 数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。又称元素,顶点,结点,记录。 数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当做一个整体对待。又称字段或域,是数据不可分割的最小标示单位。 — 1.2.2 数据的逻辑结构 逻辑关系:是指数据元素之间的关联方式,又称“邻接关系” 逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。即数据的组织形式。 四种基本逻辑结构: 1 集合:任何两个结点间没有逻辑关系,组织形式松散 2 线性结构:结点按逻辑关系依次排列成一条“锁链” 3 树形结构:具有分支,层次特性,形态像自然界中的树 { 4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。 注意点: 1.逻辑结构与数据元素本身的形式,内容无关。 2.逻辑结构与数据元素的相对位置无关 3.逻辑结构与所含结点个数无关。 运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。 。 加工型运算:改变了原逻辑结构的“值”,如结点个数,结点内容等。 引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。 引用:查找,读取 加工:插入,删除,更新 同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。

数据结构图实验报告

数据结构教程 上机实验报告 实验七、图算法上机实现 一、实验目的: 1.了解熟知图的定义和图的基本术语,掌握图的几种存储结构。 2.掌握邻接矩阵和邻接表定义及特点,并通过实例解析掌握邻接 矩阵和邻接表的类型定义。 3.掌握图的遍历的定义、复杂性分析及应用,并掌握图的遍历方 法及其基本思想。 二、实验内容: 1.建立无向图的邻接矩阵 2.图的深度优先搜索 3.图的广度优先搜索 三、实验步骤及结果: 1.建立无向图的邻接矩阵: 1)源代码: #include "" #include "" #define MAXSIZE 30 typedef struct

{ char vertex[MAXSIZE]; ertex=i; irstedge=NULL; irstedge; irstedge=p; p=(EdgeNode*)malloc(sizeof(EdgeNode)); p->adjvex=i; irstedge; irstedge=p; } } int visited[MAXSIZE]; ertex); irstedge;

ertex=i; irstedge=NULL; irstedge;irstedge=p; p=(EdgeNode *)malloc(sizeof(EdgeNode)); p->adjvex=i; irstedge; irstedge=p; } } typedef struct node { int data; struct node *next; }QNode; ertex); irstedge;ertex); //输出这个邻接边结点的顶点信息 visited[p->adjvex]=1; //置该邻接边结点为访问过标志 In_LQueue(Q,p->adjvex); //将该邻接边结点送人队Q }

第二章 空间数据结构和空间数据库

第二章空间数据结构和空间数据库本章概述:地理信息系统的操作对象是空间地理实体,建立一个地理信息系统的首要任务是建立空间数据库,即将反映地理实体特性的地理数据存储在计算机中,这需要解决地理数据具体以什么形式在计算机中存储和处理即空间数据结构问题和如何描述实体及其相互关系即空间数据库模型问题。本章重点介绍主要的空间数据结构和空间数据库模型。 §2.1 地理实体及其描述 介绍地理实体的概念,地理实体需要描述的内容,实体的空间特征和实体间的空间关系。 §2.2 矢量数据结构 讲述矢量数据的图形表示、获取方式和表示(即矢量编码方法)。§2.3 栅格数据结构 讲述栅格数据的图形表示、栅格数据的组织、栅格结构的建立和栅格数据的表示。 §2.4 矢量栅格一体化数据结构

针对矢量栅格数据结构互为优缺点状况,介绍集两者优点为一体的矢量栅格一体化数据结构的概念和具体数据结构设计方法。 §2.5 三维数据结构 主要阐述基于栅格的八叉树三维数据结构的基本原理和存储结构。在矢量结构方面,介绍常用的三维边界表示法的方法原理、特点和应用。§2.6 空间数据模型 首先介绍数据库有关基础知识,传统数据模型如何存储图形数据及其局限性,重点阐述面向对象技术、面向对象模型和用于地理信息系统的空间数据库管理系统的类型。 §2.7 空间数据库的设计、建立和维护 介绍空间数据库的设计的内容、建立过程和维护方法。 您可能还想看前贴【GIS原理学习(一)】【GIS原理学习(二)】【GIS 原理学习(三)】【GIS原理学习(四)】 §2.1 地理实体及其描述 地理信息系统是以地理实体作为描述、反映现实世界中空间对象的单体。在地理信息系统中需要描述地理实体的名称、位置、形状、功能等内容,这些内容反映了地理实体的时间、空间和属性三种特性,其中空

数据结构导论

数据结构导论const maxsize=顺序表的容量; typedf struct {datatype data[maxsize]; int last; {sqlist; sqlist L; 顺序表的插入算法: void insert_sqlist(sqlist L,datetype x,int i) { if(https://www.doczj.com/doc/f010757727.html,st==maxsize)error(…表潢?); if((i<1)||(i>https://www.doczj.com/doc/f010757727.html,st+1))error(…非法位置?); for(j=https://www.doczj.com/doc/f010757727.html,st;j=i;j--) L.data[j]=L.data[j-1]; L.data[i-1]=X; https://www.doczj.com/doc/f010757727.html,st=https://www.doczj.com/doc/f010757727.html,st+1 } 顺序表的删除算法: void delete_sqlist(sqlist L,int i); { if((i<1)||(i>https://www.doczj.com/doc/f010757727.html,st)) error(非法位置); for(j=i+1;j=https://www.doczj.com/doc/f010757727.html,st;j++) L.data[j-2]=L.data[j-1]; https://www.doczj.com/doc/f010757727.html,st=https://www.doczj.com/doc/f010757727.html,st-1 } 顺序表的查找算法: int locate_sqlist(sqlist L,datatype X) { i=1; while((i<=https://www.doczj.com/doc/f010757727.html,st)&&(L.data[i-1]!=x)) i++; if(i<=https://www.doczj.com/doc/f010757727.html,st) return(i) else return(0) } 单链表类型定义 typedef struct node *pointer; struct node {datatype data; pointer next; }; typedef pointer lklist;

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