第一章数据结构概论习题

合集下载

数据结构课后习题及解析第一章

数据结构课后习题及解析第一章

数据结构课后习题及解析第一章第一章习题一、问答题1.什么是数据结构?2.叙述四类基本数据结构的名称与含义。

3.叙述算法的定义与特性。

4.叙述算法的时间复杂度。

5.叙述数据类型的概念。

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

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

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

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

二、判断题(在各题后填写“√”或“某”)1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。

()2.算法就是程序。

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

()三、计算下列程序段中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;四、试编写算法,求一元多项式Pn(某)=a+a某+a2某2+a3某3+…an某n的值Pn(某),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

注意:本题中的输入ai(i=0,1,…,n),某和n,输出为Pn(某)。

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

(2)通过全局变量隐式传递。

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

实习题设计实现抽象数据类型“有理数”。

基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。

第一章答案1.3计算下列程序中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;【解答】某=某+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/61.4试编写算法,求pn(某)=a0+a1某+a2某2+…….+an某n的值pn(某0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

《数据结构》第一章 绪论 习题

《数据结构》第一章  绪论    习题

《数据结构》第一章绪论习题1-1 什么叫数据?什么叫数据元素?什么叫数据项?1-2 什么叫数据的物理结构?什么叫数据的存储结构?什么叫数据的操作?1-3 数据结构课程主要讨论哪三个方面的问题?1-4 分别画出线性结构、树结构和图结构的逻辑示意图。

1-5 什么叫类型?什么叫数据类型?什么叫抽象数据类型?1-6 怎样利用抽象数据类型设计大型软件?1-7 什么叫算法?算法的5个性质是什么?1-8 根据算法的性质解释算法和程序的区别?1-9 评判算法的优劣有哪几种方法?1-10 什么叫算法的时间复杂度?怎样表示算法的时间复杂度?1-11 设n为已在算法前边定义的整数类型,并已知n为正整数,分析下列各算法中加下划线语句的执行次数,并给出各算法的时间复杂度T(n)。

(1) int i = 1, k = 0;while (i < n-1){k = k + 10 * i; i = i + 1;}(2) int i = 1, k = 0;do{k = k + 10 * i; i = i + 1;}while (i != n);(3) int i = 1, j = 1;while (i <= n && j <= n){i = i + 1; j = j + 1;}(4) int x = n; /* n > 1 */int y = 0;while(x >= (y+1)*(y+1))y++;(5) int i, j, k, x = 0;for (i = 0; i < n; i++)for (j = 0; j < i; j++)for (k = 0; k < j; k++)x = x + 2;1-12 设求解同一个问题有三种算法,三种算法各自的时间复杂度分别为O(n2),O(2n)和O(nlg n),哪种算法最可取?为什么?1-13 按增长率从小到大的顺序排列下列各组函数:(1)2100,(3/2)n,(2/3)n,(4/3)n(2)n,n3/2,n2/3,n!,n n(3)lb n,n×lb n,n lb n,n*1-14 下面是几个典型的时间复杂度函数估值问题:(1)当n为正整数时,n取何值能使2n> n3;(2)说明2n+ n3是O(2n);(3)给出5(n2 + 6) / (n + 3) + 7lg n的O值估计。

数据结构 习题第一章

数据结构 习题第一章

习题1.1选择题1、数据结构是一门研究计算机解决实际问题中( A )以及它们之间的( B )和运算等的学科。

(1)A、数据元素 B、计算方法 C、逻辑存储 D、数据映像(2)A、结构 B、关系 C、运算 D、算法2、数据结构可以用二元组来表示,它包括( A )集合K和K上的( C )集合R。

A、数据元素B、存储结构C、元素之间的关系D、逻辑结构3、数据结构在计算机内存中的表示是指( A )。

A、数据的存储结构B、数据结构C、数据的逻辑结构D、数据元素之间的关系4、在数据结构中,与所使用的计算机无关的是数据的( A )结构。

A、逻辑B、存储C、逻辑和存储D、物理5、以下说法中正确的是( D )。

A、数据元素是数据的最小单位B、数据项是数据的基本单位C、数据结构是带结构的各数据项的集合D、一些表面上很不相同的数据可以有相同的逻辑结构1.2 填空题1、线性结构中元素之间存在(一对一)关系,树型结构中元素之间存在(一对多)关系,图型结构中元素之间存在(多对多)关系。

2、数据结构是研究数据的(逻辑结构)和(存储结构)以及它们之间的相互关系,并对这种结构定义相应的操作,设计出相应的(算法),而确保经过这些运算后所得到的新结构是原来的结构类型。

3、一个算法的时间复杂度是该算法包含的(简单操作次数)的多少,它是一个算法运行时间的(相对量度),一个算法的空间复杂度是指该算法在运行过程中临时占用的(存储空间)的大小。

4、一个算法的时间复杂度通常用问题规模的(最高数量级)形式表示,当一个算法的时间复杂度与问题的n大小无关时,则表示为(O(1));成正比时,表示为(O(n)),成平方时,则表示为(O(n2))。

5、数据结构、数据元素和数据项在计算机中的映射(或表示)分别称为存储结构、结点和数据域。

这句话是(正确)。

(填写正确或错误)1.3 应用题1、给定的两个数据结构如图1-1所示,回答以下问题:(a)图1-1 用图形表示法表示的两种数据结构(1) 用二元组表示法给出该数据结构的逻辑结构?(2)判断属于哪一种逻辑结构? 解:(a) D1=(K ,R ),其中: K={1,2,3,4,5,6} R={r}r={<1,2>,<2,3>,<3,4>,<4,5>,<5,6>} 线性结构 (b )D2=(K ,R ),其中: K={a,b,c,d,e,f,g,h,i} R={r}r={<a,b>,<a,c>,<c,d>,<c,e>,<d,f>,<d,g>,<e,g>,<e,h>,<g,i>}图型结构 2、对下列几种用二元组表示的数据结构,画出对应的逻辑结构图形表示,并指出属于哪一种结构。

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

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

数据结构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]的地址。

