《c语言数据结构》第一章概论 自测题答案

合集下载

数据结构 第一章测验 测验答案 慕课答案 UOOC优课 课后练习 深圳大学

数据结构 第一章测验 测验答案 慕课答案 UOOC优课 课后练习 深圳大学

数据结构第一章测验一、单选题 (共100.00分)1. 在数据结构概念中,数据的基本单位是()A. 数据段B. 数据项C. 数据表D. 数据元素正确答案:D2. 在数据结构概念中,结构是描述()A. 数据项的类型B. 数据元素之间的关系C. 数据成员的先后顺序D. 数据对象的取值范围正确答案:B3. 在算法设计中,要求算法便于理解和修改是属于算法要求的()A. 正确性B. 可读性C. 健壮性D. 效率高正确答案:B4. 抽象数据类型ADT通过三方面描述,包括数据对象、数据操作和()A. 数据范围B. 数据判断C. 数据关系D. 数据来源正确答案:C5. 以下关于算法的描述,哪个是正确的()A. 算法可以没有输入B. 算法可以包含无限个执行步骤C. 算法可以没有输出D. 算法的每个步骤允许带有歧义的正确答案:A6. 在算法设计中,要求算法满足具体问题的需求是属于算法要求的()A. 正确性B. 可读性C. 健壮性D. 效率高正确答案:A7. 抽象数据类型ADT通过三方面描述,包括数据关系、数据操作和()A. 数据对象B. 数据来源C. 数据范围D. 数据判断正确答案:A8. 以下关于数据结构的描述,哪一个是正确的()A. 数据原子是数据的最小独立单位B. 数据元素是数据的最小独立单位C. 一个数据项可以包含若干个数据元素D. 不能被计算机程序识别和处理的信息集合,不能称为数据正确答案:D9. 设n为问题规模,以下程序的时间复杂度为()for (i=1; i<=10000; i++) for (j=1; j<=n; j++) a = a + 1;A. O(1)B. O(n)C. O(10000n)D. O(n2)正确答案:B10. 设n为问题规模,以下程序的时间复杂度为() for (i=1; i< POW(2, n); i++) //POW(x, y)函数表示x的y 次幂a = a+100;A. O(n)B. O(2n)C. O(n!)D. O(2n)正确答案:D。

数据结构C语言版第一二章习题答案

数据结构C语言版第一二章习题答案

数据结构C语言版第一二章习题答案Document number:BGCG-0857-BTDO-0089-2022第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(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)以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队 D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;?while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++) s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1)) y++;(1)O(1)(2)O(m*n)(3)O(n2)n)(4)O(log3(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

《数据结构》(C语言版) 第一章 绪论 习题及答案

《数据结构》(C语言版) 第一章 绪论 习题及答案

一、单选题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、数据的逻辑结构可以分为 ______ 两类。

A、紧凑结构和非紧凑结构B、动态结构和静态结构C、线性结构和非线性结构D、内部结构和外部结构7、数据的逻辑结构是指 ______ 关系的整体。

A、数据项之间逻辑B、数据元素之间逻辑C、数据类型之间D、存储结构之间8、以下是数据结构中 ______ 属非线性结构。

A、串B、栈C、队列D、平衡二叉树9、以下属于逻辑结构是 ______。

A、双链表B、单链表C、顺序表D、有序表10、以下不属于存储结构是______。

A、顺序表B、线性表C、邻接表D、单链表11、在计算机中存储数据时,通常不仅要存储各数据元素的值,而且还有存储 ______。

A、数据元素之间的关系B、数据元素的类型C、数据的处理方法D、数据的存储方法12、数据结构在计算机内存中的表示是指 ______。

A、数据的逻辑结构B、数据结构C、数据元素之间的关系D、数据的存储结构13、在数据的存储中,一个节点通常存储一个 ______。

A、数据结构B、数据元素C、数据项D、数据类型14、在决定选取任何类型的存储结构时,一般不多考虑 ______。

A、各节点的值如何B、节点个数的多少C、对数据有哪些运算D、所用编程语言实现这种结构是否方便15、数据在计算机的存储器中表示时,逻辑上相邻的两个元素对应的物理地址也是相邻的,这种存储结构称之为 ______。

数据结构(C语言版)1800道题及答案[完整版]

数据结构(C语言版)1800道题及答案[完整版]

数据结构(C语言版)1800道题及答案[完整版]数据结构(C语言版)1800道题及答案[完整版]数据结构1800例题与答案第一章绪论一、选择题(每小题2分)1.算法的计算量的大小称为计算的(B )。

【北京邮电大学2000 二、3 (20/8分)】A.效率 B.复杂性 C.现实性 D.难度2.算法的时间复杂度取决于(C)。

【中科院计算所 1998 二、1 (2分)】A.问题的规模 B.待处理数据的初态 C.A和B D.都不是3.计算机算法指的是(① C ),它必须具备(② B )这三个特性。

① A.计算方法B.排序方法C.解决问题的步骤序列 D.调度方法② A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性 D.易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是( B )。

【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.5.下面关于算法说法错误的是( D )【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是(C )【南京理工大学2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。

【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是(D )。

第一章自测题

第一章自测题
(5)计算:最小公倍数=(m0*n0)/最大公约数;
(6)输出最大公约数和最小公倍数。
第一章概论自测题姓名班级
题号






总分
题分
33
15
9
8
20
15
100
得分
一、填空题(每空1分,共33分)
1.一个计算机系统包括和两大部分。
2.一台计算机中全部程序的集合,称为这台计算机的。
3.计算机软件可以分为软件和软件两大类。科学计算程序包属于,诊断程序属于。
解答:
(1)在程序段(1)中只有3条独立的语句,它们的执行频度都是1。这表明该程序段的执行时间是一个与问题的规模n无关的常数。所以其时间复杂度为常数阶T(n)=O(1)。
(2)程序段(2)是一个单循环,核心语句k=k+1要执行n-1次,其执行时间与问题的规模n成正比,故算法的时间复杂度为T(n)=O(n)。
C)可读性和文档性D)数据复杂性和程序复杂性
()14.计算机算法指的是:
A)计算方法B)排序方法C)解决问题的有限运算序列D)调度方法
()15.计算机算法必须具备输入、输出和等5个特性。
A)可行性、可移植性和可扩充性B)可行性、确定性和有穷性
C)确定性、有穷性和稳定性D)易读性、稳定性和安全性
三、简答题(每小题3分,共9分)
4.一种用助忆符号来表示机器指令的操作符和操作数的语言是。
5.数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的
和运算等的学科。
6.数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。
7.数据结构包括数据的、数据的和数据的这三个方面的内容。

