当前位置:文档之家› 数据结构和C 程序设计题库完整

数据结构和C 程序设计题库完整

数据结构和C  程序设计题库完整
数据结构和C  程序设计题库完整

《数据结构》

Part1

一.选择

1. 组成数据的基本单位是()

A)数据项 B)数据类型 C)数据元素 D)数据变量

2.算法分析的目的是()

A)找出数据结构的合理性 B)研究算法的输入/输出关系

C)分析算法的效率以求改进 D)分析算法的易读性

3.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是() A)O(1) B)0(n) C)O(n^2) D)O(nlog2n)

4.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是()

A)112 B)144 C)148 D)412

5.下面关于线性表的叙述中,错误的是()

A)顺序表使用一维数组实现的线性表 B)顺序表必须占用一片连续的存储单元.

C)顺序表的空间利用率高于链表 D)在单链表中,每个结点只有一个链域. 6.在需要经常查找结点的前驱与后继的情况下,使用()比较合适

A)单链表 B)双链表 C)顺序表 D)循环链表

7.队列通常采用的两种存储结构是()

A)顺序存储结构和链式存储结构 B)散列方式和索引方式

C)链表存储结构和线性存储结构 D)线性存储结构和非线性存储结构

8.在一个单链表中,若删除p所指结点的后继结点,则执行()

A)p->next=p->next->next;B)p=p->next;p->nex=p->next->next;

C)p->next=p->next; D)p=p->next->next;

9.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间

A)单链表 B)仅有头指针的单循环链表 C)双链表 D)仅有尾指针的单循环链表

10.按二叉树的定义,具有三个结点的二元树共有()种形态。

A)3 B)4 C)5 D)6

11.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序()A)发生改变 B)不发生改变 C)不能确定 D)以上都不对

12.深度为5的二叉树至多有()个结点

A)16 B)32 C)31 D)10

13.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,那么度为0的结点数为()个。

A)4 B)5 C)6 D)7

14.对于一个具有n个顶点的无向图,若采用邻接表表示,则存放表头结点的数组(顶点表)的大小为()

A)n B)n+1 C)n-1 D)n/2

15.静态查找表和动态查找表二者的根本差别在于()

A)它们的逻辑结构不同 B)施加在其上的操作不同

C)所包含的数据元素的类型不一样 D)存储实现不一样

二.填空

1.某程序的时间复杂性为(3n+nlog2n+n2+8),其数量级表示为________。

2.线性表L=(a1,a2,…,an)采用顺序结构存储,假定在不同的位置上插入的概率相同,则插入一个新元素平均需要移动的元素个数是_________ 。

3. 对于一株具有n个结点的树,该树中所有结点的度数之和为______。

4. 在一个图中,所有顶点的度数之和等于所有边数的______________倍。

5. 一棵二叉树有67个结点,这些结点的度要么是0,要么是2。这棵二元树中度数为2的结点有______________个。

6.在一个无向图的邻接表中,若表结点的个数是m,则图中边的条数是_____。

7.采用堆排序、快速排序、冒泡排序,对初态有序的表,最省时间的是______ 。

8.设二叉树结点的先根序列为ABDECFGH,中根序列为DEBAFCHG,则二元树中叶结点是_________.

9.一个哈夫曼(Huffman)树有19个结点,则其叶结点的个数是______。

10.栈S和队列Q的初始状态皆为空,元素a1,a2,a3,a4,a5和a6依次通过S栈,一个元素出栈后即进入队列Q,若6个元素出队列的顺序是a3,a5,a4,a6,a2,a1,则栈S至少应该容纳_______ 个元素。

三.判断

1.线性表的链式存储结构优于顺序行储结构。()

2.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。()

3.对于n个记录的集合进行归并排序,存最坏的情况下所需要的时间是O(n^2)。()4.表中的每一个元素都有一个前驱和后继元素。()

5.进栈操作push(x,s)作用于链接栈时,无须判满。()

6.只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。()

7.在索引顺序表查找方法中,对索引顺序表可以使用顺序表查找方法,也可以使用二分查找方法。()

8.数据元素是数据的最小单位。()

9.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。()

10.按中序遍历一棵二叉排序树所得到的中序遍历序列是一个递增序列。()

四.简答

1. 对于下图所示的树:

(1) 写出先序遍历得到的结点序列;(2) 画出转换后得到的二叉树。

2.请画出与下列二元树对应的森林。

五.算法设计

1.已知一个int类型的数组arra,其长度为n,要求用冒泡排序算法对其从小到大排序,请实现该算法,(要求后面开始循环,大的数值下沉)。

2.利用一个栈实现以下递归函数的非递归计算:

P n (x)=

?

?

?

?

?

>

=

=

-

-

-

-

1

1

)

(

)1

(2

)

(

2

2

1

2

1

n

n

n

x

P

n

x

xP

x

n

n

Part2

一、单项选择

1、在数据结构的讨论中把数据结构从逻辑上分为()

A)内部结构与外部结构 B)静态结构与动态结构

C)线性结构与非线性结构 D)紧凑结构与非紧凑结构。

2、算法分析的目的是()

A)找出数据结构的合理性 B)研究算法中输入和输出的关系

C)分析算法的效率以求改进 D)分析算法的易懂性和文档性

3、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()

A)s→link = p→link; p→link = s; B)p→link = s; s→link = q;

C)p→link = s→link; s→link = p; D)q→link = s; s→link = p;

4、如果想在4092个数据中只需要选择其中最小的5个,采用()方法最好。

A)起泡排序 B)堆排序C)锦标赛排序 D)快速排序

5、设有两个串t和p,求p在t中首次出现的位置的运算叫做()。

A)求子串B)模式匹配 C)串替换 D)串连接

6、将一个递归算法改为对应的非递归算法时,通常需要使用()。

A)栈B)队列C)循环队列D)优先队列

7、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。

A)( front - rear + 1) % m B)( rear - front + 1) % m

C)( front - rear + m) % m D)( rear - front + m) % m

