文档库 最新最全的文档下载
当前位置:文档库 › 数据结构与算法离线作业答案

数据结构与算法离线作业答案

数据结构与算法离线作业答案
数据结构与算法离线作业答案

浙江大学远程教育学院

《数据结构与算法》课程离线作业

姓名:陈翠学号:7

年级:2013秋学习中心:金华学习中心—————————————————————————————

一、填空题:(【序号,章,节】。。。。。。)

【1,1,2】线性结构中元素之间存在一对一关系,树形结构中元素之间存在

一对多关系,图形结构中元素之间存在多对多关系。

【2,1,2】为了最快地存取数据元素,物理结构宜采用顺序存储结构。

【3,1,2】存储结构可根据数据元素在机器中的位置是否一定连续分为顺序存储结构___,链式存储结构___。

【4,1,3】度量算法效率可通过时间复杂度___来进行。

【5,1,3】设n 为正整数,下面程序段中前置以记号@的语句的频度是n(n+1)/2 。

for (i=0; i

for (j=0; j

if (i+j==n-1)

@ a[i][j]=0;

}

【6,1,3】设n 为正整数,试确定下列各程序段中前置以记号@的语句的频度:

(1) i=1; k=0;

while (i<=n-1){

i++;

@ k+=10 * i; 删除P结点的直接前驱结点的语句序列是__10 12

8 11 4 14___。

b. 删除结点P的语句序列是__10 12 7 3 14______。

c. 删除尾元结点的语句序列是____9 11 3 14_____。

(1) P = P->next;

(2) P->next = P;

(3) P->next = P->next ->next;

(4) P = P->next ->next;

(5) while (P != NULL) P = P->next;

(6) while (Q->next != NULL){P = Q; Q = Q->next};

(7) while (P->next != Q) P = P->next;

(8) while (P->next->next != Q) P = P->next;

(9) while (P->next->next != NULL) P = P->next;

(10) Q = P;

(11) Q = P->next;

(12) P = L;

(13) L = L->next;

(14) free (Q);

【14,3,3】对一个栈,给定输入的顺序是A、B、C,则全部不可能的输出序列有不可能得到的输出序列有CAB 。

【15,3,3】.在栈顶指针为HS的链栈中,判定栈空的条件是head->next==NULL 。

【16,3,3】下列程序把十进制数转换为十六进制数,请填写合适的语句成分。

void conversion10_16()

{ InitStack(&s);

scanf(“%d”,&N);

while(N){

① ________Push(s, N%16)______ ;

N = N/16;

}

while(!StackEmpty(s)){

② _______ Pop(s, e)_ _______ ;

if(e<=9)printf(“%d”,e);

else printf(“%c”,e-10+’A’);

}

} /* conversion */

【17,3,4】若用一个大小为6个元素的数组来实现循环队列,且当前rear=0和front=3。当从队列中删除一个元素,再加入两个元素后,rear和front 的值分别是 2 和 4 。

【18,3,4】堆栈和队列都是线性表, 堆栈是______后进先出_______的线性表, 而队列是____先进先出_______的线性表。

【19,3,4】若用一个大小为6个元素的数组来实现循环队列,且当前rear=0和front=3。当从队列中删除一个元素,再加入两个元素后,rear和front 的值分别是 2 和 4 。

【20,4,2】已知一棵树边的集合是{,,,,,,,,}。那么根结点是 e ,结点b的双亲是 d ,结点a的子孙有 bcdj ,树的深度是 4 ,树的度是 3 ,结点g在树的第 3 层。

【21,4,3】从概念上讲,树与二叉树是二种不同的数据结构,将树转化为二叉树的基本的目的是树可采用二叉树的存储结构并利用二叉树的已有算法解决树的有关问题。

【22,4,3】满三叉树的第i层的结点个数为 3i-1 ,深度为h时该

树中共有 3 -1h 结点。

【23,4,3】已知一棵完全二叉树有56个叶子结点,从上到下、从左到右对它的结点进行编号,根结点为1号。则该完全二叉树总共结点有___111_____个;有__7__层;第91号结点的双亲结点是___45__号;第63号结点的左孩子结点是____32_____号。

【24,4,3】下列表示的图中,共有___5____个是树;有___3____个是二叉树;有__2____个是完全二叉树。

【25,4,4】n个结点的二叉排序树的最大深度是 n ,最小深度为[log2n]+1 。

【26,4,3】如果某二叉树的后序遍历序列是ABCDEFGHI,中序遍历序列是ACBIDFEHG,则其先序遍历序列的第一个字母是 I ,最后一个字母是 G 。

【27,4,3】下列二叉树的中序遍历序列是_DBNGOAEC__;后序遍历序列是_____DNIGBECA________。

【28,5,4】设HASH表的大小为n (n=10), HASH函数为h(x)=x % 7,如果二次探测再散列方法Hi=(H(key)+di) mod 10 (di = 12,22,32,…,)解决冲突,在HASH表中依次插入关键字{1,14,55,20,84,27}以后,关键字1、

20和27所在地址的下标分别是 1 、__7__和 5 。插入上述6个元素的平均比较次数是 2 。

【29,6,3】设无权图G的邻接矩阵为A,若(vi,vj)属于图G的边集合,则对应元素A[i][j]等于 1 ,22、设无向图G的邻接矩阵为A,若A[i][j]等于0,则A[j][i]等于 0 。

【30,6,3】若一个图用邻接矩阵表示,则删除从第i个顶点出发的所有边的方法是矩阵第 i 行全部置为零。

1

【31,6,2】设一个图

G={V,{A}},V={a,b,c,d,e,f},A={,,,,, ,}。那么顶点e的入度是 2 ;出度是 1 ;通过顶点f 的简单回路有 2 条;就连通性而言,该图是强连通图;它的强连通分量有 1 个;其生成树可能的最大深度是 5 。

【32,7,1】排序过程一般需经过两个基本操作,它们是比较和移

动。

【33,7,2】在对一组关键字是(54,38,96,45,15,72,60,23,83)的记录进行直接插入排序时,当把第七个记录(关键字是60)插入到有序表时,为寻找插入位置需比较 3 次。

【34,7,4】插入排序、希尔排序、选择排序、快速排序、堆排序、归并排序、和基数排序方法中,不稳定的排序方法有希尔排序、快速排序、堆排序。

二、综合题(选自教材《数据结构》各章习题,采用word 文件格式上传) 【1,1,3】试分析下面一段代码的时间复杂度:

if ( A > B ) {

for ( i=0; ii; j-- )

A += B;i x x f i i /1)(100

1∑=+=)1.1(f N )(N O n 的全排列(n 小于10),并观察n 逐步增大时程序的运行时间。 Answer : #include <> #define swap(a, b)

{ int t = a;\ a = b;\

b = t;\

}

void permutation(int* a, int b, int e)

{

int i;

if (b == e)

{

for (i = 0; i < e; ++i)

{

printf("%d ", a[i]);

}

printf("\n");

}

else

{

for (i = b; i < e; ++i)

{

swap(a[b], a[i]);

permutation(a, b + 1, e);

swap(a[b], a[i]);

}

}

}

int main(void) {

int a[4] = {1,2,3,4};

permutation(a, 0, 4);

/*system("pause");*/

return 0;

}

【7,3,2】给定一个顺序存储的线性表L = (

a, 2a, , n a),请设计

1

一个算法删除所有值大于min而且小于max的元素。

#include <>

#include <>

#include <>

typedef int ElemType;

typedef struct LNode

{ ElemType data; /* 数据子域 */

struct LNode *next; /* 指针子域 */

}LNode; /* 结点结构类型 */

LNode *L;

/* 函数声明 */

LNode *creat_L();

void delete_L(LNode *L,int i); //返回值格式变为空

/* 建立线性链表*/

LNode *creat_L()

{

LNode *h,*p,*s; ElemType x;

h=(LNode *)malloc(sizeof(LNode)); /* 分配头结点 */

h->next=NULL;

p=h;

printf("输入一串数字(以-1结束):\ndata= ");

scanf("%d",&x); /* 输入第一个数据元素 */

while( x!=-1) /* 输入-1,结束循环 */

{

s=(LNode *)malloc(sizeof(LNode)); /* 分配新结点 */

s->data=x; s->next=NULL;

p->next=s; p=s;

printf("data= ");

scanf("%d",&x); /* 输入下一个数据*/

}

return(h);

} /* creat_L */

/* 输出单链表中的数据元素*/ void out_L(LNode *L)

{

LNode *p;

p=L->next;

printf("\n数据是:");

while(p!=NULL)

{

printf("%5d",p->data); p=p->next;

}

} /* out_link */

/* 删除大于x小于y的值*/

void delete_L(LNode *L,int a,int b)

{

LNode *p,*q;

p=L;

q=p;

p=p->next;

if(p==NULL) printf("ERROR:链表为空"); while(p!=NULL)

{

if((p->data >a) && (p->data next=p->next;

free(p);

p=q->next;

}

else

{ q=p;

p=p->next; }

}

} /* delete_L */

void main()

{

int a,b;

L=creat_L( ); out_L(L);

printf("\n\n请输入你要删除的元素的范围min和max:\n");

scanf("%d%d",&a,&b);

delete_L(L,a,b); out_L(L);

printf("\n");

} /* main */

【8,3,2】给定一个顺序存储的线性表L = (

a, 2a, , n a),请设计一

1

个算法查找该线性表中最长递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。

#include

#include

using namespace std;

#define MAXN 1003

int A[MAXN];

数据结构 习题 第一章 绪论

第1章绪论 一、选择题 1. 算法的计算量的大小称为计算的()。 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于() A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4.一个算法应该是() A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为()两大类。【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是()。【北方交通大学 2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构()?【北方交通大学 2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下那一个术语与数据的存储结构无关?()【北方交通大学 2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表 11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学 2001 一、10(3分)】 FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1; A. O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换; 其中 n为正整数,则最后一行的语句频度在最坏情况下是()

数据结构与算法第1章参考答案

习题参考答案 一.选择题 1.从逻辑上可以把数据结构分为(C)两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 2.在下面的程序段中,对x的斌值语句的频度为(C)。 for( t=1;k<=n;k++) for(j=1;j<=n; j++) x=x十1; A. O(2n) B. O (n) C. O (n2). D. O(1og2n) 3.采用链式存储结构表示数据时,相邻的数据元素的存储地址(C)。 A.一定连续B.一定不连续 C.不一定连续 D.部分连续,部分不连续 4.下面关于算法说法正确的是(D)。 A.算法的时间复杂度一般与算法的空间复杂度成正比 B.解决某问题的算法可能有多种,但肯定采用相同的数据结构 C.算法的可行性是指算法的指令不能有二义性 D.同一个算法,实现语言的级别越高,执行效率就越低 5.在发生非法操作时,算法能够作出适当处理的特性称为(B)。 A.正确性 B.健壮性 C.可读性 D.可移植性 二、判断题 1.数据的逻辑结构是指数据的各数据项之间的逻辑关系。(√) 2.顺序存储方式的优点是存储密度大,且插人、删除运算效率高。(×) 3.数据的逻辑结构说明数据元素之间的次序关系,它依赖于数据的存储结构。(×) 4.算法的优劣与描述算法的语言无关,但与所用计算机的性能有关。(×) 5.算法必须有输出,但可以没有输人。(√) 三、筒答题 1.常见的逻辑结构有哪几种,各自的特点是什么?常用的存储结构有哪几种,各自的特点是什么? 【答】常见的四种逻辑结构: ①集合结构:数据元素之间是“属于同一个集合” ②线性结构:数据元素之间存在着一对一的关系 ③树结构:数据元素之间存在着一对多的关系 ④结构:数据元素之间存在着多对多的关系。 常见的四种存储结构有: ①顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。 ②链接存储:对逻辑上相邻的元素不要求物理位置相邻的存储单元,元素间的逻辑关系通过附设的指针域来表示。 ③索引存储:通过建立索引表存储结点信息的方法,其中索引表一般存储结点关键字和一个地点信息,可通过该地址找到结点的其他信息。 ④散列存储:根据结点的关键字直接计算出该结点的存储地址的方法。 2.简述算法和程序的区别。 【解答】一个算法若用程序设计语言来描述,则它就是一个程序。算法的含义与程序十分相

全国计算机二级考试 数据结构与算法

全国计算机二级考试 第一章数据结构与算法 1.一个算法一般都可以用_____、_____ 、 _____三种控制结构组合完成。 [解析]顺序、选择(分支)、循环(重复) 一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是________。 [解析]算法的控制结构 在一般的计算机系统中,有算术运算、逻辑运算、关系运算和________四类基本的操作和运算。 [解析]数据传输 2.常用于解决“是否存在”或“有多少种可能”等类型的问题(例如求解不定方程的问题)的算法涉及基本方法是() A.列举法 B.归纳法 C.递归法 D.减半递推法 [解析]列举就是列举出所有可能性,将所有可能性统统列举出来,然后解决问题的方法。所以A 3.根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的,这是算法设计基本方法中的____。 [解析]列举法

4.通过列举少量的特殊情况,经过分析,最后找出一般的关系的算法设计思想是() A.列举法 B.归纳法 C.递归法 D.减半递推法 [解析]B 5.在用二分法求解方程在一个闭区间的实根时,采用的算法设计技术是() A.列举法 B.归纳法 C.递归法 D.减半递推法 [解析]二分法就是从一半处比较,减半递推技术也称分治法,将问题减半。所以D 6.将一个复杂的问题归结为若干个简单的问题,然后将这些较简单的问题再归结为更简单的问题,这个过程可以一直做下去,直到最简单的问题为止,这是算法设计基本方法中的___。如果一个算法P显式地调用自己则称为___。如果算法P调用另一个算法Q,而算法Q又调用算法P,则称为_____. [解析]递归法直接递归间接递归调用 7.算法中各操作之间的执行顺序称为_____。描述算法的工具通常有_____、_____ 、 _____。 [解析]控制结构传统流程图、N-S结构化流程图、算法描述语言 8.从已知的初始条件出发,逐步推出所要求的各中间结果和最后结果,这

大数据结构与算法设计知识点

数据结构与算法设计知识点 试题类型: 本课程为考试科目(闭卷笔试),试题类型包括:概念填空题(10 %),是非判断题(10 %),单项选择题(40 %),算法填空题(10%),算法应用题(20 %),算法设计题(10 %)。 第一章绪论 重点容及要求: 1、了解与数据结构相关的概念(集合、数据、数据元素、数据项、关键字、元 素之间的关系等)。 数据:所有能被输入到计算机中,且能被计算机处理的符号的 集合。是计算机操作的对象的总称。是计算机处理的信息的某种特定 的符号表示形式。 数据元素:是数据(集合)中的一个“个体”,数据结构中的基 本单位,在计算机程序常作为一个整体来考虑和处理。 数据项:是数据结构中讨论的最小单位,数据元素可以是一个或 多个数据项的组合 关键码:也叫关键字(Key),是数据元素中能起标识作用的数据 项。 其中能起到唯一标识作用的关键码称为主关键码(简称主码); 否则称为次关键码。通常,一个数据元素只有一个主码,但可以有多 个次码。 关系:指一个数据集合中数据元素之间的某种相关性。 数据结构:带“结构”的数据元素的集合。这里的结构指元素之 间存在的关系。 数据类型:是一个值的集合和定义在此集合上的一组操作的总

称。 2、掌握数据结构的基本概念、数据的逻辑结构(四种)和物理结构(数据元素 的表示与关系的表示、两类存储结构:顺序存储结构和链式存储结构)。 数据结构包括逻辑结构和物理结构两个层次。 数据的逻辑结构:是对数据元素之间存在的逻辑关系的一种抽象的描述,可以用一个数据元素的集合和定义在此集合上的若干关系来表示 逻辑结构有四种:线性结构、树形结构、图状结构、集合结构数据的物理结构:是其逻辑结构在计算机中的表示或实现,因此又称其为存储结构。 存储结构:顺序存储结构和链式存储结构 顺序存储结构:利用数据元素在存储器中相对位置之间的某种特定的关系来表示数据元素之间的逻辑关系; 链式存储结构:除数据元素本身外,采用附加的“指针”表示数据元素之间的逻辑关系。 3、了解算法分析的基本方法,掌握算法时间复杂度相关的概念。 算法:是为了解决某类问题而规定的一个有限长的操作序列 或处理问题的策略 一个算法必须满足以下五个重要特性:1.有穷性2.确定性3.可行性4.有输入 5.有输出 设计算法时,通常还应考虑满足以下目标: 1.正确性, 2.可读性, 3.健壮性 4.高效率与低存储量需求

数据结构与算法习题库(考前必备)

第一章绪论 一.选择题 1.数据结构被形式地定义为(K,R),其中K是①_B_的有限集合,R是K上的②_D_的有限集合。 ①A.算法B.数据元素C.数据操作D.逻辑结构 ②A.操作B.映象C.存储D.关系 2.算法分析的目的是①C,算法分析的两个主要方面是②A。 ①A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 ②A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 3.在计算机存储器内表示时,物理地址和逻辑地址相同并且是连续的,称之为(B) A.逻辑结构B.顺序存储结构 C.链表存储结构D.以上都不对 4.数据结构中,在逻辑上可以把数据结构分成:( C )。 A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构5.以下属于顺序存储结构优点的是(A )。 A.存储密度大B.插入运算方便 C.删除运算方便D.可方便地用于各种逻辑结构的存储表示 6.数据结构研究的内容是(D )。 A.数据的逻辑结构B.数据的存储结构 C.建立在相应逻辑结构和存储结构上的算法D.包括以上三个方面

7.链式存储的存储结构所占存储空间(A )。 A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B.只有一部分,存放结点值 C.只有一部分,存储表示结点间关系的指针 D.分两部分,一部分存放结点值,另一部分存放结点所占单元数 8.一个正确的算法应该具有5 个特性,除输入、输出特性外,另外3 个特性是(A )。 A.确定性、可行性、有穷性B.易读性、确定性、有效性C.有穷性、稳定性、确定性D.可行性、易读性、有穷性9.以下关于数据的逻辑结构的叙述中正确的是(A)。 A.数据的逻辑结构是数据间关系的描述 B.数据的逻辑结构反映了数据在计算机中的存储方式 C.数据的逻辑结构分为顺序结构和链式结构 D.数据的逻辑结构分为静态结构和动态结构 10.算法分析的主要任务是(C )。 A.探讨算法的正确性和可读性B.探讨数据组织方式的合理性C.为给定问题寻找一种性能良好的解决方案D.研究数据之间的逻辑关系 二.解答 设有一数据的逻辑结构为:B=(D, S),其中: D={d1, d2, …, d9} S={, , , , , , , , , , }画出这个逻辑结构示意图。

数据结构习题汇编01 第一章 绪论 试题

《数据结构与算法设计》习题册 第一章绪论 一、单项选择题 1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运 算等的学科。 ①A. 数据元素 B. 计算方法 C. 逻辑存储 D. 数据映象 ②A. 结构 B. 关系 C. 运算 D. 算法 2.数据结构被形式地定义为(K,R),其中K是①的有限集,R是K上的②有限集。 ①A. 算法 B. 数据元素 C. 逻辑结构 D. 数据操作 ②A. 操作 B. 存储 C. 映象 D. 关系 3.在数据结构中,从逻辑上可以把数据结构分成。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 4.数据结构在计算机内存中的表示是指。 A. 数据的存储结构 B. 数据结构 C. 数据的逻辑结构 D. 数据元素之间的关系 5.在数据结构中,与所使用的计算机无关的是数据的结构。 A. 逻辑 B. 存储 C. 逻辑和存储 D. 物理 6.算法分析的目的是①,算法分析的两个主要方面是②。 ①A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ②A. 空间复杂度和时间复杂度 B. 正确性和简明性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 7.计算机算法指的是①,它必须具备输入、输出和②等5个特性。 ①A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ②A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 8.在以下叙述中,正确的是。 A. 线性表的线性存储结构优于链表存储结构 B. 二维数组是其数据元素为线性表的线性表 C. 栈的操作方式是先进先出 D. 队列的操作方式是先进后出 9.在决定选取何种存储结构时,一般不考虑。 A. 各结点的值如何 B. 结点个数的多少 C. 对数据有哪些运算 D. 所用编程语言实现这种结构是否方便 10.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储。

计算机-数据结构与算法

第一章 数据结构与算法 1.1 算法 1 描述。 算法规定了解决某类问题所需的操作语句以及执行顺序,使其能通过有限的指令语句,在一定时间内解决问题。 算法是一个操作序列、有限长度,目的是解决某类问题。 *:算法不等于程序,也不等于计算方法。程序的编制不可能优于算法的设计。 2、算法的基本特征 (1)可行性。针对实际问题而设计的算法,执行后能够得到满意的结果。 (2)确定性。每一条指令的含义明确,无二义性。并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。 (3)有穷性。算法必须在有限的时间内完成。有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。 (4)拥有足够的情报。指的是有足够的输入和输出。 *:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。 3、算法的基本要素 一个算法通常由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。 (1)算法中对数据的运算和操作 每个算法实际上市按解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。因此,计算机算法就是计算机能处理的操作所组成的指令序列。 在一般的计算机系统中,基本的运算和操作有以下四类: ①算术运算:主要包括加、减、乘、除等运算; ②逻辑运算:主要包括与(AND)、或(OR)、非(NOT) 等运算; ③关系运算:主要包括大于、小于、等于、不等于等运算 ④数据传输:主要包括赋值、输入、输出等操作。 (2)算法的控制结构 顺序、选择和循环。

4、算法的基本方法(计算机解题的过程实际上是在实施某种算法) (1)列举法(列举所有解决方案) 根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。 (2)归纳法(特殊->一般)适合于列举量为无限的情况 通过列举少量的特殊情况,经过分析,最后找出一般的关系。 (3)递推法(已知->未知) 从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。 (4)递归法(逐层分解) 将一个复杂的问题归结为若干个较简单的问题,然后将这些较简单的每一个问题再归结为更简单的问题 (5)减半递推法 “减半”是指将问题的规模减半,而问题的性质不变,所谓“递推”是指重复“减半”的过程。 (6)回溯法 复杂应用,找出解决问题的线索,然后沿着这个线索逐步多次“探”、“试”。 5、算法复杂度主要包括时间复杂度和空间复杂度。 算法的复杂度是衡量算法好坏的量度。 (1)算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。 影响计算机工作量的主要因素: 第一:基本运算次数;第二:问题规模。 下面的方法不能用来度量算法的时间复杂度: 第一:算法程序的长度或算法程序中的语句(指令)条数; 第二:算法程序所执行的语句条数; 第三:算法程序执行的具体时间 (2 一个算法所用的内存空间包括: 1)算法程序所占用的存储空间; 2)输入的初始数据所占的存储空间;3)算法执行过程中的额外空间。 6、考题练习: 1)下列叙述正确的是() (A)算法就是程序 (B)算法强调的是利用技巧提高程序执行效率 (C)设计算法时只需考虑结果的可靠性 (D)以上三种说法都不对 2)下面叙述正确的是() (A)算法的执行效率与数据的存储结构无关 (B)算法的空间复杂度是指算法程序中指令(或语句)的条数 (C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 (D)以上三种描述都不对 3)下列叙述中正确的是() (A)一个算法的空间复杂度大,则其时间复杂度也必定大 (B)一个算法空间复杂度大,则其时间复杂度必定小 (C)一个算法的时间复杂度大,则其时间复杂度必定小