数据结构c语言版试题大全(含答案)

数据结构c语言版试题大全(含答案)

数据结构c语言版试题大全(含答案)数据结构C语言版试题大全(含答案)第一章:基本概念与算法设计1.1 数据结构的定义与特点数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它包括了数据的存储、组织和管理方式。

数据结构的特点包括以下几个方面:- 数据元素之间存在某种关系,构成逻辑结构- 对数据元素的操作对应于对其逻辑结构的操作- 数据结构有存储结构,包括顺序存储结构和链式存储结构- 算法是对数据结构的操作步骤的描述和实现1.2 算法的基本概念算法是解决特定问题或完成特定任务的一系列操作步骤。

算法的基本概念包括以下几个方面:- 有穷性:算法必须能在有限步骤内完成- 确定性:算法的每一步骤必须有确定的含义和结果- 可行性:算法的每一步骤必须可行,能够通过执行有限次数实现- 输入:算法接受的输入数据是原始问题的实例- 输出:算法产生的输出数据与输入有明确的关系1.3 算法的描述方法算法可以用自然语言、伪代码或流程图来描述。

常用的伪代码描述方法包括结构化语言和算法描述语言,结构化语言包括顺序结构、分支结构和循环结构。

第二章:线性结构2.1 线性表的定义与基本操作线性表是n个数据元素的有限序列,其中相邻元素之间存在唯一的前驱和后继关系。

线性表的基本操作包括插入、删除、查找和修改等。

2.2 数组与广义表数组是指具有相同数据类型的一组数据元素的集合,可以通过下标访问元素。

广义表是线性表的推广,其中元素可以是基本数据类型或另一个广义表。

第三章:树与二叉树3.1 树的定义与基本术语树是n(n≥0)个结点的一个有限集合,其中满足以下条件:- 有且仅有一个特定的称为根的结点- 其余结点可分为m(m≥0)个互不相交的有限集合,每个集合本身又是一棵树3.2 二叉树的定义与性质二叉树是指每个结点最多有两个子结点的树结构。

二叉树的性质包括以下几个方面:- 深度为k的二叉树最多有2^k-1个结点- 一棵二叉树的第i层最多有2^(i-1)个结点- 在二叉树的第i层上至多有2^(n-i+1)-1个结点(n为树的深度)第四章:图4.1 图的基本概念与术语图是由顶点的有穷非空集合和边的有穷集合组成的。

数据结构第一版习题参考答案

数据结构第一版习题参考答案