数据结构第1章-答案

数据结构第1章-答案

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

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

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

04、数据结构按逻辑结构可分为两大类,它们分别是(线性结构)和(非线性结构)。

05、线性结构中元素之间存在(一对一)关系,树形结构中元素之间存在(一对多)关系,图形结构中元素之间存在(多对多)关系。

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

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

08、在图形结构中,每个结点的前驱结点数和后续结点数可以(任意多个)。

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

10、对于给定的n个元素,可以构造出的逻辑结构有(集合)、(线性结构)、(树形结构)、(图状结构)四种。

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

12、一个算法的效率可分为(时间)效率和(空间)效率。

13、数据结构中评价算法的两个重要指标是算法的(时间复杂度)和(空间复杂度)。

14、一个数据结构在计算机中的(映射)称为存储结构。

15、算法的五个重要特性是(有穷性)、(确定性)、(可行性)、输入、输出。

16、已知如下程序段for (i=n; i>=1; i--) //语句1{ x++; //语句2for (j=n; j>=i; j--) //语句3y++; //语句4}语句 1 执行的频度为(n+1);语句2执行的频度为(n);语句3执行的频度为(n(n+3)/2);语句4执行的频度为(n(n+1)/2)。

数据结构第一章习题答案

数据结构第一章习题答案

• 1.8 设n为正整数,试确定下列各程序段中前置 以记号@的语句的频度
• (7) x=n;y=0;
• while( x>=(y+1)*(y+1)) {
• @y++;
•}