第一章数据结构与算法练习一

二级公共基础知识第一章数据结构与算法练习一 1.栈和队列的共同特点是(只允许在端点处插入和删除元素)。 2.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是(e2,e4,e3,e1)。 3.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是(DCBEA)。 4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构)。 5.下列关于栈的叙述正确的是(D)。 A.栈是非线性结构 B.栈是一种树状结构 C.栈具有先进先出的特征 D.栈有后进先出的特征 6.链表不具有的特点是(B)。 A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要移动元素 D.所需空间与线性表长度成正比 7.用链表表示线性表的优点是(便于插入和删除操作)。 8.在单链表中,增加头结点的目的是(方便运算的实现)。 9.循环链表的主要优点是(从表中任一结点出发都能访问到整个链表)。 10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)。 A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素 C.表中诸元素的排列顺序必须是由小到大或由大到小 D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)。 A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续不连续都可以 12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)。 13.树是结点的集合,它的根结点数目是(有且只有1)。 14.在深度为5的满二叉树中,叶子结点的个数为(31)。 15.具有3个结点的二叉树有(5种形态)。 16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为(13)。 17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)。 18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)。 19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)。 20.数据库保护分为:(安全性控制)、(完整性控制)、并发性控制和数据的恢复。 二级公共基础知识第一章数据结构与算法练习二 1. 在计算机中,算法是指(解题方案的准确而完整的描述) 2.在下列选项中,哪个不是一个算法一般应该具有的基本特征(无穷性) 说明:算法的四个基本特征是:可行性、确定性、有穷性和拥有足够的情报。 3. 算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环) 4.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数) 5. 算法的空间复杂度是指(执行过程中所需要的存储空间)