数据结构2009年习题参考答案教材数据结构(c语言版)第一版作者李云清等第一章概论概念题从略1.10(1)O(1) (2)O(n) (3)O(n2)第二章线性表的顺序存储2.2int number_of_x_sequence_list(sequence_list slt,datatype x){int i,n=0;if(!slt.size) {printf("顺序表是空的!");exit(1);}elsefor(i=0;i<slt.size;i++)if(slt.a[i]==x) n++;return n;}2.3void inversion_sequence_list(sequence_list *slt){int i,temp;if(!slt->size) {printf("顺序表是空的!");exit(1);}elsefor(i=0;i<slt->size/2;i++){temp=slt->a[i];slt->a[i]=slt->a[slt->size-i-1];slt->a[slt->size-i-1]=temp;}}2.4void insert_order_sequence_list(sequence_list *slt,datatype x){int i=0;if(slt->size==MAXSIZE){printf("\n顺序表是满的!没法插入!");exit(1);}i=find_num_sequence_list(slt,x);insert_pos_sequence_list(slt,i,x);}2.6当rear>=front 时,循环队列的元素个数是rear-fornt当rear<front 时,循环队列的元素个数是n+rear-front-1综合起来:(n+rear-front)%n2.71234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3214,3241,3421,4321 共14种归纳起来有两种方法算具体的排序种类:(1)bn=1/(n+1)*2n!/(n!*n!)(2)递推公式:F(n)=F(0)*F(n-1)+F(1)*F(n-2)+F(2)*F(n-3)+…+F(n-1)*F(n-n);(其中n>=1,F(0)=1)具体的完成实现程序如下:#include <stdio.h>int stk[21],out[21];void go(int n,int intop,int outtop,int in){int i,t;if(intop==0 && outtop==n){for(i=0;i<n;i++){printf("%d",out[i]);if(i==n-1) printf("\n");}return;}if(intop<n && in<n){stk[intop]=in+1;go(n,intop+1,outtop,in+1);}if(intop>0){out[outtop]=stk[intop-1];t=stk[intop-1];go(n,intop-1,outtop+1,in);stk[intop-1]=t;}}main(){int n;printf("please input n:\n");scanf("%d",&n);go(n,0,0,0);getch();}第三章线性表的链式存储3.1int cal_link_list(node *head){int i=0;node *q=head;while(q) {i++;q=q->next;}printf("\nThis list a total %d of nodes",i); return i;}3.3node *insert_x_before_y(node *head,int x,int y) {node *m,*n,*t;m=head;while(m&&m->info!=y){n=m;m=m->next;}t=(node *)malloc(sizeof(node));t->info=x;t->next=m;n->next=t;return head;}3.4int judgement(node *head){node *p=head;if(p&&p->info>=p->next->info){while(p&&p->info>=p->next->info){p=p->next;}}else{while(p&&p->info<p->next->info){p=p->next;}}if(p->next){printf("\nLine list is not arrange in order");return 0;}else{printf("\nLine list is arrange in order");return 1;}}3.5node *change(node *head){node *p,*q=0;while(head){p=head->next;head->next=q;q=head;head=p;;}head=q;return head;}3.6void seperate(node *head){ node *p1,*p2,*p,*headodd,*headeven,temp;p=head;while(p) /*找到第一个奇数结点,由headodd指向*/ { if(p->info%2!=0){headodd=p;break;}elsep=p->next;}p=head;while(p) /*找到第一个偶数结点,由headeven指向*/ {if(p->info%2==0){ headeven=p;break;}elsep=p->next;}p=head;p1=headodd;p2=headeven;while(p){if(p->info%2!=0&&p==headodd)p=p->next;else if(p->info%2==0&&p==headeven) p=p->next;else if(p->info%2!=0){p1->next=p;p1=p;p=p->next;}else if(p->info%2==0){p2->next=p; p2=p;p=p->next;}}p1->next=p2->next=0;head=headeven;printf("该链表的偶数部分是:");print_link_list(head);printf("\n该链表的奇数部分是:");print_link_list(headodd);}3.7node *delete_x_to_y(node *head,int x,int y) {node *p=head,*q=head;for(;q;q=q->next){if(q->info>x&&q->info<=y&&q==head)head=q->next;else{if(q->info>x&&q->info<=y){p->next=q->next;}elsep=q;}}return head;}第四章字符串、数组和特殊矩阵题4.1# include <stdio.h># define MAXSIZE 100typedef struct{char str[MAXSIZE];int length;}seqstring;seqstring *init(seqstring *S){S->str[0]='\0';S->length=0;return S;}int sign(int r){if(r>0) return 1;if(r==0) return 0;if(r<0) return -1;}int strcompare(seqstring *S,seqstring *T){int i=1,j=0;while(!(i=S->str[j]-T->str[j])){j++;if(S->str[j]=='\0'&&T->str[j]=='\0') break;}return sign(i);}void print(seqstring *S){int i;for(i=0;i<S->length;i++)printf("%c",S->str[i]);}main(){seqstring *S=init(S),*T=init(T);int a,i=0;clrscr();printf("This program is to compare two strings.\nplease input first string\n"); while((S->str[i]=getchar())!='\n'){i++;}S->str[i]='\0';S->length=strlen(S->str);printf("please input second srting\n");i=0;while((T->str[i]=getchar())!='\n'){i++;}T->str[i]='\0';T->length=strlen(T->str);printf("\nthe first you input :");print(S);printf("\nthe second you input :");print(T);a=strcompare(S,T);printf("\nafter compare,return value %d",a); getch();}题4.4#include<stdio.h>typedef struct node{char data;struct node *next;}linkstrnode;typedef linkstrnode *linkstring;linkstring *strcreat(linkstring *S){char ch;linkstrnode *p,*r;*S=0; r=0;while((ch=getchar())!='\n'){p=(linkstrnode *)malloc(sizeof(linkstrnode)); p->data=ch;if(*S==0)*S=p;elser->next=p;r=p;}if(r!=0) r->next=0;return S;}void print(linkstring S){linkstring q=S;for(;q!=0;q=q->next)printf("%c",q->data);}void strinsert(linkstring *S,int i,linkstring T) {int k;linkstring p,q;p=*S,k=1;if(i==1){q=T;while(q->next) q=q->next;q->next=*S;*S=T;}else{while(p&&k<i-1){p=p->next;k++;}if(!p) printf("Error\n");else{q=T;while(q->next) q=q->next;q->next=p->next;p->next=T;}}}void strdelete(linkstring *S,int i,int len) {int k;linkstring p,q,r;p=*S,q=0;k=1;while(p&&k<i){q=p;p=p->next;k++;}if(!p)printf("Error 1\n");else{k=1;while(k<len&&p){p=p->next;k++;}if(!p) printf("Error 2\n");else{if(!q){ r=*S;*S=p->next;}else{r=q->next;q->next=p->next;}p->next=0;while(r!=0){p=r;r=r->next;free(p);}}}}linkstring substring(linkstring S,int i,int len) {int k;linkstring p,q,t,r;p=S,k=1;while(p&&k<i){p=p->next;k++;}if(!p){printf("Error\n");return 0;}else{r=(linkstring)malloc(sizeof(linkstrnode));r->data=p->data;r->next=0;k=1;q=r;while(p->next&&k<len){p=p->next;k++;t=(linkstring)malloc(sizeof(linkstrnode));t->data=p->data;q->next=t;q=t;}if(k<len) {printf("Error 2\n");return 0;}else{q->next=0;return(r); }}}/*Creat a new linkstring=b*/linkstring newcopy(linkstring x,linkstring y){linkstring q,t=x,new;for(q=y;q;q=q->next){new=(linkstring)malloc(sizeof(linkstrnode));new->data=q->data;if(t==0) x=new;else t->next=new;t=new;}t->next=0;return x;}void replace(linkstring *S,linkstring a,linkstring b) /*4.4*/ {linkstring p=*S,q=a,r=b,temp,t;int i,j=0,k=0,l=0;while(p!=0){p=p->next;j++;}while(q!=0){q=q->next;k++;}while(r!=0){r=r->next;l++;}for(i=1;i+k<j+2;i++){temp=substring(*S,i,k);q=a;while(temp!=0&&q!=0){if(temp->data!=q->data) break;temp=temp->next;q=q->next;}if(temp==0&&q==0){t=0;t=newcopy(t,b);printf("\nHehe%d %d",i,k);strdelete(S,i,k);strinsert(S,i,t);j=j-k+l;i=i+l-1;}}}main(){linkstrnode *S,*T1,*T2;clrscr();printf("The program is to S,T1 replaced by T2.\nplease input string S:\n"); strcreat(&S);printf("please input string T1:\n");strcreat(&T1);printf("please input string T2:\n");strcreat(&T2);printf("\nS:"); print(S);printf("\nT1:"); print(T1);printf("\nT2:"); print(T2);replace(&S,T1,T2);printf("\n\n");print(S);getch();}题4.7分别使用按行优先和按列优先的顺序写出三位数组A[3][2][4]中所有元素在存储器中的存储次序,并计算数组元素A[0][1][2]的地址。

数据结构C语言版习题详细答案

数据结构C语言版习题详细答案

目录第1章 绪论............................................................................................................ 1 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

............................................................................................................ 1 第2章 线性表 ........................................................................................................ 9 第3章 栈和队列 .................................................................................................... 36 第4章 串 . (65)以下是关于广义表算法涉及的描述及方法......................................................... 83 6章 树和二叉树 ..................................................................................................... 86 第7章 图 ............................................................................................................109 第9章 查找 (111)第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