8、下面程序段的时间复杂度为()

for (int i=0;i

for (int j=0;j

a[i][j]=i*j;

A)O(m2) B)O(n2) C)O(m*n) D)O(m+n)

9、在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行( )。

A)s->link=p;p->link=s; B)s->link=p->link;p->link=s;

C)s->link=p->link;p=s; D)p->link=s;s->link=p;

10、当利用大小为n 的数组顺序存储一个队列时,该队列的最大长度为()

A)n-2 B)n-1 C)n D)n+1

11、某二叉树的前序和后序序列正好相反,则该二叉树一定是()的二叉树。

A)空或只有一个结点B)高度等于其结点数

C)任一结点无左孩子 D)任一结点无右孩子

12、对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点为n2,则( )

A)n0= n2+1 B)n2= n0+1 C)n0= 2n2+1 D)n2=2n0+1

13、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()

A)24 B)73 C)48 D)53

14、对线性表进行折半搜索时,要求线性表必须()

A)以链接方式存储且结点按关键码有序排列 B)以数组方式存储

C)以数组方式存储且结点按关键码有序排列 D)以链接方式存储

15、顺序搜索算法适合于存储结构为()的线性表。

A)散列存储 B)顺序存储或链接存储

C)压缩存储 D)索引存储

二、填空

1、数据的存储结构被分为、、、四种。

2、一种抽象数据类型包括和两个部分。

3、栈、队列逻辑上都是结构。

4、栈中存取数据的原则,队列中存取数据的原则。

5、设目标串T=”abccdcdccbaa”,模式P=”cdcc”则第次匹配成功。

三、判断

1、数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要建立的。( )

2、线性表的逻辑顺序与物理顺序总是一致的。()

3、每种数据结构都应具备三种基本运算:插入、删除、搜索。()

4、深度为h的非空二叉树的第h层最多有2h-1个结点。()

5、完全二叉树就是满二叉树。()

6、最优二叉搜索树一定是平衡的二叉搜索树。()

7、线性表中所有结点的类型必须相同。()

8、连通分量是无向图中的极小连通子图。()

9、空串与由空格组成的串没有区别。()

10、带权连通图的最小生成树的权值之和一定小于它的其它生成树的权值之和。()

四、简答

1、在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?

2、将下面的森林变换成二叉树。

3、有图如下,请画出其邻接多重表。

五.算法设计

1、编写算法实现链表的创建、遍历、销毁。

2、编写算法,实现快速排序。

Part3

一.选择

1、在数据结构的讨论中把数据结构从逻辑上分为()

A)内部结构与外部结构 B)静态结构与动态结构

C)线性结构与非线性结构 D)紧凑结构与非紧凑结构。

2、下面程序段的时间复杂度为()

for (int i=0;i

for (int j=0;j

a[i][j]=i*j;

A)O(m2) B)O(n2) C)O(m*n) D)O(m+n)

3、采用线性链表表示一个向量时,要求占用的存储空间地址()

A)必须是连续的 B)部分地址必须是连续的

C)一定是不连续的 D)可连续可不连续

4、已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为da1,则第I 个结点的地址为()。

A)da1+(I-1)*m B)da1+I*m C)da1-I*m D)da1+(I+1)*m

5.下面关于线性表的叙述中,错误的是()

A)顺序表使用一维数组实现的线性表 B)顺序表必须占用一片连续的存储单元C)顺序表的空间利用率高于链表 D)在单链表中,每个结点只有一个链域6、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()

A)s→link = p→link; p→link = s; B)p→link = s; s→link = q;

C)p→link = s→link; s→link = p; D)q→link = s; s→link = p;

7、设循环队列的结构如下:

const int Maxsize=100;

typedef int Data Type;

typedef struct {

Data Type data[Maxsize];

Int front, rear;

} Queue;

若有一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句()

A)Q.front = = Q.rear; B)Q.front - Q.rear= = Maxsize;

C)Q.front + Q.rear = = Maxsize; D)Q.front= = (Q.rear+1)% Maxsize;

8、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。

A)( front - rear + 1) % m B)( rear - front + 1) % m

C)( front - rear + m) % m D)( rear - front + m) % m

9、将一个递归算法改为对应的非递归算法时,通常需要使用()。

A)栈 B)队列 C)循环队列 D)优先队列

10、下列广义表是线性表的有()

A)E(a,(b,c))B)E(a,E) C)E(a,b) D)E(a,L( ) )

11、设有两个串t和p,求p在t中首次出现的位置的运算叫做()。

A)求子串 B)模式匹配 C)串替换 D)串连接

12、对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点为n2.,则( )

A)n0= n2+1 B)n2= n0+1 C)n0= 2n2+1 D)n2=2n0+1

13、由权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()

A)24 B)73 C)48 D)53

14、对线性表进行折半搜索时,要求线性表必须()

A)以链接方式存储且结点按关键码有序排列 B)以数组方式存储

C)以数组方式存储且结点按关键码有序排列 D)以链接方式存储

15.静态查找表和动态查找表二者的根本差别在于()

A)它们的逻辑结构不同 B)施加在其上的操作不同

C)所包含的数据元素的类型不一样 D)存储实现不一样

二.判断

1、数据元素是数据的最小单位()。

2、数据结构是指相互之间存在一种或多种关系的数据元素的全体()。

3、线性表的逻辑顺序与物理顺序总是一致的()

4、每种数据结构都应具备三种基本运算:插入、删除、搜索()。

5、空串与由空格组成的串没有区别。()

6、深度为h的非空二叉树的第h层最多有2h-1个结点()

7、完全二叉树就是满二叉树。()

8、最优二叉搜索树一定是平衡的二叉搜索树。()

9、快速排序是对起泡排序的一种改进。( )

10、B-树是一种动态索引结构,它既适用于随机搜索,也适用于顺序搜索。()

三.简答

1、已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是EBCDAFHIGJ。

(1)试画出这棵二叉树;

(2)给出这棵二叉树的后序遍历序列。