《数据结构与算法》习题:选择题、判断题

第一章绪论 1. 从逻辑上可以把数据结构分为( C )两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 2. 在下面的程序段中,对x的赋值语句的频度为( C )。 For(k=1;k<=n;k++) For(j=1;j<=n;j++) x=x+1; A.O(2n) B.O(n) C.O(n2) D.O(log2n) 3. 采用顺序存储结构表示数据时,相邻的数据元素的存储地址( A )。 A.一定连续B.一定不连续 C.不一定连续D.部分连续、部分不连续 4. 下面关于算法的说法,正确的是( D )。 A.算法的时间复杂度一般与算法的空间复杂度成正比 B.解决某问题的算法可能有多种,但肯定采用相同的数据结构 C.算法的可行性是指算法的指令不能有二义性 D.同一个算法,实现语言的级别越高,执行效率就越低 5. 在发生非法操作时,算法能够作出适当处理的特性称为( B )。 A.正确性B.健壮性C.可读性D.可移植性 第二章线性表 1. 线性表是( A )。 A.一个有限序列,可以为空B.一个有限序列,不能为空 C.一个无限序列,可以为空D.一个无限序列,不能为空 2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的( A )个元素。 A.n/2 B.(n+1)/2 C.(n-1)/2 D.n 3.线性表采用链式存储时,其地址( D )。 A.必须是连续的B.部分地址必须是连续的 C.一定是不连续的D.连续与否均可以 4.用链表表示线性表的优点是(C)。 A.便于随机存取B.花费的存储空间较顺序存储少 C.便于插入和删除D.数据元素的物理顺序与逻辑顺序相同 5.链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( C )存储方式最节省运算时间。