数据结构第一章考试题库(含答案)

数据结构第一章考试题库(含答案)

数据结构第一章考试题库(含答案)数据结构第一章考试题库(含答案)一、选择题1. 以下哪种数据结构是先进先出(FIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:B2. 在队列中,元素的插入操作称为什么?A. EnqueueB. DequeueC. PushD. Pop答案:A3. 哪种数据结构是一种不允许重复元素的集合?A. 栈B. 队列C. 链表D. 集合答案:D4. 以下哪种数据结构是后进先出(LIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:A5. 使用链表实现的栈或队列的时间复杂度是多少?A. O(1)B. O(n)C. O(log n)D. O(n^2)答案:A二、填空题1. 广度优先搜索(BFS)使用的数据结构是______。

答案:队列2. 深度优先搜索(DFS)使用的数据结构是______。

答案:栈3. 在二叉树中,每个节点最多有几个子节点?答案:24. 快速排序使用的分治策略是将数组分成几个子数组进行排序?答案:25. 哈希表的平均查找时间复杂度是多少?答案:O(1)三、简答题1. 请简要解释栈和队列的区别。

答案:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,只能在队尾插入,在队头删除。

2. 请解释什么是链表。

答案:链表是一种动态数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

与数组不同,链表的节点在内存中可以不连续存储,通过指针来链接每个节点。

3. 请简述快速排序的思想和算法步骤。

答案:快速排序使用分治的思想,首先选择一个元素作为基准值,然后将数组划分为两个子数组,小于基准值的元素放在左侧,大于基准值的元素放在右侧。

然后对左右子数组递归地进行快速排序,直到排序完成。

4. 请解释什么是哈希表及其应用场景。

答案:哈希表是一种基于哈希函数进行查找的数据结构,通过将关键字映射到哈希表中的位置来实现高效的查找。

数据结构第一章答案

数据结构第一章答案

习题一1.1有下列几种用二元组表示的数据结构,试画出它们分别对应的图形表示(当出现多个关系时,对每个关系画出相应的结构图),并指出它们分别属于何种结构。

1.A=(K,R) 其中K={a1,a2,a3,…,a n}R={}2.B=(K,R),其中K={a,b,c,d,e,f,g,h}R={<a,b>,<b,c>,<c,d>,<d,e>,<e,f>,<f,g>,<g,h>}3.C=(K,R),其中K={a,b,c,d,e,f,g,h}R={<d,b>,<d,g>,<b,a>,<b,c>,<g,e>,<g,h>,<e,f>}4.D=(K,R),其中K={1,2,3,4,5,6}R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)} 5.E=(K,R),其中K={48,25,64,57,82,36,75,43}R={r1,r2,r3}r1={<48,25>,<25,64>,<64,57>,<57,82>,<82,36>,<36,75>,<75,43>}r2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>,<36,43>}r3={<25,36>,<36,43>,<43,48>,<48,57>,<57,64>,<64,75>,<75,82>} 解:⑴是集合结构;⑵是线性结构;⑶⑷是树型结构;⑸散列结构1.2用C语言函数编写下列每一个算法,并分别求出它们的时间复杂度。

数据结构C语言版部分习题及答案

数据结构C语言版部分习题及答案

国家计算机等级考试二级C语言公共基础知识总结第一章数据结构与算法1.1 算法算法:是指解题方案的准确而完整的描述。

算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。

算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。

特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。

算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。

指令系统:一个计算机系统能执行的所有指令的集合。

基本运算包括:算术运算、逻辑运算、关系运算、数据传输。

算法的控制结构:顺序结构、选择结构、循环结构。

算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。

算法复杂度:算法时间复杂度和算法空间复杂度。

算法时间复杂度是指执行算法所需要的计算工作量。

算法空间复杂度是指执行这个算法所需要的内存空间。

1.2 数据结构的基本基本概念数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。

数据结构是指相互有关联的数据元素的集合。

数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。

数据的存储结构有顺序、链接、索引等。

线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。

非线性结构:不满足线性结构条件的数据结构。

1.3 线性表及其顺序存储结构线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。

《数据结构——C语言描述》习题及答案 耿国华

《数据结构——C语言描述》习题及答案 耿国华

第1章绪论习题一、问答题1. 什么是数据结构?2. 四类基本数据结构的名称与含义.3. 算法的定义与特性。

4. 算法的时间复杂度。

5. 数据类型的概念。

6. 线性结构与非线性结构的差别.7. 面向对象程序设计语言的特点.8. 在面向对象程序设计中,类的作用是什么?9. 参数传递的主要方式及特点。

10. 抽象数据类型的概念。

二、判断题1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。

2. 算法就是程序.3. 在高级语言(如C、或PASCAL)中,指针类型是原子类型。

三、计算下列程序段中X=X+1的语句频度for(i=1;i<=n;i++)for(j=1;j〈=i;j++)for(k=1;k<=j;k++)x=x+1;[提示]:i=1时:1 = (1+1)×1/2 = (1+12)/2i=2时:1+2 = (1+2)×2/2 = (2+22)/2i=3时:1+2+3 = (1+3)×3/2 = (3+32)/2…i=n时:1+2+3+……+n = (1+n)×n/2 = (n+n2)/2f(n)= [ (1+2+3+……+n) + (12 + 22 + 32 + …… + n2 )] / 2=[ (1+n)n/2 + n(n+1)(2n+1)/6 ] / 2=n(n+1)(n+2)/6=n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n))= O(n3)四、试编写算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。

注意:本题中的输入a i(i=0,1,…,n), x和n,输出为P n(x0)。

通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。

数据结构(C语言版)第一二章习题答案

数据结构(C语言版)第一二章习题答案

抽出时间去学习,凡事从小做起,不怕单调和重复,长期的积累坚持,想不成功,也难。