• (8) x=91; y=100;
• while (y>0) {

@ if (x>100) { x-=100;y--}

else x++;
(2)用布尔函数实现算法。其优点是,将错误 返回给调用环境,由调用环境决定程序的下一 步走向。
(3)在函数的参数表中设置整形变量。其优点 同上,并可判别多种类型的错误。
• 1.7 在程序设计中,可采用下列三 种方法实现输入和输出:
• (1)通过scanf和printf语句; • (2)通过函数的参数显式传递 • (3)通过全局变量隐式传递。 • 试讨论这三种方法的优缺点。
下面我们模仿例1-7写出COMPLEX 抽象数据类型的表示和实现
• //类型定义如下:
• typedef struct cmptp{

float realpart; //实部

float imagpart; //虚部

} Compl;
• //-----基本操作的函数原型说明-----



• void Create( float x,float y,Compl &z); • //生成一个实部为x,虚部为y的复数z •{ • z.realpart=x; • z.imagpart=y; • }//Create • • void Add(Compl z1,Compl z2,Compl &sum) • //求得和sum=z1+z2=(x1+x2)+i(y1+y2). •{ • sum.realpart=z1.realpart+z2.realpart; • sum.imagpart=z1.imagpart+z2.imagpart; • }//Add

数据结构试题答案

数据结构试题答案

第一章概论一、选择题1、研究数据结构就是研究(D )。

A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作)2、算法分析的两个主要方面是( A )。

A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。

(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串)A. 图B. 树C. 广义表(线性表的推广)D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。

A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。

for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;A. O(m2)B. O(n2)C. O(m*n)D. O(m+n)6、算法是(D )。

为了解决某一问题而规定的一个有限长的操作序列A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。

A. O(n)B. O(nlog2n)C. O(n2)D. O(log2n)8、下面程序段的时间复杂度为( C )。

i=1;while(i<=n)i=i*3;A. O(n)B. O(3n)C. O(log3n)D. O(n3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的(B )和运算等的学科。

第1章 数据结构习题讲解

第1章 数据结构习题讲解

子集的集合。例如,若S = {a,b,c},则Powerset (S) = { {} , {a} , {b} , {c} , {a , b} , {a , c} , {b , c} , {a , b , c} } 请给出一个计算幂集Powerset (S) 的递归算法。 递归算法的思想
递归算法指的是包含递归过程的算法,递归过程指的是
。。。 。。(2) 。。。 。。(3)
命题得证
习题 2-4
算法 IBS(A,1,n.fmax,fmin) //计算最大最小元 IBS1 [初始化] fmin ← fmax ← A[1]. CREATS(S). S (1,n).
IBS2 [迭代过程] WHILE (S ≠ NULL) ( (l,r) S. IF r-l =0 THEN ( fmax ← max(fmax, A[r]). fmin ← min(fmin, A[r]). ) IF r – l =1 THEN (IF A[l] < A[r] THEN ( fmax ← max(fmax, A[r]). fmin ← min(fmin, A[l]). ) ELSE ( fmax ← max(fmax, A[l]). fmin ← min(fmin, A[r]). ) ) mid ← (l r ) / 2 S (1,mid). S (mid+1,n). ) ▌
P(S)={{},{a},{b},{c},{a,b} 8 …{a,b,c}}
S={a,b,c,d} 4
P(S)={{},{a},{b},{c},{d}{a 16 24 b},{bc}…{a,b,c,d}}
习题 2-1
| P(S) | = | P(S-1) | * 2
| P(S) |=2n
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章概论习题
一、选择题
1.数据结构是具有【B 】的数据元素的集合。

A.相同性质B.相互关系C.相同运算D.数据项2.在计算机的存储结构中,逻辑上相邻的结点存储在物理位置上也相邻的连续存储单元里,称之为【 B 】。

A.逻辑结构B.顺序存储结构C.链式存储结构D.散列存储结构3.语句for(i=1;i<=n;i++) x++;的时间复杂度为【B 】。

A.O(1) B.O(n) C.O(n2) D.O(n3)
4.下面不属于数据的存储结构的是【D 】。

A.散列存储B.链式存储C.索引存储D.压缩存储5.数据结构研究的是数据的【 A 】及它们之间的相互关系。

A.存储结构和逻辑结构B.存储和抽象C.理想与抽象D.理想与逻辑6.下面程序段的时间复杂度是【D 】。

for(i=0;i<2*n;i++)
for(j=1;j<3*n;j++)
A[i][j]=0;
A.O(n) B.O(5n) C.O(6n2) D.O(n2) 7.数据的逻辑结构有两大类,分别是【 B 】。

A.顺序存储结构和链式存储结构B.线性结构和非线性结构
C.压缩结构和非压缩结构D.有序结构和无序结构
8.以下与数据的存储结构无关的术语是【D 】。

A.循环队列B.链表C.哈希表D.栈
9.算法分析的两个主要方面是【A 】。

A.空间复杂度和时间复杂度B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
10.下面程序段的时间复杂度是【D 】。

S=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
s=s+a[i][j];
A.O(1) B.O(m+n) C.O(log2mn) D.O(m*n) 11.能够输入计算机并能被计算机处理的符号统称为【A 】。

A.数据B.数据元素C.数据结构D.数据类型12.以下属于逻辑结构的是【C 】。

A.顺序表B.哈希表C.有序表D.单链表13.线性结构的数据元素之间存在着【A 】的关系。

A.一对一B.一对多C.多对一D.多对多14.对于数据结构,以下叙述中不正确的是【A 】。

A.相同的逻辑结构,对应的存储结构也必相同
B.数据结构由逻辑结构、存储结构和运算三方面组成
C.数据存储结构就是数据逻辑结构在存储器中的实现
D.对数据基本运算的实现与存储结构有关
15.下列程序的时间复杂度为【A 】。

i=0; s=0;
while(s<n)
{ i++;
s=s+ i;
}
A.O() B.O() C.O(n) D.O(n2) 16.下列说法正确的是【 C 】。

A.数据是数据元素的基本单位B.数据元素是数据项中不可分割的最小标识单位C.数据可由若干个数据元素构成D.数据项可由若干个数据元素构成
17.下列选项中,不属于线性结构特征的是【 D 】。

A.数据元素之间存在线性关系B.结构中只有一个开始结点
C.结构中只有一个终端结点D.每个结点都仅有一个直接前趋
18.下列叙述中,不正确的是【 A 】。

A.算法解决的只能是数值计算问题B.同一问题可以有多种不同算法C.算法的每一步操作都必须明确无歧义D.算法必须在执行有限步后结束
二、填空题
1.下面程序段的时间复杂度是O(n)。

i=1;
j=0;
while(i+j<=n)
if(i>j)
j++;
else
i++;
}
2.数据元素及其关系在计算机内的存储方式,称为数据的存储结构或物理结构。