数据结构及应用算法教程习题--第一章

第一章绪论 一、选择题 1. 算法的计算量的大小称为计算的( B )。 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于( C ) A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是( C )它必须具备( B )这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性4.一个算法应该是()。 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是() (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为( C )两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构

8.以下与数据的存储结构无关的术语是( D )。 A.循环队列 B. 链表 D. 栈 9.以下数据结构中,( D )是线性结构 A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下数据结构中,( A )是非线性数据结构 A.树 B.字符串 C.队 D.栈 11.连续存储设计时,存储单元的地址( A )。 A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续12.以下属于逻辑结构的是( C )。 A.顺序表 C.有序表 D. 单链表 二、填空 1.数据的物理结构包括的表示和的表示。 2. 对于给定的n个元素,可以构造出的逻辑结构有(1),(2),(3),__(4)_四种。 3.数据的逻辑结构是指。 4.一个数据结构在计算机中称为存储结构。 5.抽象数据类型的定义仅取决于它的一组__(1)_,而与_(2)_无关,即不论其内部结构如何变化,只要它的_(3)_不变,都不影响其外部使用。 6.数据结构中评价算法的两个重要指标是 7. 数据结构是研讨数据的_(1)_和_(2)_,以及它们之间的相互关系,并对与这种结构定义相应的_(3)_,设计出相应的(4)_。 8.一个算法具有5个特性: (1)、(2)、(3),有零个或多个输入、有一个或多个输出。 9. 下面程序段的时间复杂度为__O(n)______。(n>1) sum=1; for (i=0;sum

中南大学数据结构与算法_第1章绪论课后作业答案

第一章绪论习题练习答案 1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。 ● 数据:指能够被计算机识别、存储和加工处理的信息载体。 ● 数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。数据元素有时可以由若干数据项组成。 ● 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。通常数据类型可以看作是程序设计语言中已实现的数据结构。 ● 数据结构:指的是数据之间的相互关系,即数据的组织形式。一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。 ● 逻辑结构:指数据元素之间的逻辑关系。 ● 存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构. ● 线性结构:数据逻辑结构中的一类。它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都有且只有一个直接前趋和一个直接后继。线性表就是一个典型的线性结构。栈、队列、串等都是线性结构。 ● 非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。数组、广义表、树和图等数据结构都是非线性结构。 1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。 答: 例如有一张学生体检情况登记表,记录了一个班的学生的身高、体重等各项体检信息。这张登记表中,每个学生的各项体检信息排在一行上。这个表就是一个数据结构。每个记录(有姓名,学号,身高和体重等

字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。这几个关系就确定了这个表的逻辑结构是线性结构。 这个表中的数据如何存储到计算机里,并且如何表示数据元素之间的关系呢? 即用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题。 在这个表的某种存储结构基础上,可实现对这张表中的记录进行查询,修改,删除等操作。对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。 1.3 常用的存储表示方法有哪几种? 答: 常用的存储表示方法有四种: ● 顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构,通常借助程序语言的数组描述。 ● 链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示。由此得到的存储表示称为链式存储结构,通常借助于程序语言的指针类型描述。 ● 索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。组成索引表的索引项由结点的关键字和地址组成。若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引(Dense Index)。若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引。 ● 散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。 1.4 设三个函数f,g,h分别为f(n)=100n3+n2+1000 , g(n)=25n3+5000n2 , h(n)=n1.5+5000nlgn 请判断下列关系是否成立: (1) f(n)=O(g(n)) (2) g(n)=O(f(n)) (3) h(n)=O(n1.5) (4) h(n)=O(nlgn) 分析: 数学符号"O"的严格的数学定义: 若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0,

数据结构与算法课后作业

作业布置 作业一 第一章 1.1 什么是数据对象、数据元素、数据结构? 1.2 什么是数据类型?什么是抽象数据类型? 1.3 什么是算法?它有哪些特性?它与程序有何区别? 1.4 试判定下列计算过程是否为一个算法? 1)开始 2)n<=0 3)n=n+1 4)重复3) 5)结束 1.5 用图形表示下列数据结构: 1) S=(D, R) , D={a,b,c,d,e,f,g} , R={, , , , } 2) S=(D, R) , D={48,25,64,57,82,36,75} , R={R1, R2} R1={<25,36>,<36,48>,<48,57>,<57,64>,<64,75>,<75,82>} R2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>} 1.6 将O(1)、O(n)、O(n2)、O(n3)、O(nlog2n)、O(log2n)、O(2n)按增长率递增排列。 1.7 计算下列算法的时间复杂度: 1) x=100; y=0; while(x>=y*y) y=y+2; 2) sum(int n) {int sum=0,x, j,k; for(j=1; j<=n; j++) {x=1; for(k=1; k<=j; k++) p=p*k; sum=sum+p;} return sum; } >> 查看/完成作业:作业一 作业二