第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型2.试举一个数据结构的例子叙述其逻辑结构和存储结构两方面的含义和相互关系3.简述逻辑结构的四种基本关系并画出它们的关系图4.存储结构由哪两种基本的存储方法实现?5.选择题(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)以下数据结构中()是非线性数据结构A.树 B.字符串 C.队 D.栈6.试分析下面各程序段的时间复杂度(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+......+1= n(n-1)/2所以执行时间为O(n2)(6)O()第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100每个元素的长度为2则第5个元素的地址是()A.110 B.108 C.100 D.120 (2)在n个结点的顺序表中算法的时间复杂度是O(1)的操作是()A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤i≤n)D.将n个结点从小到大排序(3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变平均要移动的元素个数为()A.8 B.63.5 C.63 D.7(4)链接存储的存储结构所占存储空间()A.分两部分一部分存放结点值另一部分存放表示结点间关系的指针B.只有一部分存放结点值C.只有一部分存储表示结点间关系的指针D.分两部分一部分存放结点值另一部分存放结点所占单元数(5)线性表若采用链式存储结构时要求内存中可用存储单元的地址()A.必须是连续的 B.部分地址必须是连续的C.一定是不连续的 D.连续或不连续都可以(6)线性表L在()情况下适用于使用链式结构实现A.需经常修改L中的结点值B.需不断对L进行删除插入C.L中含有大量的结点D.L中结点结构复杂(7)单链表的存储密度()A.大于1 B.等于1 C.小于1 D.不能确定(8)将两个各有n个元素的有序表归并成一个有序表其最少的比较次数是()A.n B.2n-1 C.2n D.n-1(9)在一个长度为n的顺序表中在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动()个元素A.n-i B.n-i+1 C.n-i-1 D.i(10) 线性表L=(a1a2......an)下列说法正确的是()A.每个元素都有一个直接前驱和一个直接后继B.线性表中至少有一个元素C.表中诸元素的排列必须是由小到大或由大到小D.除第一个和最后一个元素外其余每个元素都有一个且仅有一个直接前驱和直接后继(11) 若指定有n个元素的向量则建立一个有序单链表的时间复杂性的量级是()A.O(1) B.O(n) C.O(n2) D.O(nlog2n)(12) 以下说法错误的是()A.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低B.顺序存储的线性表可以随机存取C.由于顺序存储要求连续的存储区域所以在存储管理上不够灵活D.线性表的链式存储结构优于顺序存储结构(13) 在单链表中要将s所指结点插入到p所指结点之后其语句应为()A.s->next=p+1; p->next=s;B.(*p).next=s; (*s).next=(*p).next;C.s->next=p->next; p->next=s->next;D.s->next=p->next; p->next=s;(14) 在双向链表存储结构中删除p所指的结点时须修改指针()A.p->next->prior=p->prior; p->prior->next=p->next;B.p->next=p->next->next; p->next->prior=p;C.p->prior->next=p; p->prior=p->prior->prior;D.p->prior=p->next->next; p->next=p->prior->prior;(15) 在双向循环链表中在p指针所指的结点后插入q所指向的新结点其修改指针的操作是()A.p->next=q; q->prior=p; p->next->prior=q; q->next=q;B.p->next=q; p->next->prior=q; q->prior=p; q->next=p->next;C.q->prior=p; q->next=p->next; p->next->prior=q; p->next=q;D.q->prior=p; q->next=p->next; p->next=q; p->next->prior=q;2.算法设计题(1)将两个递增的有序链表合并为一个递增的有序链表要求结果链表仍使用原来两个链表的存储空间不另外占用其它的存储空间表中不允许有重复的数据void MergeList_L(LinkList &LaLinkList &LbLinkList &Lc){pa=La->next; pb=Lb->next;Lc=pc=La; //用La的头结点作为Lc的头结点while(pa && pb){if(pa->data<pb->data){ pc->next=pa;pc=pa;pa=pa->next;}else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;} else {// 相等时取La的元素删除Lb的元素pc->next=pa;pc=pa;pa=pa->next;q=pb->next;delete pb ;pb =q;}}pc->next=pa?pa:pb; //插入剩余段delete Lb; //释放Lb的头结点}(2)将两个非递减的有序链表合并为一个非递增的有序链表要求结果链表仍使用原来两个链表的存储空间不另外占用其它的存储空间表中允许有重复的数据void union(LinkList& LaLinkList& LbLinkList& Lc) {pa = La->next; pb = Lb->next; // 初始化Lc=pc=La; //用La的头结点作为Lc的头结点Lc->next = NULL;while ( pa || pb ) {if ( !pa ) { q = pb; pb = pb->next; }else if ( !pb ) { q = pa; pa = pa->next; }else if (pa->data <= pb->data ) { q = pa; pa = pa->next; } else { q = pb; pb = pb->next; }q->next = Lc->next; Lc->next = q; // 插入}delete Lb; //释放Lb的头结点}(3)已知两个链表A和B分别表示两个集合其元素递增排列请设计算法求出A与B的交集并存放于A链表中void Mix(LinkList& LaLinkList& LbLinkList& Lc) {pa=la->next;pb=lb->next;∥设工作指针pa和pb;Lc=pc=La; //用La的头结点作为Lc的头结点while(pa&&pb)if(pa->data==pb->data)∥交集并入结果表中{ pc->next=pa;pc=pa;pa=pa->next;u=pb;pb=pb->next; delete u;}else if(pa->data<pb->data) {u=pa;pa=pa->next; delete u;} else {u=pb; pb=pb->next; delete u;}while(pa){ u=pa; pa=pa->next; delete u;}∥释放结点空间while(pb) {u=pb; pb=pb->next; delete u;}∥释放结点空间pc->next=null;∥置链表尾标记delete Lb; ∥注:本算法中也可对B表不作释放空间的处理(4)已知两个链表A和B分别表示两个集合其元素递增排列请设计算法求出两个集合A和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合)并以同样的形式存储同时返回该集合的元素个数void Difference(LinkedList AB*n)∥A和B均是带头结点的递增有序的单链表分别存储了一个集合本算法求两集合的差集存储于单链表A中*n是结果集合中元素个数调用时为0{p=A->next;∥p和q分别是链表A和B的工作指针q=B->next; pre=A;∥pre为A中p所指结点的前驱结点的指针while(p!=null && q!=null)if(p->data<q->data){pre=p;p=p->next;*n++;} ∥ A链表中当前结点指针后移else if(p->data>q->data)q=q->next;∥B链表中当前结点指针后移else {pre->next=p->next;∥处理AB中元素值相同的结点应删除u=p; p=p->next; delete u;} ∥删除结点(5)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C其中B表的结点为A表中值小于零的结点而C表的结点为A表中值大于零的结点(链表A的元素类型为整型要求B、C表利用A表的结点)(6)设计一个算法通过一趟遍历在单链表中确定值最大的结点ElemType Max (LinkList L ){if(L->next==NULL) return NULL;pmax=L->next; //假定第一个结点中数据具有最大值p=L->next->next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p;p=p->next;}return pmax->data;(7)设计一个算法通过遍历一趟将链表中所有结点的链接方向逆转仍利用原表的存储空间void inverse(LinkList &L) {// 逆置带头结点的单链表 Lp=L->next; L->next=NULL;while ( p) {q=p->next; // q指向*p的后继p->next=L->next;L->next=p; // *p插入在头结点之后p = q;}}(8)设计一个算法删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数其值可以和表中的元素相同也可以不同)void delete(LinkList &Lint minkint maxk) {p=L->next; //首元结点while (p && p->data<=mink){ pre=p; p=p->next; } //查找第一个值>mink的结点 if (p) {while (p && p->data<maxk) p=p->next;// 查找第一个值≥maxk 的结点q=pre->next; pre->next=p; // 修改指针while (q!=p){ s=q->next; delete q; q=s; } // 释放结点空间 }//if}(9)已知p指向双向循环链表中的一个结点其结点结构为data、prior、next三个域写出算法change(p)交换p所指向的结点和它的前缀结点的顺序知道双向循环链表中的一个结点与前驱交换涉及到四个结点(p结点前驱结点前驱的前驱结点后继结点)六条链void Exchange(LinkedList p)∥p是双向循环链表中的一个结点本算法将p所指结点与其前驱结点交换{q=p->llink;q->llink->rlink=p;∥p的前驱的前驱之后继为pp->llink=q->llink;∥p的前驱指向其前驱的前驱q->rlink=p->rlink;∥p的前驱的后继为p的后继q->llink=p;∥p与其前驱交换p->rlink->llink=q;∥p的后继的前驱指向原p的前驱p->rlink=q;∥p的后继指向其原来的前驱}∥算法exchange结束(10)已知长度为n的线性表A采用顺序存储结构请写一时间复杂度为O(n)、空间复杂度为O(1)的算法该算法删除线性表中所有值为item的数据元素[题目分析] 在顺序存储的线性表上删除元素通常要涉及到一系列元素的移动(删第i个元素第i+1至第n个元素要依次前移)本题要求删除线性表中所有值为item的数据元素并未要求元素间的相对位置不变因此可以考虑设头尾两个指针(i=1j=n)从两端向中间移动凡遇到值item的数据元素时直接将右端元素左移至值为item的数据元素位置void Delete(ElemType A[ ]int n)∥A是有n个元素的一维数组本算法删除A中所有值为item的元素{i=1;j=n;∥设置数组低、高端指针(下标)while(i<j){while(i<j && A[i]!=item)i++;∥若值不为item左移指针if(i<j)while(i<j && A[j]==item)j--;∥若右端元素值为item 指针左移if(i<j)A[i++]=A[j--];}[算法讨论] 因元素只扫描一趟算法时间复杂度为O(n)删除元素未使用其它辅助空间最后线性表中的元素个数是j。

算法与数据结构C语言版课后习题参考答案(机械工业出版社)1绪论习题详细答案

算法与数据结构C语言版课后习题参考答案(机械工业出版社)1绪论习题详细答案

第1章概论习题参考答案一、基础知识题1.简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。

【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。

数据元素是数据的基本单位。

在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。

数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。

每一种计算机程序设计语言都定义有自己的数据类型。

“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。

作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。

而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。

数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。

数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。

数据结构在计算机中的表示称为物理结构,又称存储结构。

是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。

逻辑结构与计算机无关。

算法是对特定问题求解步骤的一种描述,是指令的有限序列。

其中每一条指令表示一个或多个操作。

一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。

2.数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。

(也可以分为集合、线性结构、树形结构和图形即网状结构)。

逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。

(2)逻辑结构与数据元素的相对位置无关。

(3)逻辑结构与所含数据元素的个数无关。

数据结构第1章习题参考答案

数据结构第1章习题参考答案

习题知识点:数据结构的概念一、选择题1① 数据结构一般是研究数据的( A )及它们之间的彼此联系。

A.存储和逻辑结构B.存储结构C.顺序结构D.链式存储结构2① 数据在计算机存储器内表示时,物理地址与逻辑地址相同而且是持续的,称之为( C )A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构3① 线性结构是数据元素之间存在一种(D )。

A.一对多关系 B. 多对多关系 C 多对一关系D 一对一关系4① 计算机内部数据处置的大体单位是( B )。

A. 数据B.数据元素 C.数据项D.数据库5② 从逻辑上可以把数据结构分为(C )两大类。

【武汉交通科技大学1996】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构二、填空题1① 数据结构按逻辑结构可分为四大类,它们别离是集合、线性、树、图。

2① 数据的存储结构可用四种大体的存储方式表示,它们别离是顺序、链式、散列、索引。

三、判断题(F)1① 数据元素是数据的最小单位。

(T )2① 记录是数据处置的最小单位。

(F )3① 数据的逻辑结构是指数据的各数据项之间的逻辑关系。

(T )4① 数据的物理结构是指数据在计算机内的实际存储形式。

四、简答题1① 简述什么是数据结构?2② 数据结构与数据类型有什么区别? 【哈尔滨工业大学2021】知识点:算法的概念一、选择题1① 计算机算法指的是(C )A.计算方式B.排序方式C.解决问题的有限运算序列D.调度方式2① 算法分析的目的是((1)C ),算法分析的两个主要方面((2)A ).(1)A.找出数据结构的合理性B.研究算法中的输入与输出的关系C.分析算法的效率以求改良D.分析算法的易查性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性3② 设语句X++的时间是单位时间,则语句:for(i=1;i<=n;i++)x++;时间复杂度为(C )。

《数据结构——C语言描述》习题及答案 耿国华

《数据结构——C语言描述》习题及答案 耿国华

第1章绪论习题一、问答题1. 什么是数据结构?2. 四类基本数据结构的名称与含义。

3. 算法的定义与特性。

4. 算法的时间复杂度。

5. 数据类型的概念。

6. 线性结构与非线性结构的差别。

7. 面向对象程序设计语言的特点。

8. 在面向对象程序设计中,类的作用是什么?9. 参数传递的主要方式及特点。

10.抽象数据类型的概念。

二、判断题1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。

2. 算法就是程序。

3. 在高级语言(如C、或PASCAL)中,指针类型是原子类型。

三、计算下列程序段中XX1 的语句频度fori1iltni forj1jltij fork1kltjk xx1 提示:i1 时:1 11×1/2 112/2 i2 时:12 12×2/2 222/2 i3 时:123 13×3/2 332/2 … in 时:123……n 1n×n/2 nn2/2 fn 123……n 12 22 32 …… n2 / 2 1nn/2 nn12n1/6 / 2 nn1n2/6 n3/6n2/2n/3区分语句频度和算法复杂度:Ofn On3 四、试编写算法求一元多项式Pnxa0a1xa2x2a3x3…anxn 的值Pnx0,并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。

注意:本题中的输入aii01…n x 和n,输出为Pnx0.通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递;(2)通过全局变量隐式传递。

试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。

提示:floatPolyValuefloat a float x int n…… 核心语句:p1 x 的零次幂s0 i 从0 到n 循环ssaip ppx 或:px x 的一次幂sa0 i 从1 到n 循环ssaip ppx 实习题设计实现抽象数据类型“有理数”。

数据结构(C语言版)1800道题及答案[完整版]

数据结构(C语言版)1800道题及答案[完整版]

数据结构1800例题与答案第一章绪论一、选择题(每小题2分)1.算法的计算量的大小称为计算的( B )。

【北京邮电大学2000 二、3 (20/8分)】A.效率B.复杂性C.现实性D.难度2.算法的时间复杂度取决于(C)。

【中科院计算所1998 二、1 (2分)】A.问题的规模B.待处理数据的初态C.A和B D.都不是3.计算机算法指的是(①C ),它必须具备(② B )这三个特性。

①A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法②A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是(B )。

【中山大学1998 二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.5.下面关于算法说法错误的是( D )【南京理工大学2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是(C )【南京理工大学2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。

【武汉交通科技大学1996 一、4(2分)】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是( D )。

【北方交通大学2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构( D )?【北方交通大学2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?(A)【北方交通大学2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为(C)【北京工商大学2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A.O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中n为正整数,则最后一行的语句频度在最坏情况下是(D)A. O(n)B. O(nlogn)C. O(n3)D. O(n2) 【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型(D)【中山大学1999 一、3(1分)】A.栈B.广义表C.有向图D.字符串14.以下数据结构中,(A)是非线性数据结构【中山大学1999 一、4】A.树B.字符串C.队D.栈15. 下列数据中,(C)是非线性数据结构。

数据结构(C语言版)第1章习题答案

数据结构(C语言版)第1章习题答案

数据结构(C语言版)第1章习题答案1第一章概论自测题答案一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。

2. 数据结构被形式地定义为(D, R ),其中D 是数据元素的有限集合,R 是D 上的关系有限集合。

3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。

4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。

5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。

7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。

8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。

9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。

10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。

11. 一个算法的效率可分为时间效率和空间效率。

二、单项选择题( B )1. 非线性结构是数据元素之间存在一种:A )一对多关系B )多对多关系C )多对一关系D )一对一关系( C )2. 数据结构中,与所使用的计算机无关的是数据的结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )3. 算法分析的目的是:A) 找出数据结构的合理性B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性( C )5. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法( B )6. 计算机算法必须具备输入、输出和等5个特性。