2、已知一颗树如下图所示,请用孩子兄弟存储表示法表示该树。

四.算法设计

已知一个int类型的数组arra,其长度为n,要求用冒泡排序算法对其从小到大排序,请实现该算法,(要求后面开始循环,大的数值下沉)。

Part4

一、单项选择

2、在数据结构的讨论中把数据结构从逻辑上分为()

A)内部结构与外部结构 B)静态结构与动态结构

C)线性结构与非线性结构 D)紧凑结构与非紧凑结构。

2、下面程序段的时间复杂度为()

int f(unsigned int n)

{

if(n= =0 || n= =1) return 1;

else return n*f(n-1);

}

A)O(1) B)O(n) C)O(n2) D)O(n!)

3、一个数组元素a[i]与()的表示等价。

A) *(a+i)B) a+i C) *a+i D) &a+i

4、若需要利用形参直接访问实参,则应把形参变量说明为()参数。

A) 指针B) 引用 C) 值 D) 变量

5、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j

从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是()。

A) 80 B) 100 C) 240 D) 270

6、在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n)时,需要从前向后依次前移( )个元素。

A) 1 - i B) n - i + 1 C) n – j -

1 D) i

7、设单链表中结点结构为(data,link).已知指针q所指结点是指针p所指结点的直接前驱,若在*q 与*p之间插入结点*s,则应执行下列哪一个操作()

A) s->link=p->link; p->link=s; B) q->link=s; s->link=p

C) p->link=s->link; s->link=p; D) p->link=s; s->link=q;

8、设单循环链表中结点的结构为(data,link),且first为指向链表表头的指针,current 为链表当前指针,在循环链表中检测current是否达到链表表尾的语句是( )。

A) current->link =null B) first->link=current

C) first=current D) current->link=first

9、一个栈的入栈序列为a,b,c,则出栈序列不可能的是( )。

A) c,b,a B) b,a,c C) c,a,b D) a,c,b

10、设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。若想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,则应执行下列()操作。

A) x=top->data; top=top->link; B) top=top->link; x=top->data;

C) x=top; top=top->link; D) x=top->data;

11、假定一个顺序存储的循环队列的队头和队尾指针分别为f和r ,则判断队空的条件为( )。

A) f+1= =r B) r+1= =f C) f= =0 D) f= =r

12、当利用大小为n 的数组顺序存储一个队列时,该队列的最大长度为()

A) n-2 B) n-1 C) n D) n+1

13、某二叉树的前序和后序序列正好相反,则该二叉树一定是()的二叉树。

A) 空或只有一个结点B) 高度等于其结点数

C) 任一结点无左孩子 D) 任一结点无右孩子

14、顺序搜索算法适合于存储结构为()的线性表。

A) 散列存储 B) 顺序存储或链接存储

C) 压缩存储 D) 索引存储

15、判断一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用()。

A) 求关键路径的方法 B) 求最短路径的Dijkstra方法

C) 深度优先遍历算法 D) 广度优先遍历算法

二、判断

1、从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构()。

2、每种数据结构都应具备三种基本运算:插入、删除、搜索()。

3、非空线性表中任意一个数据元素都有且仅有一个直接前驱元素。()

4、将T在S中首次出现的位置作为T在S中的位置的操作称为串的模式匹配。()

5、已知一棵二叉树的前序序列和中序序列可以唯一地构造出该二叉树。()

6、线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻。()

7、用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关()。

8、邻接表只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。()

9、连通分量是无向图中的极小连通子图。()

10、快速排序是对起泡排序的一种改进。( )

三、)

1、某子系统在通信联络中只可能出现8种字符,其出现的概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11试设计赫夫曼编码。

2、将下面的森林变换成二叉树。

四.算法设计

已知一个int类型的数组arra,其长度为n,要求用选择排序算法对其从小到大排序,请实现该算法。

《面向对象程序设计C++》

Part1

一、单项选择

1.下面对于指针的描述不正确的是( )。

A.指针是地址变量

B.指针不能用除0以外的常量赋值

C.两个指针变量的加减法无意义

D.指针指向不同基类型的变量长度不同

2.下面对于析构函数的描述中不正确的是( )。

A.析构函数是内置函数

B.析构函数与类名相同

C.析构函数不能有参数

D.析函数在对象撤销时自动执行

3.下列指针用法中错误的是( )。

A. int i; int *ptr = &i;

B. int i; int *ptr; i= *ptr;

C. int *ptr; ptr=0;

D. int i=5;int *ptr;*ptr=i;

4.派生类的对象对它的基类成员中什么是可访问的( )?

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的公有成员

5.在( )情况下适宜采用inline定义内联函数。

A.函数体含有循环语句

B.函数体含有递归语句

C.需要加快程序的执行速度

D.函数代码多、不常调用

6.在类中说明的成员可以使用关键字( )进行修饰。

A. public

B. extern

C. cpu

D. register

7.如果类A被说明成类B的友元,则( )。

A.类A的成员即类B的成员

B.类B的成员即类A的成员

C.类A的成员函数不得访问类B的成员

D.类B不一定是类A的友元

8.定义析构函数时,应该注意( )。

A.其名与类名完全相同

B.返回类型是void类型

C.无形参,也不可重载

D.函数体中必须有delete语句

9.在类中声明一般函数时不能指定( )。

A.参数

B.访问权限

C.操作

D.标识符

10.在派生类中重新定义虚函数时必须在( )方面与基类保持一致。

A.参数类型

B.参数名字

C.操作内容

D.返回值类型

11.设int a=3,b=4,c=5;表达式(a+b)>c&&b= =c的值是( )。

A. 2

B. -1

C. 0

D. 1

12.下列标识符中,不合法的用户标识符为( )。

A. a#b

B. _int

C. a_10

D. PAd

13.while(!x)中的(!x)与下面条件( )等价。

A. x==1

B. x!=1

C. x!=0

D. x==0

14.每个类( )构造函数。

A.只能有一个