2.1 试编写一个算法,将一个顺序表逆置,并使用最少的辅助存储空间实现。 2.2 试编写一个算法,将两个元素值递减排列的顺序表合并为一个非递增的顺序表。 2.3 试编写一个算法,计算带头结点的循环单链表的长度。 2.4 试编写一个算法,在一个递增有序排列的单链表中插入一个新结点x,并保持有序。2.5 试编写一个算法,将一个单链表逆置。 2.6 试编写一个算法,在一个双向循环链表中将结点x插入到指定结点p之前。 2.7 试编写一个算法,计算一个循环队列中包含的元素个数。 2.8 试编写一个算法,实现对一个以只带尾指针的循环单链表表示的队列的入队出队操作。 >> 查看/完成作业:作业二 作业三 3.1 设字符串S="good",T="I am a student",R="!",求: (1)CONCAT(T,R,S) (2)SUBSTR(T,8,7) (3)Len(T) (4)index(T,"a") (5)insert(T,S,8) (6)replace(T,SUBSTR(T,8,7) ,"teacher") 3.2 计算下列串的next值: (1)a a a b c a a b a (2)a b a a b c a c b (3)a b c a b c a c b (4)b a b b a b a b

《数据结构与算法》第一章绪论测试试题

《数据结构与算法》第1章绪论测试题 适用班级:数技19101-19104、物联19103-10104 测试时间:60分钟 一、填空题(每空3分,共45分) 1. 位是数据的最小单位,数据元素是数据的基本单位。 2.计算机所处理的数据一般具备某种内在联系,这是指元素和元素之间存在的某种关系。 3.一个算法具有正确性,可读性,健壮性,效率与存储量需求。 4.算法的时间复杂度与问题的规模有关。 5.某算法的时间复杂度 O(n2),表明该算法的与n2成正比。 6.数据采用链式存储结构时,要求每个结点占用一片连续的存储区域。 7.数据的逻辑结构是指数据元素之间逻辑关系的整体。 8.数据结构通常分为以下4类基本结构:集合、线性结构、树形结构和图结构。 9.顺序存储映像和非顺序存储印象,得到两种不同的存储结构:线性存储结构和非线性储存结构。 10.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有一个前驱结点。 11.在图状结构中,每个结点的前驱结点数和后继结点数可以有任意多个。 12.一个算法具有5个特性:有穷性,确定性,可行性,有零个或多个输出。 13.算法中的每条指令都必须有确切的含义,不能具有二义性,表现算法特性中的确定性。 14.数据在计算机的存储器中表示时,逻辑上相邻的两个数据元素对应的物理地址也是相邻的,这种存储结构称之为顺序储存结构。 15.算法分析的目的是找出数据结构的合理性,算法分析的两个主要方面是空间复杂度和 时间复杂度。 二、判断题(每题2分,共20分) 1.数据对象就是一组任意数据元素的集合( f ) 2.数据对象是具有相同性质的数据元素的集合( t ) 3.数据对象是由有限个类型相同的数据元素构成的( t ) 4.数据的逻辑结构与各数据元素在计算机中如何存储有关( f ) 5.逻辑结构不相同的数据,必须采用不同类型的存储方式( t ) 6.数据的逻辑结构是指数据的各数据项之间的逻辑关系( f ) 7.算法的优劣与算法描述语言无关,但与所用的计算机有关( f ) 8.程序一定是算法( f ) 9.算法最终必须由计算机实现( f )

相关文档
相关文档 最新文档