数据结构第一章参考答案

数据结构第一章参考答案

习题11.填空题(1)(___________)是指数据之间的相互关系,即数据的组织形式。

通常人们认为它包含三个方面的内容,分别为数据的(___________)、(___________)及其运算。

答案:数据结构逻辑结构存储结构(2)(___________)是数据的基本单位,在计算机程序中通常作为一个整体进行处理。

答案:数据元素(3)数据元素之间的不同逻辑关系代表不同的逻辑结构,常见的逻辑结构有(___________)、(___________)、(___________)和(___________)。

答案:集合线形结构树结构图结构(4)数据的存储结构考虑的是如何在计算机中存储各个数据元素,并且同时兼顾数据元素间的逻辑关系。

基本的存储结构通常有两大类:(___________)和(___________)。

答案:顺序存储结构链式存储结构(5)通常一个问题可以有多种不同的算法,但每个算法必须满足5个准则:输入、输出、(___________)、(___________)和(___________)。

答案:有穷性确定性可行性(6)通常通过衡量算法的(___________)复杂度和(___________)复杂度来判定一个算法的好坏。

答案:时间空间(7)常见时间复杂性的量级有:常数阶O(___________)、对数阶O(___________)、线性阶O(___________)、线性对数阶O(___________)、平方阶O(___________)、和指数阶O(___________)。