3.一个算法的时间复杂度是该算法的时间耗费,它是该算法所求解问题规模n的函数。

4.下面算法的时间复杂度为O(n2) 。

void fun(int n)
{
int i,j,x=0;
for(i=1;i<n;i++)
for(j=n;j>=i+1;j--)
x++;
}
5.称算法的时间复杂度为O(f(n)),其含义是指算法的执行时间和f(n) 的数量级相同。

6.数据的逻辑结构描述数据元素之间的逻辑关系或抽象关系,与存储方式无关。

7.线性结构中,有且仅有一个开始结点和一个终端结点。

8.数据的链式存储结构的特点是借助指针表示数据元素之间的逻辑关系。

9.数据类型是一个值的集合以及在这些值上定义的一组操作的总称。

10.表示逻辑关系的存储结构可以有四种方式,即顺序存储方式、链式存储方式、索引存储方式和散列存储方式。

三、解答题
1.试举一个数据结构的例子,叙述其逻辑结构、存储结构两方面的内容。

答:以顺序表为例:
顺序表的逻辑结构:在数据元素非空的有限集合中,存在唯一的一个被称作“第一个”的数据元素。

存在唯一的一个被称作“最后一个”的数据元素,除第一个外,集合中每个数据元素均只有一个直接前趋,除最后一个外,集合中的每个数据元素均只有一个直接后继。

顺序表的存储结构:在内存中用一片连续的存储区域存储线性表的数据元素。

使逻辑上相邻的数据元素在物理存储时也相邻。

相关文档
最新文档