B.只可有公有的

C.可以有多个

D.只可有缺省的

15.静态成员函数不能说明为 ( ) 。

A. 整型函数

B. 浮点函数

C. 虚函数

D. 字符型函数

16.重载赋值操作符时,应声明为( )函数。

A.友元

B.虚

C.成员

D.多态

17. 下面描述中,表达错误的是()

A.公有继承时基类中的public成员在派生类中仍是public的

B.公有继承时基类中的private成员在派生类中仍是private的

C.公有继承时基类中的protected成员在派生类中仍是protected的

D.私有继承时基类中的public成员在派生类中是private的

18.通过( )调用虚函数时,采用动态指定。

A.对象指针

B.对象名

C.成员名限定

D.派生类名

19.在用class定义一个类时,数据成员和成员函数的默认访问权限是( )

A. private

B. public

C. protected

D. virtual

20.C++语言的跳转语句中,对于break和continue说法正确的是()

A. break语句只应用与循环体中

B. continue语句只应用与循环体中

C. break是无条件跳转语句,continue不是

D. break和continue的跳转范围不够明确,容易产生问题

二、完成程序

1.在下面程序的底画线处填上适当的字句,使该程序执行结果为60。

# include

class CBase

{

int X;

public:

void Init (int initX){X = initX; }

int GetNum() {return X+7; }

}

void main()

{

_______

_______

cout<

}

2.在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。

# include

calss line;

class box

{

private∶

int color;

int upx,upy;

int lowx,lowy;

public∶

_______ int same_color(line a,box b);

void SetColor(int iCl){color = iCl;}

void define_box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;lowx=x2;lowy=y2;} };

class line

{

private∶

int color;

int startx,starty;

int len;

public∶

friend int same_color(line a,box b);

void setlen(int iL){len=iL;}

_______

void define_line(int x,int y){startx=x ;straty=y;}

};

int same_color(line a,box b)

{

if ( a.color = =b.color) return 1;

return 0;

}

void main()

{

line l;

box bb;

bb.SetColor(1);

l.SetColor(1);

if (same_color(l,bb)==1) cout<<"The Same Color!"<

}

3. 已知int DBL(int n){return n + n;} 和long DBL(long n){return n+n;}是一个函数模板的两个实例,则该函数模板的定义是

4.在下列程序的空格处填上适当的字句,使输出为:0,8,5。

# include

# include

class Magic