通常认为,当问题规模较大时,具有(___________)量级的算法是不可计算的。

答案:1 log n n n log n n2 2n指数(8)STL提供的标准容器有顺序容器、(___________)和(___________)。

答案:排序容器哈希容器(9)算法可认为是STL的精髓,所有算法都是采用(___________)的形式提供的。

数据结构第一章概论1答案

数据结构第一章概论1答案

第一章概论自测题答案一、填空题1. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。

2. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。

3. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。

4. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

5.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。

6. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。

7. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。

8.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。

9. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。

10. 一个算法的效率可分为时间效率和空间效率。

11.任何一个C程序都由一个主函数和若干个被调用的其它函数组成。

二、单项选择题(B)1. 非线性结构是数据元素之间存在一种:A)一对多关系B)多对多关系C)多对一关系D)一对一关系( C )2. 数据结构中,与所使用的计算机无关的是数据的结构;A) 存储B) 物理C) 逻辑D) 物理和存储(C)3. 算法分析的目的是:A) 找出数据结构的合理性B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进D) 分析算法的易懂性和文档性(A)4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性B) 正确性和简明性C) 可读性和文档性D) 数据复杂性和程序复杂性( C )5. 计算机算法指的是:A) 计算方法B) 排序方法C) 解决问题的有限运算序列D) 调度方法(B)6. 计算机算法必须具备输入、输出和等5个特性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章概论自测题答案姓名班级
一、填空题(每空1分,共33分)
1. 一个计算机系统包括硬件系统和软件系统两大部分。

