文档库 最新最全的文档下载
当前位置:文档库 › 数据结构习题解答

数据结构习题解答

数据结构习题解答
数据结构习题解答

1 填空题

(1) (数据元素、或元素、或结点、或顶点、或记录)是数据的基本单位,在计算机程序中作为一个整体进行考虑和处理。

(2)(数据项、或字段)是数据的最小单位,(数据元素)是讨论数据结构时涉及的最小数据单位。

(3)从逻辑关系上讲,数据结构主要分为(集合)、(线性结构)、(树结构)和(图)。

(4)数据的存储结构主要有(顺序存储结构)和(链式存储结构)两种基本方法,不论哪种存储结构,都要存储两方面的内容:(数据元素)和(它们之间的关系)。

(5) 算法具有5个特性,分别是(输入)、(输出)、(有穷性)、(确定性)、(可行性)。

(6) 算法的描述方法通常有(自然语言)、(流程图)、(程序设计语言)、(伪代码)4种,其中,(伪代码)被称为算法语言。

(7) 一般情况下,一个算法的时间复杂度是算法(输入规模)的函数。

(8) 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为

(O(1)),若为n*log

25n, 则表示成数量级的形式为(O(n*log

2

n))。

2. 选择题: (1) C, D (2) B (3) B (4) A (5) D (6) A (7) C (8) C, E

习题二

1. 填空题

(1) 在顺序表中,等概率情况下,插入和删除一个元素平均需移动(表长的一半)个元素,具体移动元素的个数与(表的长度)和(数据元素所在的位置)有关。

(2) 一个顺序表的第一个元素的存储地址是100,每个数据元素的长度是2,则第5个数据元素的存储地址是(108)。

(3) 设单链表中指针p指向单链表的一个非空结点A,若要删除结点A的直接后继,则需要修改指针的操作为(p->next=(p->next)->next, 或者 q=p->next; p->next=q->next)。

(4) 单链表中设置头结点的作用是(方便运算,减少程序的复杂性,使得空表和非空表处理统一)。

(5) 非空的循环单链表由头指针head指示,则其尾结点(由指针p所指)满足(p->next=head)。

(6) 在有尾指针rear指示的循环单链表中,在表尾插入一个结点s的操作序列是(s->next=rear->next; rear->next=s; rear=s),删除开始结点的操作序列是(q=rear->next->next; rear->next->next=q->next; delete q;)。

注:假设此循环单链表有表头结点

(7) 一个具有n个结点的单链表,在p所指结点后插入一个新结点s的时间复杂性为( O(1));在给定值x的结点后插入一个新结点的时间复杂性为( O(n) )。

(8) 可由一个尾指针惟一确定的链表有(循环链表)、(双链表)、(双循环链表)。

2. 选择题: (1) A,B (2) D (3) B (4) A (5) A (6) D (7) B (8) B (9) C (10) B (11)

B (12) D (13) A (14) A

5. 算法设计

(1)设计一个时间复杂度为O(n)的算法。实现将数组A[n]中所有元素循环左移k个位置。

算法思想:要使a

1…a

k

a

k+1

…a

n

-> a

k+1

…a

n

a

1

…a

k

,可以先让a

1

…a

k

a

k+1

…a

n

->a

k

…a

1

a

n

…a

k+1

,再让a

k

… a

1

a n …a

k+1

-> a

k+1

…a

n

a

1

…a

k

,参见第1章16页的思想火花