{

double x;

public∶

Magic(double d=0.00)∶x(fabs(d)){}

_______{return Magic(sqrt(x*x+c.x*c.x));}

friend ostream& operator<<(ostream & os,Magic c){return os<

};

void main()

{

Magic ma;

cout<

}

三、综合应用

1.分析下列程序可能的输出结果。

# includ e “iostream.h”

class test

{

private:

int num;

float fl;

public:

test( );

int getint( ){return num;}

float getfloat( ){return fl;}

~test( );

};

test::test( )

{

cout<<"lnitalizing default"<

num=0;fl=0.0;

}

test::~test( )

{

cout<<"Desdtructor is active"<

}

int main( )

{

test array[2];

cout<

}

2.下列shape类是一个表示形状的抽象类,length()为求图形周长的函数,total()则是一个通用的用以求不同形状的图形周长总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求周长函数。给出shape,total的定义如下所示。class shape

{

public:

virtual float length( )=0

};

float total(shape *s[],int n)

{

float sum=0.0;

for(int i=0;i

sum+=s[i]->length( );

return sum;

}

Part2

一、选择

1、面向对象的程序设计思想中,首先在问题域中识别出若干个()

A.函数

B.类

C.文件

D.过程

2、定义类模板用关键字()

A.const

B.new

C.delete

D.template

3、运算结果类型相同的()

A. 9.0/2.0 9.0/2

B. 9/2.0 9/2

C. 9.0/2 9/2

D. 9/2 9.0/2.0

4、已知f1 f2同一类两个成员函数,但f1不能调用f2,说明()

A.f1 f2都是静态函数

B.f1是静态函数,f2不是

C.f1不是,f2是静态函数

D.f1 f2都不是静态函数

5、调用一成员函数时,使用动态联编的情况是()

A.通过对象调用一虚函数

B.通过指针或引用调用一虚函数

C.通过对象调用静态函数

D.通过指针或引用调用一静态函数

6、假定一个类构造函数为:“A(int aa=1,int bb=0){a=aa;b=bb;}则执行"A x(4)"后,x.a 和x.b值分别是:()

A.1,0

B.1,4

C.4,0

D.4,1

7、在派生类中能直接访问基类的()

A.公有成员,私有成员

B.保护成员,私有成员

C.不可访问成员,私有成员

D.公有成员,保护成员

8、不具访问权限属性的是:( )

A.非类成员

B.类成员

C.数据成员

D.函数成员

9、类定义中private,protected,public 出现次数为()

A.任意多次

B.至多一次

C.public 至少一次

D.至少一次

10、C++鼓励程序员将()

A.数据操作分别封装

B.不同类型数据封装

C.数据操作封装在一起

D.不同作用操作封装在一起

二、填空

1、C++中,最好用()代替malloc

2、函数模板中template之后尖括号的类型参数冠以保留字()

3、在IOS类中定义的用于格式控制的枚举变量中十、八、十六进制是dec,oct,( )

4、如果重载了运算符+,则相应运算函数名是()

5、由static修饰的数据成员为该类的所有对象()

6、为了实现多态性,派生类需要重新定义基类中的()

7、编译时多态性通过()虚函数实现。

8、派生类中实现基类成员初始化,需由派生类的构造函数调用()来完成。

9、C++中访问指令所指对象的静态成员函数使用运算符()

10、重载函数在参数类型或参数个数上不同但()相同。

三、改错

1、类定义有错,正确结果为5+8i

#include

#include

class complex

{

double real;

double imag;

public:

complex(double r=0.0,double i=0.0):real(r),imag(i){};

void show()

{

cout<=0?'+':'-')<

}

friend complex&operator +=(complex c1,complex c2)

{

c1.real+=c2.real;

c1.imag+=c2.imag;

return c1;

}

};

void main()

{

complex c(3,5);

c+=complex(2,3);

c.show();

}

2、改一处错

#include

class shape{

public:

int area(){return 0;}

};

class rectangle:public shape{

public:

int a,b;

void setlength(int x,int y){a=x;b=y;}

int area(){return a*b;}};

void main()

{

rectangle r;

r.setlength(3,5);

shape *s = r;

cout <

cout <

}

3、指出下面类中的错误,并改正:

class A

{

int a,b;

public:

A(int aa=0,int bb)

{

a=aa;b=bb;

}

};

4、指出下面类中的错误,并改正

class Location

{

int x,y;

protected:

int SetZero(int zeroX,int XeroY); private:

int length,height;

public:

void Location (int initX,int initY);

int getx();

int gety();

}

四、程序填空

1、在空白处填上正确的内容,使输出结果为:5 4 3 2 1

0 5.5 4.4 3.3 2.2 1.1

#include

template void f( , ) {

T t;

for (int i=0;i

{

t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;

}

}

void main()

{

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

double d[6]={1.1,2.2,3.3,4.4,5.5}

f(a,5);

f(d,6);

for(int i=0;i<5;i++)

cout <

cout <

for ( )

cout<

cout <

}

2、在空白处填上正确的内容,使类定义完整

class line;

class box{

private:

int color;

int upx,upy;

int lowx,lowy;

public:

int same_color( , box b);

void set_color(int c){color =c;}

void define_box(int x1,int y1,int x2,int y2) {upx=x1;upy=y1;lowx=x2;lowy=y2;}

};

class line{

private:

int color;

int startx,starty;

int endx,endy;

public:

friend int same_color(line l,box b);

void define_line(int x1,int y1,int x2,int y2) {startx=x1;starty=y1;endx=x2;endy=y2;}

};

int same_color(line l,box b){

if (l.color==b.color) return l;

return 0;

}

3、A为抽象类,在空白处填上正确的内容,输出为:

this is class B printing

this is class C printing

#include

class A{

public :

};

class B:public A{

public:

void printMe(){cout<<"this is class B printing"<

class C:public B{

void printMe(){cout<<"this is class C printing"<

void print( )

{

a.printMe();

}

void main()

{

B b;

C c;

print(b);

print(c);

}

4、在空白处填上正确的内容,使类完整

class A{

int * a;

int n;

public:

A():a(0),n(0){}

A(int nn)

{

//用nn初始化n

//用A指向长度为N的动态数组空间

}

};

5、在空白处填上正确的内容,使类完整

class base{

protected:

int a;

public:

base(){a=0;}

base(int i){a=i}

base(base&b){a=b.a}};

class derived:public base{

private:

int d;

public:

derived(){d=0;}

derived(int i,int j): {d=j;}

derived(derived&b): {d=b.d;}

};

五、构建一个Employee类,该类中有字符数组,表示姓名、住址、邮政编码、电话号码、email。把表示构造函数、ChangeInfo()、DisplayInfo()的函数原型放在类的定义中,构造函数初始化每个成员、ChangeInfo()表示修改成员内容,DisplayInfo()打印输出所有对象成员数据。其中数据成员是保护的,函数是公共的。(可以使用MFC中的CString 类)

数据结构C语言版期末考试试题(有答案)

“数据结构”期末考试试题 一、单选题(每小题2分,共12分) 1.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。 A. HL=ps p一>next=HL B. p一>next=HL;HL=p3 C. p一>next=Hl;p=HL; D. p一>next=HL一>next;HL一>next=p; 2.n个顶点的强连通图中至少含有( )。 A.n—l条有向边 B.n条有向边 C.n(n—1)/2条有向边 D.n(n一1)条有向边 3.从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。 A.O(1) B.O(n) C.O(1Ogzn) D.O(n2) 4.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。 A.24 B.48 C. 72 D. 53 5.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。 A.整形 B.引用型 C.指针型 D.常值引用型· 6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )。 A.O(n) B.O(1) C.O(n2) D.O(10g2n) 二、填空题(每空1分,共28分) 1.数据的存储结构被分为——、——、——和——四种。 2.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为——域和——域。 3.——中缀表达式 3十x*(2.4/5—6)所对应的后缀表达式为————。 4.在一棵高度为h的3叉树中,最多含有——结点。 5.假定一棵二叉树的结点数为18,则它的最小深度为——,最大深度为——· 6.在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定——该结点的值,右子树上所有结点的值一定——该结点的值。 7.当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层——调整,直到被调整到——位置为止。 8.表示图的三种存储结构为——、——和———。 9.对用邻接矩阵表示的具有n个顶点和e条边的图进行任一种遍历时,其时间复杂度为——,对用邻接表表示的图进行任一种遍历时,其时间复杂度为——。 10.从有序表(12,18,30,43,56,78,82,95)中依次二分查找43和56元素时,其查找长度分别为——和——· 11.假定对长度n=144的线性表进行索引顺序查找,并假定每个子表的长度均

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

1 绪论沈阳理工大学应用技术学院信息与控制学院 计算机科学与技术教研室 2011-5-8

数据结构复习题:绪论 单选题 1、在数据结构中,与所使用的计算机无关的数据叫_____结构。 A存储|B物理|C逻辑|D物理和存储 2、在数据结构中,从逻辑上可以把数据结构分成______。 A动态结构和静态结构|B紧凑结构和非紧凑结构|C线性结构和非线性结构|D内部结构和外部结构图 3、数据结构在计算机内存中的表示是指_______。 数据的存储结构|数据结构|数据的逻辑结构|数据元素之间的关系 4、在数据结构中,与所使用的计算机无关的是数据的______结构。 逻辑|存储|逻辑和存储|物理 5、在以下的叙述中,正确的是_____。 线性表的线性存储结构优于链表存储结构|二维数组是其数据元素为线性表的线性表|栈的操作方式是先进先出|队列的操作方式是先进后出 6、在决定选取何种存储结构时,一般不考虑_______。 各结点的值如何|结束个数的多少|对数据有哪些运算|所用编程语言实现这种结构是否方便 7、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储_______。 数据的处理方法|数据元素的类型|数据元素之间的关系|数据的存储方法 8、下面说法错误的是_______。 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估计算法执行时间的一个上界 (4)同一个算法,实现语句的级别越高,执行效率越低 (1)|(1)、(2)|(1)、(4)|(3) 9、通常要求同一逻辑结构中的所有数据元素具有相同的特性。这意味着______。 数据元素具有同一特点|不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致|每个数据元素都一样|数据元素所包含的数据项的个数要相等 10、以下说法正确的是_______。 数据元素是数据的最小单位|数据项是数据的基本单位|数据结构是带结构的数据项的集合|一些表面上很不相同的数据可以有相同的逻辑结构 11、____是数据的最小单元,_____是数据的基本单位. 数据项|数据元素|信息项|表元素 12、数据结构是指_____以及它们之间的_____. (1)数据元素(2)结构|(1)计算方法(2)关系|(1)逻辑存储(2)运算|(1)数据映像(2)算法 13、计算机所处理的数据一般具备某种内在的关系,这是的指_____. 数据和数据之间存在的某种关系|元素和元素之间存在某种关系|元素内部具有某种结构|数据项和数据项之间存在某种关系 14、数据的逻辑结构可以分为_____两类. 动态结构和表态结构|紧凑结构和非紧凑结构|线性结构和非线性结构|内部结构和外部结构 15、数据的逻辑结构是指_____关系的整体. 数据元素之间逻辑|数据项之间逻辑|数据类型之间|存储结构之间 16、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储_____. 数据的处理方法|数据元素的类型|数据元素之间的关系|数据的存储方法

数据结构(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

数据结构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 .各结点的值如何C.对数据有哪些运算 B .结点个数的多少 D .所用的编程语言实现这种结构是否方 6.以下说法正确的是D A .数据项是数据的基本单位 B .数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D .一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1) A .找出数据结构的合理性B.研究算法中的输入和输出的关系 C .分析算法的效率以求改进C.分析算法的易读性和文档性 (2) A .空间复杂度和时间复杂度B.正确性和简明性 &下面程序段的时间复杂度是0( n2) s =0; for( I =0; i

数据结构(C语言版)期末复习

数据结构(C语言版)期末复习汇总 第一章绪论 数据结构:是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。 数据结构分为:逻辑结构、物理结构、操作三部分 逻辑结构:集合、线性结构、树形结构、图(网)状结构 物理结构(存储结构):顺序存储结构、链式存储结构 算法:是为了解决某类问题而规定的一个有限长的操作序列。 算法五个特性:有穷性、确定性、可行性、输入、输出 评价算法优劣的基本标准(4个):正确性、可读性、健壮性、高效性及低存储量 语句频度的计算。 算法的时间复杂度: 常见有:O(1),O(n),O(n2),O(log2n),O(nlog2n),O(2n) 第二章线性表 线性表的定义和特点: 线性表:由n(n≥0)个数据特性相同的元素构成的有限序列。线性表中元素个数n(n≥0)定义为线性表的长度,n=0时称为空表。 非空线性表或线性结构,其特点: (1)存在唯一的一个被称作“第一个”的数据元素; (2)存在唯一的一个被称作“最有一个”的数据元素; (3)除第一个之外,结构中的每个数据元素均只有一个前驱; (4)除最后一个之外,结构中的每个数据元素均只有一个后继。 顺序表的插入:共计n个元素,在第i位插入,应移动(n-i+1)位元素。 顺序表的删除:共计n个元素,删除第i位,应移动(n-i)位元素。 线性表的两种存储方式:顺序存储、链式存储。 顺序存储 概念:以一组连续的存储空间存放线性表; 优点:逻辑相邻,物理相邻;可随机存取任一元素;存储空间使用紧凑; 缺点:插入、删除操作需要移动大量的元素;预先分配空间需按最大空间分配,利用不充分;表容量难以扩充; 操作:查找、插入、删除等 查找: ListSearch(SqlList L,ElemType x,int n) { int i; for (i=0;i

数据结构复习题集答案(c语言版严蔚敏)

人生难得几回搏,此时不搏更待何时? 第1章绪论 1.1 简述下列术语:数据 数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型 解:数据是对客观事物的符号表示 在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素是数据的基本单位 在计算机程序常作为一个整体进行考虑和处理 数据对象是性质相同的数据元素的集合 是数据的一个子集 数据结构是相互之间存在一种或多种特定关系的数据元素的集合 存储结构是数据结构在计算机中的表示 数据类型是一个值的集合和定义在这个值集上的一组操作的总称 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作 是对一般数据类型的扩展 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别 解:抽象数据类型包含一般数据类型的概念 但含义比一般数据类型更广、更抽象 一般数据类型由具体语言系统部定义 直接提供给编程者定义用户数据 因此称它们为预定义数据类型 抽象数据类型通常由编程者定义 包括定义它所使用的数据和在这些数据上所进行的操作 在定义抽象数据类型中的数据部分和操作部分时 要求只定义到数据的逻辑结构和操作说明 不考虑数据的存储结构和操作的具体实现 这样抽象层次更高 更能为其他用户提供良好的使用接口 1.3 设有数据结构(D R) 其中

试按图论中图的画法惯例画出其逻辑结构图 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数) 解: ADT Complex{ 数据对象:D={r i|r i为实数} 数据关系:R={} 基本操作: InitComplex(&C re im) 操作结果:构造一个复数C 其实部和虚部分别为re和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C k &e) 操作结果:用e返回复数C的第k元的值 Put(&C k e) 操作结果:改变复数C的第k元的值为e IsAscending(C) 操作结果:如果复数C的两个元素按升序排列 则返回1 否则返回0 IsDescending(C) 操作结果:如果复数C的两个元素按降序排列 则返回1 否则返回0 Max(C &e) 操作结果:用e返回复数C的两个元素中值较大的一个 Min(C &e) 操作结果:用e返回复数C的两个元素中值较小的一个

数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)

数据结构基础及深入及考试 复习资料 习题及实验参考答案见附录 结论 1、数据的逻辑结构是指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。存储结构可分为4大类:顺序、链式、索引、散列 3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关的服务(或称操作)。它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。 4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 5、在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和表态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 6、算法的时间复杂度取决于( A ) A、问题的规模 B、待处理数据的初态 C、问题的规模和待处理数据的初态 线性表 1、线性表的存储结构包括顺序存储结构和链式存储结构两种。 2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。 A、(n-1)/2 B、n C、n+1 D、n-1 E、n/2 F、(n+1)/2 G、(n-2)/2 3、“线性表的逻辑顺序与存储顺序总是一致的。”这个结论是( B ) A、正确的 B、错误的 C、不一定,与具体的结构有关 4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D ) A、必须是连续的 B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以 5、带头结点的单链表为空的判定条件是( B ) A、head==NULL B、head->next==NULL C、head->next=head D、head!=NULL 6、不带头结点的单链表head为空的判定条件是( A ) A、head==NULL B、head->next==NULL C、head->next=head D、head!=NULL 7、非空的循环单链表head的尾结点P满足( C ) A、p->next==NULL B、p==NULL C、p->next==head D、p==head 8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( B ) A、O(1) B、O(n) C、O(n2) D、O(nlog2n) 9、在一个单链表中,若删除p所指结点的后继结点,则执行( A )

数据结构C语言版期末考试题库单选题

一、单项选择 1 . 数据在计算机内有链式和顺序两种存储方 式,在存储空间使用的灵活性上,连式存储比顺序存 储要 A . 低 B . 高 C . 相同 D . 不好说 2 . 通常对数组进行的两种基本操作是() A . 建立与删除 B . 索引和修改 C . 查找和修改 D . 查找与索引 3 . 如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F 中结点的()。 A . 中序 B . 前序 C . 层次序 D . 后序 4 . 由树的定义,具有3个结点的树有()种形态 A . 2 B . 3 C . 4 D . 5 5 . 以下说法错误的是 ( ) A . 二叉树可以是空集 B . 二叉树的任一结点都有 两棵子树 C . 二叉树与树具有相同的

树形结构 D . 二叉树中任一结点的两 棵子树有次序之分 6 . 若节点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为 A . 顺序存储结构 B . 链式存储结构 C . 索引存储结构 D . 散列存储结构 7 . 已知二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是() A . bdgcefha B . gdbecfha C . bdgaechf D . gdbehfca 8 . 算法分析的两个主要方面 A . 空间复杂度和时间复杂 度 B . 正确性和简明性 C . 可读性和文档性 D . 数据复杂性和程序复杂 性 9 . 设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找,则其平均查找长度为( )。 (A) 6 (B) 11 (C) 5 (D) 6.5 A . B . C . D . 10 . 若邻接表中有奇数个表节点,则一定( ) A . 图中有奇数个顶点 B . 图中有偶数个顶点 C . 图为无向图 D . 图为有向图

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构(C语言版)(第2版) 课后习题答案 李冬梅 2015.3

目录 第1章绪论 (1) 第2章线性表 (5) 第3章栈和队列 (13) 第4章串、数组和广义表 (26) 第5章树和二叉树 (33) 第6章图 (43) 第7章查找 (54) 第8章排序 (65)

第1章绪论 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 答案: 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3.简述逻辑结构的四种基本关系并画出它们的关系图。

数据结构(c语言版)课后习题答案完整版

第1章绪论 5.选择题:CCBDCA 6.试分析下面各程序段的时间复杂度。 (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(n) 第2章线性表 1.选择题 babadbcabdcddac 2.算法设计题 (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) { // 逆置带头结点的单链表 L p=L->next; L->next=NULL; while ( p) { q=p->next; // q指向*p的后继 p->next=L->next; L->next=p; // *p插入在头结点之后 p = q; }

} (10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。 [题目分析] 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。 void Delete(ElemType A[ ],int n) ∥A是有n个元素的一维数组,本算法删除A中所有值为item的元素。 {i=1;j=n;∥设置数组低、高端指针(下标)。 while(i

《数据结构(C语言描述)》期末试卷要点

专业 《数据结构(C 语言描述)》期末试卷 ( — 学年 第 学期) 一、填空(10分) 1、一个m 阶B-树中,每个结点最少有( ceil(m/2) )个儿子结点,m 阶B+树中每个结点(除根外)最多有( m )个儿子结点. 2、n(n>0)个结点构成的二叉树,叶结点最多有( floor((n+1)/2) )个,最少有( 1 )个。若二叉树有m 个叶结点,则度为2的结点有( m-1 )个。 3、顺序查找方法适用于存储结构为( 顺序表和线性链表 )的线性表,使用折半查找方法的条件是(查找表为顺序存贮的有序表 ) 4、广义表A=(( ),(a ,(b ,c)),d)的表尾Gettail(A)为( ((a,(b,c)),d) ) 5、直接插入排序,起泡排序和快速排序三种方法中,( 快速排序 )所需的平均执行时间最小;( 快速排序 )所需附加空间最大。 二、选择(10分) 1、倒排文件的主要优点是:( C ) A 、便于进行插入和删除 B 、便于进行文件的合并 C 、能大大提高基于非主关键字数据项的查找速度 D 、易于针对主关键字的逆向检索 2 下面程序段的时间复杂性为( C ) y=0; while(n>=(y+1)*(y+1)) { y++; } A 、O(n) B 、O(n 2) C 、 O(sqrt(n)) D 、 O(1) 3、若从二叉树的任一结点出发到根的路径上所经过的结点序列按其关键字有序,则该二叉树是( C ) A 、二叉排序树 B 、哈夫曼树 C 、堆 D 、AVL 树 4、栈和队列都是( B ) A 、顺序存储的线性结构 B 、限制存取点的线性结构 C 、链式存储的线性结构 D 、限制存取点的非线性结构 5、用顺序查找方法查找长度为n 的线性表时,在等概率情况下的平均查找长度为( D ) A 、n B 、n/2 C 、(n-1)/2 D 、(n+1)/2 三、简答(30分) 1、已知一棵二叉树的前序扫描序列和中序扫描序列分别为ABCDEFGHIJ 和BCDAFEHJIG ,试给出该二叉树的后序序列并绘出该二叉树对应的森林。 院(系) 班级 姓名 学号 ……………………………………………装…………………………订………………………线……………………………………………

严蔚敏数据结构题集(C语言版)完整答案.doc

严蔚敏 数据结构C 语言版答案详解 第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值

数据结构(c语言版)复习资料

数据结构复习资料 一、填空题 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。 3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。 5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。 6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。 7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有 1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。 8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。 9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。 10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。 11. 一个算法的效率可分为时间效率和空间效率。

12. 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。 13. 线性表中结点的集合是有限的,结点间的关系是一对一的。 14. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。 15. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。 16. 在顺序表中访问任意一结点的时间复杂度均为 O(1),因此,顺序表也称为随机存取的数据结构。 17. 顺序表中逻辑上相邻的元素的物理位置必定相邻。单链表中逻辑上相邻的元素的物理位置不一定相邻。 18.在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。 19.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。 20. 向量、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。 21. 栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。不允许插入和删除运算的一端称为栈底。 22. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。 23. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。 24. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。

数据结构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

数据结构C语言版章节练习题

数据结构章节练习题 第一章绪论 一、单选题 1.一个数组元素a[i]与________的表示等价。 A、*(a+i) B、a+i C、*a+i D、&a+i 2.下面程序段的时间复杂度为____________。 for(int i=0; i

数据结构教案C语言版

数据结构教案C语言版 Last updated on the afternoon of January 3, 2021

课程教案 课程名称:数据结构 授课教师: 学习对象: 任课时间: 一、学生情况分析 数据结构是计算机专业的一门核心专业课程。学生在前期的学习中已经学习了C语言程序设计课程。通过本课程学习使学生对提高编写程序的能力以及解决实际问题的能力。 二、课程教学目标 《数据结构》是计算机学科中一门核心专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。 三、课程教学内容 第一章绪论 教学内容: 1)什么是数据结构

2)抽象数据类型概念;数据类型;数据抽象与抽象数据类型;用于描述数据结构的语言 3)数据结构的抽象层次 4)算法定义 5)性能分析与度量;算法的性能标准;算法的后期测试;算法的事前估计;空间复杂度度量;时间复杂度度量;时间复杂度的渐进表示法; 教学要求: 了解:数据结构基本概念及数据结构的抽象层次 了解:抽象数据类型概念 了解:算法的定义及算法特性 掌握:算法的性能分析与度量方法 第二章线性表 教学内容: 1)线性表的定义和特点 2)线性表的顺序存储及查找、插入和删除操作 3)线性表的链式存储及查找、插入和删除操作 4)使用线性表的实例 教学要求: 了解:线性表的定义和特点 熟练掌握:线性表的顺序存储结构的查找、插入和删除等基本操作 熟练掌握:单链表、循环链表及双向链表的定义及实现 掌握:熟练掌握单链表的应用方法

数据结构C语言版习题参考答案

附录习题参考答案 习题1参考答案 1.1.选择题 (1). A. (2). A. (3). A. (4). B.,C. (5). A. (6). A. (7). C. (8). A. (9). B. (10.) A. 1.2.填空题 (1). 数据关系 (2). 逻辑结构物理结构 (3). 线性数据结构树型结构图结构 (4). 顺序存储链式存储索引存储散列表(Hash)存储 (5). 变量的取值范围操作的类别 (6). 数据元素间的逻辑关系数据元素存储方式或者数据元素的物理关系 (7). 关系网状结构树结构 (8). 空间复杂度和时间复杂度 (9). 空间时间 (10). Ο(n) 1.3 名词解释如下: 数据:数据是信息的载体,是计算机程序加工和处理的对象,包括数值数据和非数值数据。数据项:数据项指不可分割的、具有独立意义的最小数据单位,数据项有时也称为字段或域。数据元素:数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,一个数据元素可由若干个数据项组成。 数据逻辑结构:数据的逻辑结构就是指数据元素间的关系。 数据存储结构:数据的物理结构表示数据元素的存储方式或者数据元素的物理关系。 数据类型:是指变量的取值范围和所能够进行的操作的总和。 算法:是对特定问题求解步骤的一种描述,是指令的有限序列。 1.4 语句的时间复杂度为: (1) Ο(n2) (2) Ο(n2) (3) Ο(n2) (4) Ο(n-1) (5) Ο(n3) 1.5 参考程序: main() { int X,Y,Z; scanf(“%d, %d, %d”,&X,&Y,Z); if (X>=Y) if(X>=Z) if (Y>=Z) { printf(“%d, %d, %d”,X,Y,Z);} else { printf(“%d, %d, %d”,X,Z,Y);}

数据结构(c语言版)课后习题答案完整版资料

数据结构(c语言版)课后习题答案完整版资料

第1章绪论 5.选择题:CCBDCA 6.试分析下面各程序段的时间复杂度。 (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(n) 第2章线性表 1.选择题 babadbcabdcddac 2.算法设计题 (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) { // 逆置带头结点的单链表 L p=L->next; L->next=NULL; while ( p) { q=p->next; // q指向*p的后继 p->next=L->next; L->next=p; // *p插入在头结点之后 p = q; } }

(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。 [题目分析] 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。 void Delete(ElemType A[ ],int n) ∥A是有n个元素的一维数组,本算法删除A 中所有值为item的元素。 {i=1;j=n;∥设置数组低、高端指针(下标)。 while(i

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