2. 一台计算机中全部程序的集合,称为这台计算机的软件资源/(系统)。

3. 计算机软件可以分为系统软件和应用软件两大类。

科学计算程序包属于应用软件,诊断程序属于系统软件(工具)。

4. 一种用助忆符号来表示机器指令的操作符和操作数的语言是汇编语言。

5. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。

6. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。

7. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。

8. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。

9. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

10.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。

11. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。

12. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。

13.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。

14. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。

15. 一个算法的效率可分为时间效率和空间效率。

16.〖00年省统考〗任何一个C程序都由一个主函数和若干个被调用的其它函数组成。

17. 【00年省统考题】变量一经说明,就确定该变量的取值范围(即存储单元)及确定变量所允许的运算。

二、单项选择题(每小题1分,共15分)
(B ) 1. 通常所说的主机是指∶
A) CPU B) CPU和内存C) CPU、内存与外存D) CPU、内存与硬盘
(C )2.在计算机内部,一切信息的存取、处理和传送的形式是∶
A)ACSII码B) BCD码C)二进制D)十六进制
(D)3.软件与程序的区别是∶
A)程序价格便宜、软件价格昂贵;
B)程序是用户自己编写的,而软件是由厂家提供的;
C) 程序是用高级语言编写的,而软件是由机器语言编写的;
D) 软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序只是软件的一部分。

(C)4.所谓“裸机”是指∶
A) 单片机B)单板机C) 不装备任何软件的计算机D) 只装备操作系统的计算机
(D)5. 应用软件是指∶
A)所有能够使用的软件B) 能被各应用单位共同使用的某种软件
C)所有微机上都应使用的基本软件D) 专门为某一应用目的而编制的软件(*A)6. 〖00年省统考〗C语言中的常量可分为整型常量、实型常量、字符型常量及(枚举)四种。

(A)符号常量(B)长整型常量(C)逻辑常量(D)二进制整数
(*C)7. 编译程序的功能是∶
A)发现源程序中的语法错误 B)改正源程序中的语法错误
C)将源程序编译成目标程序D)将某一高级语言程序翻译成另一种高级语言程序
(A)8. 系统软件中最重要的是∶
A) 操作系统B) 语言处理系统C) 工具软件D) 数据库管理系统
(C)9.可移植性最好的计算机语言是∶
A) 机器语言B)汇编语言C) 高级语言D) 自然语言
(B)10. 非线性结构是数据元素之间存在一种:
A)一对多关系B)多对多关系C)多对一关系D)一对一关系
(C )11. 数据结构中,与所使用的计算机无关的是数据的结构;
A)存储B)物理C)逻辑D)物理和存储
(C)12. 算法分析的目的是:
A)找出数据结构的合理性B)研究算法中的输入和输出的关系
C) 分析算法的效率以求改进D)分析算法的易懂性和文档性
(A)13. 算法分析的两个主要方面是:
A)空间复杂性和时间复杂性B)正确性和简明性
C)可读性和文档性D)数据复杂性和程序复杂性
(C )14. 计算机算法指的是:
A)计算方法B) 排序方法C)解决问题的有限运算序列D)调度方法
(B)15. 计算机算法必须具备输入、输出和等5个特性。

A)可行性、可移植性和可扩充性B)可行性、确定性和有穷性
C)确定性、有穷性和稳定性D)易读性、稳定性和安全性
三、简答题(每小题3分,共9分)
1.我们知道计算机只能执行机器指令,为什么它能运行用汇编语言和高级语言编写的程
序?
答:靠汇编程序将汇编语言或高级语言翻译转换为目标程序(即机器语言)。

2.【严题集1.2②】数据结构和数据类型两个概念之间有区别吗?
答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。

数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。

3. 简述线性结构与非线性结构的不同点。

答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。

四、〖00年统考题〗阅读下列C程序段,写出相应的执行结果(每小题4分,共8分)
1.printf(“Input x”);
scanf(“%d”,&x);
if (x<=30)
if(x>20) y=x;
else if (x>10) y=2*x;
if (x>0&&x<30)printf(“x=%d,y=%d”,x,y);
else printf(“输入数据错!”);
试写出当x分别为18,8时的执行结果。

答:运行结果为:x=18,y=36
x=8,y=运行前的值,且从x=30开始为数据错2. longint fact(n)
int n;
{long f;
if(n>1)f=n*fact(n-1);
else f=1;
return(f);
}
main()
{int n;
long y;
n=5;
y=fact(n);
五、【严题集1.8④】分析下面各程序段的时间复杂度(每小题5分,共20分)
六、设有数据逻辑结构S=(D,R),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关系R,哪些结点是开始结点,哪些结点是终端结点?(每小题5分,共15分)
1. 【严蔚敏习题集P7 1.3②】
D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }
答: d1→d2→d3→d4d1—无直接前驱,是首结点 d4—无直接后继是尾结点
2.D={d1,d2,…,d9}
R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) }
答:此图为树形结构 d1—无直接前驱,是根结点 d2,d5,d7,d9—无直接后继是叶子结点
3.D={d1,d2,…,d9}
R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7),(d4,d6)}
答:此图为图形结构 d1,d2—无直接前驱,是开始结点 d6,d7—无直接后继是终端结点
(2) (3)
2. s=0;
fori=0; i<n; i++)
for(j=0; j<n; j++)
s+=B[i][j];
sum=s;
答:O(n2)
1. for (i=0; i<n; i++)
for (j=0; j<m; j++)
A[i][j]=0;
答:O(m*n)
3.x=0;
for(i=1; i<n; i++)
for (j=1; j<=n-i; j++)
x++;
解:因为x++共执行了n-1+n-2+ (1)
n(n-1)/2,所以执行时间为O(n2)
4. i=1;
while(i<=n)
i=i*3;
答:O(log3n)。

相关文档
最新文档