算法:void converse(T a[], int i, int j){

for(s=i; s<=(i+j)/2;s++) 解法1:void tiaozhen(T A[],int n)

{ s=0; t=n-1;

while(s

{ while( A[s]%2!=0) s++;链表的程序如下,设单链表有表头结点. void LinkList::converse()

{ p=first->next;

first->next=NULL;

while(p){

q=p->next; p->next=first->next;

first->next=p;p=q;

}

(5) 假设在长度大于1的循环链表中,既无头结点也无头指针,s为指向链表中某个结点的指针,试编写算法删除结点s的前驱结点。

void LinkList::deleteS(Node *s)

{p=s;

while(p->next->next!=s) p=p->next;

{ q=p->next; p->next=q->next;

delete q;

}

(6) 已知一单链表中的数据元素含有三类字符:字母、数字和其它字符。试编写算法,构造三个循环链表,使每个循环链表中只含同一类字符。

算法思想:1)构造3个带表头结点的循环链表,分别为zifu,shuzi和qita;

2)遍历单链表,按单链表中的当前数据元素的分类插入相应的链表

void fl(Node* zifu, Node *shuzi, Node *qita)

{ s=new Node; s->next=s; zifu=s;

s=new Node; s->next=s; shuzi=s;

s=new Node; s->next=s; qita=s;

a=zifu; b=shuzi; c=qita;

p=first->next; 选择题: (1) C (2) D (3) C (4) B (5) B (6) B (7) D (8) A (9) C

4.解答下列问题

(1)①不可以, 因为有序列C, A, B.

② 可以, push, push, push, pop, pop, pop, push, pop, push, pop.

(2)见书本

(3)栈顶元素是6, 栈底元素是1.

(4)队尾元素是9, 队头元素是5.

(5)①③④合法, ②不合法.

习题四

1. 填空题

(1) 串是一种特殊的线性表,其特殊性体现在( 数据元素的类型为字符型 )。

(2) 两个串相等的充分必要条件是( 它们的长度相等且对应位置的字符相同 )。

(3) 数组通常只有两种运算,分别是( 存取 )和( 修改 ),这决定了数组通常采用(顺序存储)结构来实现存储。

(4) (1140)

(5)设有一个10阶的对称矩阵A采用压缩存储,第一个元素A[0][0]的存储地址为d,每个元素占用1个地址空间,则元素A[8][5]的存储地址为( d+41 )。

(6) 稀疏矩阵一般压缩存储方法有两种,分别是( 三元组顺序表 )和( 十字链表 )。

2. 选择题: (1) B (2) D, E, K (3) B (4) XXX (5) D (6) C (7) D

5(2). 设计一个求矩阵A=(a

ij )

nXm

所有鞍点的算法,并分析最坏情况下的时间复杂度。

算法思想2:附加两个数组B[n]和C[m],B[i]用来存第i行的最小值,C[j]用来存第j列的最小元素值。如果A[i][j]= B[i]=C[j],则A[i][j]一定为马鞍点。

viod maandian2(A[ ][ ],int m,int n){

int B[n],C[m],i,j;

for(i=0;i

(3) 一棵二叉树的第i(i≥1)层上最多有( 2i-1)个结点,一棵有n(n>0)个结点的满二叉树共有( (n+1)/2 )个叶子结点和( (n-1)/2 )个非终端结点。

(4) 设高度为h的二叉树只有度为0的和度为2的结点,该二叉树的结点数可能达到的最大值是( 2h-1 ),最小值是(2 h -1)。

(5)深度为k的二叉树中,所含叶子的个数最多为(2k-1).

(6)具有100个结点的完全二叉树的叶子结点数为(50)。

(7) 已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点。则该树有(12)个叶子结点。

(8) 某二叉树的前序遍历序列是ABCDEFG,中序遍历序列是CBDAFGE,则其后序遍历序列是( CDBGFEA )。

(9)在具有n个结点的二叉链表中,共有(2n )个指针域,其中( n-1 )个指针域用于指向其左右孩子,剩下的( n+1 )个指针域则是空的。

(10)在有n个叶子的哈夫曼树中,叶子结点总数为( n ),分支结点总数为(n-1)。

2. 选择题: (1) D (2) D (3) B (4) C (5) B,C (6) D (7) A (8) A,B (9) D,A (10) B (11)

B (12)

C (13)

D (14) C

4. 解答下列问题

(3) 已知一棵度为m的树中:n

1个度为1的结点,n

2

个度为2的结点,…,n

m

个度为m的结点,问该

树中共有多少个叶子结点?

解:设该树中共有n

个叶子结点。则该树中总结点个数为

n= n

0+ n

1

+…+ n

m

.

而分支数为n-1= n

1 +2n

2

+3n

3

+…+ mn

m

,所以

n

0 =1+n

2

+2n

3

+…+ (m-1)n

m

(4) 已知一棵二叉树的中序和后序序列为CBEDAFIGH和CEDBIFHGA,试构造该二叉树。

(5) 给出叶子结点的权值集合为W={5,2,9,11, 8,3,7}的哈夫曼树的构造过程。

5 算法设计

(1) 设计算法求二叉树的结点个数.

注:本算法可以用二叉树遍历的所有算法,只要把cout语句换成结点的计数就可以了,但是要注意递归中的计数变量应该是外部变量。如

int num=0;

int BiTree::count(BiNode *rt) { countsub(rt); return num;}

void BiTree::countSub(BiNode *rt) {

if (rt !=NULL) { num++; countSub (rt->lchild); countSub (rt->rchild); }

}

其他解法二:用前序遍历的非递归算法

int BiTree::CountPreOrder(BiNode *rt)

{top= -1; p=rt; num=0;

注:其实按照“选择题”的(7)知:任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序肯定不发生改变

解法思想: 使用任何遍历算法,把“cout<data”改成判断此结点是否为叶子结点。

void BiTree::leaf(BiNode *rt){

if (rt==NULL) return;

else

{ if(rt->lchild==NULL &&!rt->rchild)

cout<data;

PostOrder(rt->lchild);

PostOrder(rt->rchild);

} }

(3) 设计算法求二叉树的深度.

注:本算法也可以用二叉树遍历的所有算法。但是在用前序和中序算法时要注意深度如何来确定。int BiTree::depth(BiNode *rt)

{ if (rt ==NULL) return 0;

else {

hl= depth(rt->lchild);

hr= depth(rt->rchild);

return (hl>hr)?hl+1:hr+1;

}

(4) 设计算法:输出二叉树后序遍历的逆序.

解法思想: 太简单啦!!!前序遍历是先遍历右子树即可.

void BiTree::PostOrder_1(BiNode *rt){

if (rt==NULL) return;

else {

cout<data;

PostOrder(rt->rchild);

PostOrder(rt->lchild);

} }

(5) 以二叉链表为存储结构,编写算法求二叉树中值x的结点的双亲.

void BiTree::PreOrder_Parent(BiNode *rt){

{top= -1; p=rt;

void BiTree::DeleteX(BiNode *rt, T x)

{ if(rt==NULL) return;

if(rt->data==x) {Release(rt);}

else{

DeleteX(rt->lchild, x);

DeleteX(rt->rchild, x);

} }

(7) 一棵具有n个结点的二叉树采用顺序存储结构,编写算法对该二叉树进行前序遍历.

算法思想: 套用前序遍历的原程序,注意查找左右孩子结点的地址和判别孩子是否存在的方法。注:根结点的下标是1。

void BiTree::PreOrder_Seq(int rt)

{top= -1; p=rt;

解法思想: 使用任何遍历算法,把“cout<data”改成左右孩子指针交换即可。

void BiTree::PostOrderChange(BiNode *rt)

{

if (rt==NULL) return;

else

{ PostOrder(rt->lchild);

PostOrder(rt->rchild);

temp=rt->lchild;

rt->lchild=rt->rchild;

rt->rchild=temp;

} }

习题6

1.填空题

⑴设无向图G中顶点数为n,则图G至少有(0 )条边,至多有( n(n-1)/2)条边;若G为有向图,则至少有( 0)条边,至多有( n(n-1) )条边。

⑵任何连通图的连通分量只有一个,即是(它本身)。

⑶图的存储结构主要有两种,分别是(邻接矩阵)和(邻接表)。

⑷已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为(O(n+e))。

⑸已知一个图的邻接矩阵表示,计算第j个顶点的入度的方法是(矩阵中第j-1列的非0元素个数)。

⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的(出度)。

⑺图的深度优先遍历类似于树的(前序)遍历,它所用的数据结构是(栈);图的广度优先遍历类似于树的(层序)遍历,它所用的数据结构是(队列)。

⑻对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(O(n2)),利用Kruscal算法求最小生成树的时间复杂度为(O(elog

2

e))。

⑼如果一个有向图不存在(有向回路),则该图的全部顶点可以排成一个拓扑序列。

⑽在一个有向图中,若存在弧

i ,v

j

>、

j

,v

k

>、

i

,v

k

>,则在其拓扑序列中,顶点 v

i

,v

j

,

v

k 的相对次序为(v

i

,v

j

, v

k

)。

2. 选择题: (1) C (2) A,G (3) C (4) B (5) D (6) C,F (7) B (8) D (9) A (10) A (11)

A (12) C (13) A (14) C,C,F (15) B

4. 解答下列问题

(1) n个顶点的无向图,采用邻接表存储,回答下列问题:

①图中有多少条边?

答: 邻接表中所有边表结点的个数的一半.

②任意两个顶点i和j是否有边相连?

答: 查找第i个边表的结点中是否有邻接点域值为j的结点. 如果有,则它们之间有边;否则,无边.③任意一个顶点的度是多少?

答: 此顶点对应的边表中结点的个数.

(2) n个顶点的无向图,采用邻接矩阵存储,回答下列问题:

①图中有多少条边?

答: 邻接矩阵中所有元素和的一半.

②任意两个顶点i和j是否有边相连?

答: 如果第i行第j列的元素值为1,则它们之间有边;否则,无边.

③任意一个顶点的度是多少?

答: 此顶点对应的行中元素之和.

(3) 证明:生成树中最长路径的起点和终点的度均为1.

证明:设一棵树的最长路径P=v

1v

2

…v

k

。若v

1

的度至少为2,不妨设u(≠v

2

)是它的另外一个邻点。若

u∈{v

1, v

2

, …, v

k

}, 则此树中包含圈,矛盾;否则uv

1

v

2

…v

k

是一条更长的路,同样矛盾。所以v

1

的度为1. 类似可以证明v

k

的度为1.

(5) 图6-50所示是一个无向带权图,请分别用Prim算法和Kruscal算法求最小生成树。

习题7

1. 填空题

(1)顺序查找技术适合于存储结构为(各种形式)的线性表,而折半查找技术适合于存储结构为(顺序存储)的线性表,并且表中的元素必须是(有序的)。

(2) 设有一个已按各元素值排好序的线性表,长度为125,用折半查找法查找与给定值相等的元素,若查找成功,则至少需要比较(1 )次,至多需要比较(7)次。

(3) 对于数列{25, 30, 8, 5, 1, 27, 24, 10, 20, 21, 9, 28, 7, 13, 15},假定每个结点的查找概率相同,若用顺序存储结构组织该数列,则查找一个数的平均比较次数为(8 )。若按二叉排序树组织该数列,则查找一个数的平均比较次数为(59/15)。

(4)长度为20的有序表采用折半查找,共有(4)个元素的查找长度为3。

(5) 假设数列{25, 43, 62, 31, 48, 56},采用散列函数为H(k)=k mod 7, 则元素48的同义词是(62)。

(6) 在散列技术中,处理冲突的主要方法是(开放地址法)和(拉链法)。

(7) 在各种查找方法中,平均查找长度与结点个数无关的查找方法是(散列查找)。

(8) 与其他方法比较,散列查找法的特点是(记录的存储位置与关键码之间建立了一个确定的对应关系,平均查找长度与结点个数无关)。

2. 选择题: (1) B (2) D,D (3) A,B (4) D (5) A (6) C (7) C (8) B (9) D (10) A (11)

C (12) C

4.解答下列问题

(1) 分别画出在线性表(a,b,c,d,e,f,g)中进行折半查找关键码e和g的过程。

解:d->f->e和d->f->g

(2) 画出长度为10的折半查找判定树,并求出等概率时查找成功和不成功的平均查找长度。

等概率时查找成功平均查找长度=(1*1+2*2+4*3+3*4)/10=29/10

等概率时不成功的平均查找长度=(5*4+6*5)/11=50/11

(3) 将数列(24,15,38,27,76,130,121)的各个元素依次插入一颗初始为空的二叉排序树中,请画出最后的结果并求等概率情况下查找成功的平均查找长度。

AVL=(1+2*2+3*3+4+5)/7

(4) 已知一棵二叉排序树的结构如图7-30所示,结点的值为1~8,请标出各点的值。

答:见题上图

习题8

1.填空题

(1) 排序的主要目的是为了以后对已排序的数据元素进行( 查找 )。

(2) 对n个元素进行起泡排序,在(关键码有序)的情况下比较的次数最少,其比较次数为(O(n))。在(关键码逆序)情况下比较次数最多,其比较次数为(O(n2))。

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

(4) 对一组记录(54,38,96,23,15,72,60,45,83) 进行快速排序,在递归调用中使用的栈所能达到的最大深度为( 4 )。

n ),最坏时间是(O(n2))。

(5) 对n个待排序记录序列进行快速排序,所需要的最好时间是(O(nlog

2

(6) 利用简单选择排序对n个记录进行排序,最坏情况下,记录交换的次数为(n-1)

(7) 如果要将序列(50,16,23,68,94,70,73)建成堆,只需把16与( 50 )交换。

(8) 对于键值序列(12,13,11,18,60,15,7,18, 25, 100),用筛选法建堆,必须从键值为( 60 )的结点开始。

2. 选择题:(1) C (2) C (3) C (4) B (5) A (6) A (7) B,D,B (8) C (9) D (10) A,D (11)

B (12) D,B,E,A,

C (13) C (14)

D (15) C

数据结构试题库答案

数据结构试题及答案 一、单项选择题 (1)一个算法应该就是()。 A)程序???B)问题求解步骤得描述 C)要满足五个基本属性??D) A与C (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)下列程序得时间复杂度为() i=0;s=0; while(s

经典数据结构面试题(含答案)

栈和队列的共同特点是__________________________ .栈通常采用的两种存储结构是______________________ .用链表表示线性表的优点是_______________________ 8.在单链表中,增加头结点的目的是___________________ 9.循环链表的主要优点是________________________- 12.线性表的顺序存储结构和线性表的链式存储结构分别是 __________________________ 13.树是结点的集合,它的根结点数目是_____________________ 14.在深度为5的满二叉树中,叶子结点的个数为_______________ 15.具有3个结点的二叉树有(_____________________ 16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为____________________ 17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 ____________________________ 18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为______________________ 19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是_______________________ 20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。 在计算机中,算法是指_______________________ 算法一般都可以用哪几种控制结构组合而成_____________________ .算法的时间复杂度是指______________________ 5. 算法的空间复杂度是指__________________________ 6. 算法分析的目的是__________________________

2017年数据结构期末考试题及答案A

2017年数据结构期末考试题及答案 一、选择题(共计50分,每题2分,共25题) 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. 在以下的叙述中,正确的是B ° A. 线性表的顺序存储结构优于链表存储结构 B. 二维数组是其数据元素为线性表的线性表 C?栈的操作方式是先进先出 D.队列的操作方式是先进后出

8. 通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 A. 数据元素具有同一特点 B. 不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C. 每个数据元素都一样 D. 数据元素所包含的数据项的个数要相等 9 ?链表不具备的特点是 A 。 A.可随机访问任一结点 B.插入删除不需要移动元素 C?不必事先估计存储空间 D.所需空间与其长度成正比 10. 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一 个结点,则采用 D 存储方式最节省运算时间。 A.单链表B ?给出表头指针的单循环链表 C.双链表D ?带头结点 的双循环链表 11. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。 A.单链表B .静态链表 C.线性链表 D .顺序存储结构 12 .非空的循环单链表head的尾结点(由p所指向)满足C 。 A. p—>next 一NULL B. p — NULL C. p—>next == head D. p = = head 13 .在循环双链表的p所指的结点之前插入s所指结点的操作是 D 。 A .p—> prior-> prior=s B .p—> prior-> n ext=s C.s —> prior—> n ext = s D.s —> prior—> prior = s 14 .栈和队列的共同点是C 。 A.都是先进后出 B .都是先进先出 C.只允许在端点处插入和删除元素 D .没有共同点

《数据结构》题库及答案

《数据结构》题库及答案 一、选择题 1.线性表的顺序存储结构是一种 的存储结构,线性表的链式存储结构是一种 的存储结构。 a. 随机存储; b.顺序存储; c. 索引存取; d. HASH 存取 2.一个栈的入栈序列是a,b,c,d,e ,则栈的不可能的输出序列是 。 a. edcba; b. decba; c. dceab; d.abcde 3.一个队列的入队序列是1,2,3,4,则队列的输出序列是 。 a. 4,3,2,1; b. 1,2,3,4; c. 1,4,3,2; d.3,2,4,1 4.在一个单链表中,已知p 结点是q 结点的直接前驱结点,若在p 和q 之间插入结点s ,则执行的操作是 。 a. s->nxet=p->next; p->next=s; b. p->next=s->next; s->next=p; c. q->next=s; s->next=p; d. p->next=s; s->next=q; 5.设有两个串p,q ,求q 在p 中首次出现的位置的运算称作 。 a.联接 b.模式匹配 c.求子串 d.求串长 6.二维数组M 的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i 的范围从0到8,列下标j 的范围从1到10,则存放M 至少需要 个字节。 a. 90 b.180 c.240 d.540 7.在线索二叉树中,结点p 没有左子树的充要条件是 。 a. p->lch==NULL b. p->ltag==1 c. p->ltag==1且p->lch=NULL d. 以上都不对 8.在栈操作中,输入序列为(A ,B ,C ,D ),不可能得到的输出序列为:______ A 、(A , B , C , D ) B 、(D ,C ,B ,A ) C 、(A ,C ,D ,B ) D 、(C ,A ,B ,D ) 9.已知某二叉树的后序序列是dabec ,中序序列是debac ,则它的先序序列是 。 A 、acbed B 、decab C 、deabc D 、cedba 10.设矩阵A 是一个对称矩阵,为了节省存储空间,将其下三角部分(见下图)按行序存放在一维数组B[1..n(n-1)/2]中,对任一上三角部分元素)(j i a ij ,在一维数组B 的存放位置是 。

数据结构模拟卷(含答案)经典习题培训讲学

数据结构模拟卷(含答案)经典习题

练习题 一、单项选择题 1. 若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合 C. 类型的有限集合 D. 关系的有限集合 2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( ) A. n-i+1 B. i C. i+1 D. n-i 3. 若不带头结点的单链表的指针为head,则该链表为空的判定条件是( ) A. head==NULL B. head->next==NULL C. head!=NULL D. head->next==head 4. 引起循环队列队头位置发生变化的操作是( ) A. 出队 B. 入队 C. 取队头元素 D. 取队尾元素 5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不.可能出现的出栈序列是( ) A. 2,4,3,1,5,6 B. 3,2,4,1,6,5 C. 4,3,2,1,5,6 D. 2,3,5,1,6,4

6. 字符串通常采用的两种存储方式是( ) A. 散列存储和索引存储 B. 索引存储和链式存储 C. 顺序存储和链式存储 D. 散列存储和顺序存储 7. 数据结构是() A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 8. 算法分析的目的是() A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 9. 在线性表的下列运算中,不.改变数据元素之间结构关系的运算是 () A.插入B.删除 C.排序D.定位10. 下列图示的顺序存储结构表示的二叉树是( )

数据结构考试题库

数据结构考试题库

绪论 一、填空题 1.数据的逻辑结构被分为集合、(线性结构)、(树形结构)和(图状结构)四种。 2.物理结构是数据结构在计算机中的表示,又称为(存储结构)。 3.数据元素的逻辑结构包括( 线性)、(树)和图状结构3种类型,树形结构和图状结构合称为(非线性结构)。 4.(数据元素)是数据的基本单位,(数据项)是数据不可分割的最小单位。 5.线性结构中元素之间存在(一个对一个)关系,树形结构中元素之间存在(一个对多个)关系,图状结构中元素之间存在(多个对多个)关系。 ?6.数据结构是一门研究非数值计算的程序设计问题中:计算机的(数据元素)以及它们之间的(关系)和(运筹)等的学科。 7.算法的五个重要特性为有穷性、确定性、(输入)、(输出)和(可行性)。 二、选择题 1.数据的不可分割的基本单位是(D)。 A.元素 B.结点 C.数据类型 D.数据项 *2.线性表的逻辑顺序与存储顺序总是一致的,这种说法(B)。 A.正确 B.不正确 C.不确定 D.无法选择 3.线性结构是指数据元素之间存在一种(D)。 精心整理,用心做精品2

A.一对多关系 B.多对多关系 C.多对一关系 D.一对一关系 4.在数据结构中,从逻辑上可以把数据结构分成(A)。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 5.线性表若采用链式存储结构时,要求内存中可用存储单元的 地址( D)。 A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续不连续都可以 三、简答题 1.算法的特性是什么。 答:有穷性确定性可行性有0或多个输入有1或多个输出线性结构 一、填空题 1.在一个长度为n的线性表中删除第i个元素(1≤i≤n)时,需向前移动(n-i)个元素。 2.从循环队列中删除一个元素时,其操作是(先移动队首指针,后取出元素)。 3.在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为(p->next)。 4.在一个单链表中指针p所指向结点的后面插入一个指针q所指向的结点时,首先把(p->next)的值赋给q->next,然后(q->date)的值赋给p->next。 5.从一个栈删除元素时,首先取出(栈顶元素),然后再使(栈顶指针)减1。 6.子串的定位操作通常称做串的(模式匹配)。 精心整理,用心做精品3

数据结构试题及答案(10套最新)

单选题(每题2分,共20分) 1. 1. 对一个算法的评价,不包括如下(B )方面的内容。 A .健壮性和可读性 B .并行性 C .正确性 D .时空复杂度 2.2. 在带有头结点的单链表HL 中,要向表头插入一个由指针 p 指向 的结点,则执行(A )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; 都具有相同的(A )。 A.行号 B .列号 C .元素值 D .非零元素个数 9. 快速排序在最坏情况下的时间复杂度为(D )。 A. O(log 2n) B . O(nlog 2n) C . 0(n) D 10.10. 从二叉搜索树中查找一个元素时,其时间复杂度大致 为 A. O(n) B. O(1) C. O(log 2 n) D. O(n 二、 运算题(每题6分,共24分) 1. 1. 数据结构是指数据及其相互之间的 _________________ 。当结点之 间存在M 对N (M N)的联系时,称这种结构为 __________________________ 。 2. 2. 队列的插入操作是在队列的_ _尾 ________ 行,删除操作是在队 列的 ____ 首 _____ 行。 3. 3. 当用长度为N 的数组顺序存储一个栈时,假定用top==N 表示栈 C. p->next=HL; p=HL; 3. 3. A. C. D. HL=p; p-> next=HL; 对线性表,在下列哪种情况下应当采用链表表示? 经常需要随机地存取元素 B. 表中元素需要占据一片连续的存储空间 一个栈的输入序列为1 2 3, 4. 4. 列的是(C ) A. 2 3 1 C. 3 1 2 AOV 网 是一种(D ) 有向 图 B .无向图 (B ) 经常需要进行插入和删除操作 D.表中元素的个数不变 则下列序列中不可能是栈的输出序 B. 3 2 1 5. 5. 6. .无向无环图 D .有向无环图 采用 开放定址法处理散列表的冲突时,其平均查找长度( B. 高于链接法处理冲突 D .高于二分查找 7. 8. 6. A.低于链接法处理冲突 .与链接法处理冲突相同 7. 参数。 A.值 8. B)。 若需要利用形参直接访问实参时,应将形参变量说明为( B .函数 C .指针 D .引用 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点 9. .0(n 2) (C )。 2 )

数据结构模拟卷(含答案)经典习题

练习题 一、单项选择题 1. 若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合 C. 类型的有限集合 D. 关系的有限集合 2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( ) A. n-i+1 B. i C. i+1 D. n-i 3. 若不带头结点的单链表的指针为head,则该链表为空的判定条件是( ) A. head==NULL B. head->next==NULL C. head!=NULL D. head->next==head 4. 引起循环队列队头位置发生变化的操作是( ) A. 出队 B. 入队 C. 取队头元素 D. 取队尾元素 5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不.可能出现的出栈序列是( ) A. 2,4,3,1,5,6 B. 3,2,4,1,6,5 C. 4,3,2,1,5,6 D. 2,3,5,1,6,4 1

6. 字符串通常采用的两种存储方式是( ) A. 散列存储和索引存储 B. 索引存储和链式存储 C. 顺序存储和链式存储 D. 散列存储和顺序存储 7. 数据结构是() A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 8. 算法分析的目的是() A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 9. 在线性表的下列运算中,不.改变数据元素之间结构关系的运算是 () A.插入B.删除 C.排序D.定位 10. 下列图示的顺序存储结构表示的二叉树是( ) 2

数据结构期末考试试题及答案

数据结构期末考试试题及答案 、选择题 评价一个算法时间性能的主要标准是()。1. A、算法易于调试 B、算法易于理解 C、算法的稳定性和正确性 D、算法的时间复杂度 )等五个特性。计算机算法具备有输入、输出、 2. A、可行性、可移植性和可扩充性 B、可行性、确定性和有穷性 C、确定性、有穷性和稳定性 D、XX、稳定性和XX 。带头结点的单链表head为空的判定条件是()3. A、h ead==NULL B、h ead->next==NULL C、head->next==head D、head!=NULL 以下关于线性表的说法不正确的是()。4. A、线性表中的数据元素可以是数字、字符、记录等不同类型。 B、线性表中包含的数据元素个数不是任意的。

C、线性表中的每个结点都有且只有一个直接前趋和直接后继。 D、存在这 样的线性表:表中各结点都没有直接前趋和直接后继。 在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。 5.A、基地址 B、结点大小 C、向量大小 D、基地址和结点大小 ()运算中,使用顺序表比链表好。6. A、插入 B、删除 C、根据序号查找 D、根据元素值查找一个长度为n的顺序表中,向第i个元素之前插入一个新元素时,需要向后移动()个元素7.A、n-i B、n-i+1 C、n-i-1 D、i ()适合作为经常在首尾两端操作线性表的存储结构。8. A、顺序表 B、单链表 C、循环链表 D、双向链表

栈和队列的共同点是() 9. A、都是先进后出 B、都是先进先出 C、只允许在端点处插入和删除元素 D、没有共同点 一个队列的入列序列是1234,则队列的输出序列是()。10. A 、4321 B 、12 3 4 C 、1432 D 、 3241队列与一般的线性表的区别在于()。11. A、数据元素的类型不同 B、运算是否受限制 C、数据元素的个数不同 D、逻辑结构不同 假上溢”现象会出现在()中。12. A、循环队列 B、队列 C、链队列 、顺序队列D.二、填空

数据结构题库教材

2013-2014学年二学期数据结构期末考试模拟试卷(1~6卷) 一、应用题(3小题,共24分) 1已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3 次、4次和9次,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。 【解答】以各字符出现的次数作为叶子结点的权值构造的哈夫曼编码树如图所示。其带权路 径长度=2X 5+1X 5+3X 4+5X 3+9X 2+4X 3+4X 3+7X 2=98,所以,该字符串的编码长度至少为98位。 2.已知关键码序列为(Ja n, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec), 散列表的地址空间为0~16,设散列函数为H(x)= [i/2」(取下整数),其中i为关键码 中第一个字母在字母表中的序号,采用链地址法处理冲突构造散列表,并求等概率情况下查找成功的平均查找长度。 【解答】H(Ja n)=10/2=5, H(Feb)=6/2=3, H(Mar)=13/2=6, H(Apr)=1/2=0 H(May)=13/2=6, H(Ju n)=10/25, H(Jul)=10/25, H(Aug)=1/2=0 H(Sep)=19/2=8, H(Oct) =15/2=7, H(Nov) =14/2=7, H(Dec) =4/2=2 采用链地址法处理冲突,得到的开散列表如下: 平均查找长度=(1 X 7+2X 4+3X 1)/12=18/12

3.分析下面各程序段的时间复杂度 (1)s1(int n) { int p=1,s=0; for (i=1;iv=n;i++) { p*=i;s+=p; } return(s); } ——0(n) (2)s2(int n) x=0;y=0; For (k=1;kv=n;k++) x++; For (i=1;iv=n;i++) For (j=1;jv=n;j++) y++; ——0(n) 1?下述算法的功能是什么? ListNode *Demo l(LinkList L P ListNode *p) ("L是有头结蛊的单链表 ListNodc *q=L->rLCxt P (1) V ‘V … 」(1 )返回结点*p的直接前趋结点地址。 q=q->nest; if (q) return q, else ?ro< #*p not in L"); I ⑵ i/oid Demo2(LisINode *p ,ListNode +q) 〔//p t*q*8S 表中的 两个结点 (2)交换结点*p和结点*q (p和q的值不变)。 DataTypetemp; temp=p->data, p->data=q->data; q-x^ata^emp, 1.对给定的一组权值W=( 5, 2, 9, 11, 8, 3, 7),试构造相应的哈夫曼树,并计算它的带权路径长度。【解答】构造的哈夫曼树如图所示。

算法与数据结构题库与答案

一、单项选择题 1 某算法的时间复杂度是O(n 2 ) ,表明该算法()。 A 问题规模是n2 B 问题规模与n2成正比 C 执行时间等于n2 D 执行时间与n2成正比 2、关于数据结构的描述,不正确的是()。 A数据结构相同,对应的存储结构也相同。 B数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。 C数据结构操作的实现与存储结构有关。 D定义逻辑结构时可不考虑存储结构。 3、按排序策略分来,起泡排序属于()。 A插入排序B选择排序C交换排序D归并排序 4、利用双向链表作线性表的存储结构的优点是()。 A便于进行插入和删除的操作 B 提高按关系查找数据元素的速度 C节省空间D便于销毁结构释放空间 5、一个队列的进队顺序为1,2,3,4,则该队列可能的输出序列是()。 A 1,2,3,4 B 1,3,2,4 C 1,4,2,3 D 4,3,2,1 6、 Dijkstra算法是按()方法求出图中从某顶点到其余顶点最短路径的。 A按长度递减的顺序求出图的某顶点到其余顶点的最短路径 B按长度递增的顺序求出图的某顶点到其余顶点的最短路径 C通过深度优先遍历求出图中从某顶点到其余顶点的所有路径 D通过广度优先遍历求出图的某顶点到其余顶点的最短路径 7、字符串可定义为n( n≥ 0)个字符的有限()。其中,n是字符串的长度,表明字符串中字符的个数。 A集合B数列C序列D聚合 8、在二维数组A[9][10]中,每个数组元素占用 3 个存储单元,从首地址SA 开始按行连续存放。在这种情况下,元素A[8][5]的起始地址为()。 A SA+141 B SA+144 C SA+222 D SA+255 9、已知广义表为L(A(u,v,(x,y),z),C(m,(),(k,l,n),(())),((())),(e,(f,g),h)),则它的长度是()。 A2B3C4D5 10.对于具有n(n>1)个顶点的强连通图,其有向边条数至少有_____。 A. n+1 B. n C. n-1 D. n-2 11.一个递归算法必须包括 __________ 。 A. 递归部分 B . 结束条件和递归部分 C. 迭代部分 D. 结束条件和迭代部分 12.从逻辑上看可以把数据结构分为__________两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 13、若在长度为n 的顺序表的表尾插入一个新元素的渐进时间复杂度为()。 A O(n) B O(1) C O(n 2) D O(log 2n) 14.采用顺序搜素方式搜索长度为 n 的线性表时,在等概率情况下,搜索成功时的平均搜索 长度为 __________。 A. n B. n/2 C . (n+1)/2 D. (n-1)/2 15、非空的循环单链表first的链尾结点(由p 所指向)满足()。 A p->link==NULL; B P==NULL;

经典数据结构上机题_答案解析

数据结构上机实验题目 实验一线性表的顺序存储结构 实验学时 2学时 背景知识:顺序表的插入、删除及应用。 目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 实验容 1.输入一组整型元素序列,建立顺序表。 2.实现该顺序表的遍历。 3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。 5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 6.输入整型元素序列利用有序表插入算法建立一个有序表。 7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。 8. 利用该顺序结构实现循环队列的入队、出队操作。 8.编写一个主函数,调试上述算法。 #include #include

#define OVERFLOW 0 #define MAXSIZE 100 typedef int ElemType; typedef struct list {ElemType elem[MAXSIZE]; int length; }Sqlist; void Creatlist(Sqlist &L) {int i; printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。 scanf("%d",&L.length); for(i=0;i

《数据结构》期末考试题及答案

2011-2012学年第一学期期末考查 《数据结构》试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一、选择(每题1分,共10分) 1.长度为n的线性表采用顺序存储结构,一个在其第i个位置插入新元素的算法时间复杂度为(D) A.O(0) B.O(1) C.O(n) D.O(n2) 2.六个元素按照6,5,4,3,2,1的顺序入栈,下列哪一个是合法的出栈序列?(D) A.543612 B.453126 C.346512 D.234156 3.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为(B ) A.8 B.9 C.10 D.11 4.设森林F对应的二叉树B有m个结点,B的右子树结点个数为n,森林F中第一棵树的结点个数是( B ) A. m-n B.m-n-1 C.n+1 D.m+n 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B) A.9 B.11 C.15 D.不确定 6.下列哪一个方法可以判断出一个有向图是否有环。(A) A.深度优先遍历 B.拓扑排序 C.求最短路径 D.求关键路径 7.第7层有10个叶子结点的完全二叉树不可能有(B )个结点。 A.73 B.234 C.235 D.236 8.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是(B) A.(100,80,90,60,120,110,130) B.(100, 120, 110,130,80, 60,90) C.(100,60,80,90,120,110,130) D.(100,80, 60,90, 120, 130,110) 9.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序过程中变化如下:(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47(4)15 21 25 47 84则采用的排序方法是(B ) A.选择排序 B.起泡排序 C.快速排序 D.插入排序 10.对线性表进行折半查找时,要求线性表必须(D) A.以顺序方式存储 B.以顺序方式存储,且数据元素有序

数据结构相关题库及答案

第三章栈和队列 一、判断题: 1、栈和队列都是限制存取点的线性结构(易) 2、栈和队列是两种重要的线性结构。(易) 3、带头结点的单链表形式的队列,头指针F指向队列的头结点,尾指针R指向队列的最后一个结点(易) 4、在对不带头结点的链队列作出队操作时,不会改变头指针的值。(易) 答案:1-4 √√×× 二、选择题: 1、一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是C____。 A、 edcba B、 decba C、 dceab D、 abcde 2、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi 为_C___。 A、 i B、 n=i C、 n-i+1 D、不确定 3、栈结构通常采用的两种存储结构是_A___。 A、顺序存储结构和链式存储结构 B、散列方式和索引方式 C、链表存储结构和数组 D、线性存储结构和非线性存储结构 4、判定一个顺序栈ST(最多元素为m0)为空的条件是_B___。A、top !=0 B、top= =0 C、top !=m0 D、top= =m0-1 5、判定一个顺序栈ST(最多元素为m0)为栈满的条件是D。A、top!=0 B、top= =0 C、top!=m0 D、top= =m0-1 6、队列操作的原则是( A ) A、先进先出 B、后进先出 C、只能进行插入 D、只能进行删 除 7、向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行__ _C_。(不带空的头结点) (易) A、HS—>next=s;9 B、s—>next= HS—>next; HS—>next=s; C、s—>next= HS; HS=s; D、s—>next= HS; HS= HS—>next

数据结构经典题目c语言代码

《数据结构》课程设计题目 (程序实现采用C语言) 题目1:猴子选王(学时:3) 一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。 //链表 #include #include // 链表节点 typedef struct _RingNode { int pos; struct _RingNode *next; }RingNode, *RingNodePtr; // 创建约瑟夫环,pHead:链表头指针,count:链表元素个数 void CreateRing(RingNodePtr pHead, int count) { RingNodePtr pCurr = NULL, pPrev = NULL; int i = 1; pPrev = pHead; while(--count > 0)

{ pCurr = (RingNodePtr)malloc(sizeof(RingNode)); i++; pCurr->pos = i; pPrev->next = pCurr; pPrev = pCurr; } pCurr->next = pHead; // 构成环状链表 } void KickFromRing(RingNodePtr pHead, int n) { RingNodePtr pCurr, pPrev; int i = 1; // 计数 pCurr = pPrev = pHead; while(pCurr != NULL) { if (i == n) { // 踢出环 printf("\n%d", pCurr->pos); // 显示出圈循序 pPrev->next = pCurr->next; free(pCurr); pCurr = pPrev->next; i = 1; } pPrev = pCurr;

数据结构考试及答案()

数据结构考试及答案()

作者: 日期: 2

数据结构试题 一、单选题 1、在数据结构的讨论中把数据结构从逻辑上分为(C) A 内部结构与外部结构 B 静态结构与动态结构 C 线性结构与非线性结构 D 紧凑结构与非紧凑结构。 2、采用线性链表表示一个向量时,要求占用的存储空间地址(D) A 必须是连续的B部分地址必须是连续的 C 一定是不连续的D可连续可不连续 3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为 (D )。 An B n/2 C (n-1)/2 D (n+1)/2 4、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行(D )o 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; 5、如果想在4092个数据中只需要选择其中最小的5个,采用(C )方法最好。 A 起泡排序 B 堆排序C锦标赛排序 D 快速 排序 6、设有两个串t和p,求p在t中首次出现的位置的运算叫做(B )o A 求子串B模式匹配C 串替换 D 串连接 7、在数组A中,每一个数组元素A[i][j] 占用3个存储字,行下标i从1到8,

列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放 该数组至少需要的存储字数是( C )。 A 80 B 100 C 240 D 270 8、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。 A 栈B队列C循环队列D优先队列 9、一个队列的进队列顺序是1,2, 3, 4 ,则出队列顺序为(C )。 10、在循环队列中用数组A[0.. m-1]存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。 A ( front - rear + 1) % m B (rear - front + 1) %m C ( front - rear + m) % m D ( rear - front + n) % m 11、一个数组元素a[i]与(A )的表示等价。 A * (a+i) B a+i C *a+i D &a+i 12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数 A指针 B 引用C值 D 变量 13、下面程序段的时间复杂度为(C) for (i nt i=0;i

数据结构试题及答案(10套最新)

一、单选题(每题 2 分,共20分) 1. 1.对一个算法的评价,不包括如下(B )方面的内容。 A.健壮性和可读性B.并行性C.正确性D.时空复杂度 2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结 点,则执行(A )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. HL=p; p->next=HL; 3. 3.对线性表,在下列哪种情况下应当采用链表表示?( B ) A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是 ( C ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5. 5.AOV网是一种(D )。 A.有向图B.无向图C.无向无环图D.有向无环图 6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度(B)。 A.低于链接法处理冲突 B. 高于链接法处理冲突 C.与链接法处理冲突相同D.高于二分查找 7.7.若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。 A.值B.函数C.指针D.引用 8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具 有相同的( A )。 A.行号B.列号C.元素值D.非零元素个数 9.9.快速排序在最坏情况下的时间复杂度为(D )。 A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2) 10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。 A. O(n) B. O(1) C. O(log2n) D. O(n2) 二、运算题(每题 6 分,共24分) 1. 1.数据结构是指数据及其相互之间的______________。当结点之间存在M 对N(M:N)的联系时,称这种结构为_____________________。 2. 2.队列的插入操作是在队列的_ _尾______进行,删除操作是在队列的____ 首______进行。 3. 3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则 表示栈满的条件是___top==0___(要超出才为满)_______________。 4. 4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度 为_________,在表尾插入元素的时间复杂度为____________。

数据结构经典例题

数据结构经典例题 1.设计一个算法将L拆分成两个带头节点的单链表L1和L2。 void split(LinkList *&L,LinkList *&L1,LinkList *&L2) { LinkList *p=L->next,*q,*r1; //p指向第1个数据节点 L1=L; //L1利用原来L的头节点 r1=L1; //r1始终指向L1的尾节点 L2=(LinkList *)malloc(sizeof(LinkList));//创建L2的头节点 L2->next=NULL; //置L2的指针域为NULL while (p!=NULL) { r1->next=p; //采用尾插法将*p(data值为ai)插入L1中 r1=p; p=p->next; //p移向下一个节点(data值为bi) q=p->next; //由于头插法修改p的next域,故用q保存*p的后继节点 p->next=L2->next; //采用头插法将*p插入L2中 L2->next=p; p=q; //p重新指向ai+1的节点 } r1->next=NULL; //尾节点next置空 } 2.查找链表中倒数第k个位置上的节点(k为正整数)。若查找成功,算法输出该节点的data域的值,并返回1;否则,只返回0。 typedef struct LNode {int data; struct LNode *link; } *LinkList; int Searchk(LinkList list,int k) { LinkList p,q; int count=0; p=q=list->link; while (p!=NULL) { if (countlink; p=p->link; } if (count

2015年数据结构期末考试题及答案

2012年数据结构期末考试题及答案 一、选择题 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<n;i++) for(j=0;j<n;j++) s +=B[i][j]; sum =s ; 9.下面程序段的时间复杂度是O(n*m)。 for(i =0;i<n;i++) for(j=0;j<m;j++) A[i][j] =0; 10.下面程序段的时间复杂度是O(log3n)。 i =0; while(i<=n) i =i * 3; 11.在以下的叙述中,正确的是B。 A.线性表的顺序存储结构优于链表存储结构 B.二维数组是其数据元素为线性表的线性表 C.栈的操作方式是先进先出 D.队列的操作方式是先进后出 12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着B 。 A.数据元素具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 13.链表不具备的特点是A。 A.可随机访问任一结点B.插入删除不需要移动元素 C.不必事先估计存储空间D.所需空间与其长度成正比 14.不带头结点的单链表head为空的判定条件是A。

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