文档库 最新最全的文档下载
当前位置:文档库 › 数据结构考试试题及答案

数据结构考试试题及答案

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

数据结构考试试题及答案

2009-05-12 09:22

计科2班期中考试题

答案提交说明:写清题号,以word文本格式保存,文件名命名规则为:姓名+学号,放到ftp://192.168.130.50的“计科2班考试”文件夹中。

一.填空题(每题1分,共10分)

(1)已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第0个元素的地址为address,则第i 个结点的地址是(address+i*m)。

(2)线性表有两种存储结构:顺序存储结构和链式存储结构,就两种存储结构完成下列填空:(顺序存储结构)存储密度较大,(链式存储结构)存储利用率较高,(顺序存储结构)可以随机存取,(链式存储结构)不可以随机存取,(链式存储结构)插入和删除操作比较方便。(3)顺序表中逻辑上相邻的元素在物理位置上(也相邻),在链表中逻辑上相邻的元素的物理位置(不一定)相邻。

(4)在一个长度为n的顺序表中,在第i个元素(0<=i<=n)之前插入一个新元素时须向后移动(n-i+1 )个元素。

(5)在顺序表la的第i个元素前插入一个新元素,则有效的i值范围是(0 <=i<=length -1 );在顺序表lb的第j个元素之后插入一个新元素,则j的有效范围是(0 <= j<=length-1);要删除顺序表lc的第k个元素,则k的有效范围是(0 <=k<=length-1 )。

(6)设有一个空栈,现有输入序列为1,2,3,4,5,经过操作序列push , pop , push , push , pop,

push ,push ,pop 后,现在已出栈的序列是1,3,5 ,栈顶元素的值是 4 。

(7)设有栈S ,若线性表元素入栈顺序为1,2,3,4,得到的出栈序列为1,3,4,2,则用栈的基本运算Push, Pop描述的操作序列为push , pop, push, push , pop, push , pop, pop。

(8)在队列结构中,允许插入的一端为队尾,允许删除的一端为对头。

(9)在一个链队列中,若队头指针为front,队尾指针为rear,则判断该队列只有一个结点的条件

Q.front->next=Q.rear 。

(10)设循环队列的头指针front 指向队头元素,尾指针rear 指向队尾元素后的一个空闲元素,队列的最大空间为MAX ,则队空的标志为Q.front=Q.rear,队满的标志为

(Q.rear+1)%MAX=Q. 当rear

二.判断题(每题0.5分,共5分。正确用T表示,错误用F表示)

(1)栈和队列都是限制存取点的线性结构。T

(2)设栈的输入序列是1,2,····n,若输出序列的第一个元素是n,则第i个输出元素是n-i+1.F (3)若一个栈的输入序列是1,2,3···n,输出序列的第一个元素是i,则第i个输出元素不确定。T (4)循环队列不会发生溢出。F

(5)链队列与循环队列相比,前者不会发生溢出。T

(6)直接或间接调用自身的算法就是递归算法。T

(7)数据元素是数据的最小单位。F

(8)数据结构是带有结构的数据元素的集合。T

(9)算法的时间复杂度是算法执行时间的绝对度量。F

(10)算法的正确性是指算法不存在错误。F

三.简答题(满分5分)

(1)假设我们要从线性表中删除一个数据元素b,如图1-1所示,已知p为其单链表存储结构中指向结点a的指针。写出删除结点b后,修改指针的语句。(此题2分)

a

b

c

p

p→next=p→next→next;

图1-1

(2)编制一程序(可用伪码描述,写出解题思路可酌情得分):对于输入的任意一个非负十进制整数,输出与其等值的16进制数。(此题3分)

void conversion()

{

InitStack(S);

scanf(“%d”N);

while(N)

{

Push(S,N%16);

N=N/16;

}

while(!StackEmpty(s))

{

Pop(S,e);

Printf(“%d”,e);

}

}

输入一个十进制数N,使N对16求余,构造一个空栈,并将余数入栈,再将N除16的值赋给N;依次循还,再将栈中元素进行出栈操作即可。

单项选择题

1.用单链表方式存储的线性表,存储每个结点需要两个域,一个是数据域,另一个是(.B )。

A . 当前结点的所在地址 B. 后继结点的所在地址

C. 空指针域

D. 空闲域

2.在一个单链表中,若p所指结点不是最后结点,则删除p所指结点的后继结点的正确操作是(C ) A. p=p->next B. p->next=p->next

C. p->next=p->next->next

D. p->next=p

3.栈和队列( C?应该是在顶端进行取数据的操作)

A.共同之处在于二者都是先进先出的特殊的线性表

B.共同之处在于二者都是先进后出的特殊的线性表

C.共同之处在于二者都只允许在顶端执行删除操作

D.没有共同之处

4.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为(D )

A.front=front+1 B. front=(front+1)%m

C.rear=(rear+1)%m D. front=(front+1)%(m+1)

5. 已知函数Sub(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数Scopy(s,t)的功能为复制串t到s。若字符串S=〃SCIENCESTUDY〃,则调用函数Scopy(P,Sub(S,1,7))后得到( A )

A.P=〃SCIENCE〃

B.P=〃STUDY〃

C.S=〃SCIENCE〃

D.S=〃STUDY〃

6.在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法是( C )

A.快速排序

B.堆排序

C.归并排序

D.基数排序

7.图的邻接表如下所示,从顶点V1出发采用深度优先搜索法遍历该图,则可能的顶点序列是( )

A.V1V2V3V4V5

B.V1V2V3V5V4

C.V1V4V3V5V2

D.V1V3V4V5V2

8.下列排序方法中,属于不稳定的排序方法是(A )

A.直接插入排序法

B.冒泡排序法

C.基数排序法

D.归并排序法

数据结构考试试题及答案1

一、判断下列叙述的对错。

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

(2)线性表的顺序存储表示优于链式存储表示。

(3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

(4)二维数组是其数组元素为线性表的线性表。

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

二、设单链表中结点的结构为

typedef struct node { file://链表结点定义

ElemType data;file://数据

struct node * Link;file://结点后继指针

} ListNode;

(1)已知指针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;

(2)非空的循环单链表first的尾结点(由p所指向)满足:

A. p->link == NULL;

B. p == NULL;

C. p->link == first;

D. p == first;

三、设有一个顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,

s4,s6,s5,s1,则顺序栈的容量至少应为多少?

四、一棵具有n个结点的理想平衡二叉树(即除离根最远的最底层外其他各层都是满的,最底层有若干结

点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示(注意n可能为0)?

五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。(1)对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为(A),所有边链

表中边结点的总数为(B)。

(2)采用邻接表存储的图的深度优先遍历算法类似于树的(C)。

(3)采用邻接表存储的图的广度优先遍历算法类似于树的(D)。

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

供选择的答案

A:①n②n+1③n-1④n+e

B:①e/2②e③2e④n+e

C~D:①中根遍历②先根遍历③后根遍历④按层次遍历

E:①求关键路径的方法②求最短路径的Dijkstra方法

③深度优先遍历算法④广度优先遍历算法

六、填空题

(1)在用于表示有向图的邻接矩阵中,对第i行的元素进行累加,可得到第i个顶点的(①)度,而对第

j列的元素进行累加,可得到第j个顶点的(②)度。

(2)一个连通图的生成树是该图的(③)连通子图。若这个连通图有n个顶点,则它的生成树有(④)

条边。

(3)给定序列{100,86,48,73,35,39,42,57,66,21},按堆结构的定义,则它一定(⑤)

堆。

(4)在进行直接插入排序时,其数据比较次数与数据的初始排列(⑥)关;而在进行直接选择排序时,

其数据比较次数与数据的初始排列(⑦)关。

(5)利用关键码分别为10,20,30,40的四个结点,能构造出(⑧)种不同的二叉搜索树。

七、设带表头结点的双向链表的定义为

typedef int ElemType;

typedef struct dnode { file://双向链表结点定义

ElemType data;file://数据

struct dnode * lLink,* rLink;file://结点前驱与后继指针

DblNode;

typedef DblNode * DblList;file://双向链表

试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink 中,并利用左链域lLink把所有结点按照其值从小到大的顺序连接起来。

八、设有一个关键码的输入序列{ 55,31,11,37,46,73,63,02,07 ,

(1)从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需

做的平衡旋转的类型及平衡旋转的结果。

(2)计算该平衡二叉搜索树在等概率下的查找成功的平均查找长度和查找不成功的平均查找长度。

九、下面是求连通网络的最小生成树的Prim算法的实现,中间有5个地方缺失,请阅读程序后将它们补

上。

const int MaxInt = INT_MAX;file://INT_MAX的值在中

const int n = 6;file://图的顶点数,应由用户定义

typedef int AdjMatrix[n>[n>;file://用二维数组作为邻接矩阵表示

typedef struct file://生成树的边结点

int fromVex,toVex;file://边的起点与终点

int weight;file://边上的权值

TreeEdgeNode;

typedef TreeEdgeNode MST[n-1>;file://最小生成树定义

void PrimMST (AdjMatrix G,MST T,int rt ){

file://从顶点rt出发构造图G的最小生成树T,rt成为树的根结点

TreeEdgeNode e;int i,k = 0,min,minpos,v;

for (i = 0;i < n;i++ )file://初始化最小生成树T

if (i != rt ){

T[k>.fromVex = rt;

T[k>.toVex = I ;

T[k++>.weight = G[rt>;

}

for (k = 0;k < n-1;k++ ){ file://依次求MST的候选边

min = MaxInt ;

for (i = k;i < n-1;i++ )file://遍历当前候选边集合

if (T.weight < min )file://选具有最小权值的候选边

{ min = T.weight;minpos = i ;}

if (min == MaxInt )file://图不连通,出错处理

{ cerr 《“Graph is disconnected!”《endl;exit(1);}

e = T[minpos>;T[minpos> = T[k> ;T[k> = e;

v = T[k>.toVex;

for (i = k+1;i < n-1;i++ )file://修改候选边集合

if (G[v>[T.toVex> < T.weight )

T.weight = G[v>[T.toVex>;

T.fromVex = v ;

参考答案

一、(1)错(2)错(3)对(4)错(5)对

二、(1) B (2) C

三、3

四、h =élog2(n+1)ù-1

五、A.①B.③C.②D.④E.③

六、①出②入③极小④n-1

⑤是(最小)⑥有⑦无⑧14

七、算法如下

void sort (DblNode * L ){

DblNode * s = L->rlink;

file://指针s指向待插入结点,初始时指向第一个结点

while (s != NULL ){ file://处理所有结点

pre = L;p = L->lLink;

file://指针p指向待比较的结点,pre是p的前驱指针

while (p != NULL && s->data < p->data )

file://循lLink链寻找结点*s的插入位置

{ pre = p;p = p->lLink;}

pre->lLink = s;s->lLink = p;s = s->rLink;

file://结点*s在lLink方向插入到*pre与*p之间

}

八、关键码的输入序列{ 55,31,11,37,46,73,63,02,07 }

在等概率下查找成功的平均查找长度

在等概率下查找不成功的平均查找长度

九①T[k>.toVex = i

②min = MaxInt

③minpos = i

④exit(1)

⑤T.fromVex = v

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

2009-01-04 11:22

期末样卷参考答案

一.是非题(每题1分共10分)

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

2. 栈和队列也是线性表。如果需要,可对它们中的任一元素进行操作。F

3.字符串是数据对象特定的线性表。T

4.在单链表P指针所指结点之后插入S结点的操作是:P->next= S ; S-> next = P->next; F 5.一个无向图的连通分量是其极大的连通子图。T

6.邻接表可以表示有向图,也可以表示无向图。T

7.假设B是一棵树,B′是对应的二叉树。则B的后根遍历相当于B′的中序遍历。 T

8.通常,二叉树的第i层上有2i-1个结点。F

9.对于一棵m阶的B-树,树中每个结点至多有m 个关键字。除根之外的所有非终端结点至少有ém/2ù个关键字。F

10.对于任何待排序序列来说,快速排序均快于起泡排序。F

二.选择题(每题2分共28分)

1.在下列排序方法中,( c )方法平均时间复杂度为0(nlogn),最坏情况下时间复杂度为0(n2);( d )方法所有情况下时间复杂度均为0(nlogn)。

a. 插入排序

b. 希尔排序

c. 快速排序

d. 堆排序

2. 在有n个结点的二叉树的二叉链表表示中,空指针数为( b )。

a.不定

b.n+1

c.n

d.n-1

3. 下列二叉树中,( a )可用于实现符号不等长高效编码。

a.最优二叉树

b.次优查找树

c.二叉平衡树

d.二叉排序树

4. 下列查找方法中,( a )适用于查找有序单链表。

a.顺序查找

b.二分查找

c.分块查找

d.哈希查找

5. 在顺序表查找中,为避免查找过程中每一步都检测整个表是否查找完毕,可采用( a )方法。

a.设置监视哨

b.链表存贮

c.二分查找

d.快速查找

6. 在下列数据结构中,( c )具有先进先出特性,( b )具有先进后出特性。

a.线性表 b.栈 c.队列 d.广义表

7.具有m个结点的二叉排序树,其最大深度为( f ),最小深度为( b )。

a. log 2 m

b. └ log2 m ┘ +1

c. m/2

d .┌ m/2 ┐ -1 e. ┌ m/2 ┐ f. m

8.已知一组待排序的记录关键字初始排列如下:56,34,58,26,79,52,64,37,28,84,57。

下列选择中( c )是快速排序一趟排序的结果。

( b )是希尔排序(初始步长为4)一趟排序的结果。

( d )是基数排序一趟排序的结果。

( a )是初始堆(大堆顶)。

a. 84,79,64,37,57,52,58,26,28,34,56。

b. 28,34,57,26,56,52,58,37,79,84,64。

c. 28,34,37,26,52,56,64,79,58,84,57。

d. 52,34,64,84,56,26,37,57,58,28,79。

e. 34,56,26,58,52,64,37,28,79,57,84。

f. 34,56,26,58,52,79,37,64,28,84,57。

三.填空题(每题2分共20分)

1.有向图的存储结构有(邻接矩阵)、(邻接表)、(十字链表)等方法。

2.已知某二叉树的先序遍历次序为afbcdeg,中序遍历次序为cedbgfa。

其后序遍历次序为(edcgbfa)。层次遍历次序为(afbcgde)。

3.设有二维数组A 5 x 7 ,每一元素用相邻的4个字节存储,存储器按字节编址。已知A00的存储地址为100。则按行存储时,元素A14的第一个字节的地址是(144);按列存储时,元素A14的第一个字节的地址是(184)。

4.请在下划线上填入适当的语句,完成以下法算。

Status Preordertraverse(Bitree T,Status(*Visit)(Telemtype e)){

//先序非递归遍历二叉树。

Initstack ( S ); Push ( S,T );

While ( !stackempty( S ) )

{ While ( gettop( S, p )&& p ) { visit (p->data ) ; push(S, p->lchild ;}

Pop ( S , p );

If ( !stackempty(s) ) { pop(S, p) ; push( S, p->rchild ); }

}

return ok;

四.简答题(每题5分共25分)

1.将图示森林转换为二叉树,并对该二叉树中序全序线索化。

h

d

a

j

i

b

f

e

c

m

l

k

g

2.已知Hash函数为 H(K)=K mod 13 ,散列地址为0 --14,

用二次探测再散列处理冲突,给出关键字(23,34,56,24,75,12,49, 52,36,92,06,55)在散列

地址的分布。

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

3. 右图为一棵3阶B 树。(20,25)

a. 画出在该树上插入元素15后的B 树。/│ \

b. 接着,再删除元素35,画出删除后的B 树。 (10,14)(21)(35)

4.已知某无向图的邻接表存储结构如图所示。

a.请画出该图。

b.根据存储结构给出其深度优先遍历序列及广度优先遍历序列。

c.画出其深度优先生成树及广度优先生成树。

0 a 2 4 /\

1 b

2

3

4 /\

2 c 0 1 4 /\

3 d 1 /\

4 e 0 1 2 /\

5. 设在某通信系统中使用了八个字符,它们出现的频率分别为0.08,0.05,0.1,0.12,0.26,0.18,0.14,0.07,试构造一棵赫夫曼树,并给出赫夫曼编码。

五.算法设计题(共17分)

1. 单链表结点的类型定义如下:

typedef struct LNode {

int data;

struct LNode *next;

} LNode, *Linklist;

写一算法,将带头结点的有序单链表A和B合并成一新的有序表C。

(注:不破坏A和B的原有结构.)

Merge(Linklist A, Linklist B, Linklist &C )

void Merge(Linklist A, Linklist B, Linklist &C)

{ C=(Linklist)malloc(sizeof(LNode));

pa=A->next; pb=B->next; pc=C;

while(pa&&pb)

{ pc->next=(Linklist)malloc(sizeof(LNode));

pc=pc->next;

if(pa->data<=pb->data)

{ pc->data=pa->data; pa=pa->next;}

else

{ pc->data=pb->data; pb=pb->next;}

}

if(!pa) pa=pb;

while(pa)

{ pc->next=(Linklist)malloc(sizeof(LNode));

pc=pc->next;

pc->data=pa->data; pa=pa->next;

}

pc->next=NULL;

}

2. 二叉树用二叉链表存储表示。

typedef struct BiTNode {

TelemType data;

Struct BiTNode *lchild, *rchild;

} BiTNode, *BiTree;

编写一个复制一棵二叉树的递归算法。

BiTree CopyTree(BiTree T) {

if (!T ) return NULL;

if (!(newT = (BiTNode*)malloc(sizeof(BiTNode))))

exit(Overflow);

newT-> data = T-> data;

newT-> lchild = CopyTree(T-> lchild);

newT-> rchild = CopyTree(T-> rchild);

return newT;

} // CopyTree

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

一、单选题(每小题2分,共8分)

1.在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。

A.n

B.n/2

C.(n+1)/2

D.(n-1)/2

2.在一个带附加表头的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行

D 。

A.HL=p;p->next=HL;

B.p->next=HL;HL=p;

C.p->next=HL;p=HL;

D.p->next=HL->next;HL->next=p;

3.若让元素A,B,C,D依次入栈,则出栈次序不可能出现 D 种情况。

A.D,C,B,A

B.A,D,C,B

C.B,A,D,C

D.D,A,B,C

4.从一个顺序队列删除元素时,首先需要 B 。

A.前移一位队首指针

B.后移一位队首指针

C.取出队首指针所指位置上的元素

D.取出队尾指针所指位置上的元素

二、填空题(每空1分,共32分)

1.数据的逻辑结构分为集合、线性、树型、图形四种。

2.函数重载要求参数个数、参数类型或参数次序有所不同。

3.在带附加表头的循环双向链表中,表头附加结点的左指针域指向最后一个结点,最后一个结点的右指针域指向表头附加结点。

4.在以HL为表头指针的带附加结点的单链表和循环单链表中,链表为空的条件分别为

HL->next==NULL 和 HL==HL->next 。

5.在由数组a中元素结点构成的单链表中,删除下标为i的结点后,需要把该结点插入到空闲表的表头,具体操作为 a[i].next=a[1].next 、 a[1].next=i 。

6.在由数组a中元素结点构成的单链表中,删除下标为i的结点的后继结点并将被删除结点的下标赋给i 时,所进行的操作(需要用一个临时变量p)描述为 p=a[i].next

和 a[i].next=a[p].next;i=p 。

7.在稀疏矩阵的十字链接存储中,每个结点的down指针域指向列号相同的下一个结点,right指针域指向行号相同的下一个结点。

8.一个广义表中的元素分为单元素和表元素两类。

9.广义表A=((a,(b,(),c),((d),e)))的长度为 1 ,深度为 4 。

10.向一个顺序栈插入一个元素时,首先应 top++ ,然后再将待插入元素放入栈顶位置。

11.对于队列,应在队尾进行插入,在队首进行删除。

12.中缀表达式2+7/(4-1)所对应的后缀表达式为 2 7 4 1 - / + @ 。

13.后缀表达式“10 3 5 4 - * - 1 + 3 2 + -”的值为 3 。

14.一棵二叉树的广义表表示为a(b(c,d),e(f(,g))),则e结点的双亲结点为 a ,孩子结点为

f ,树的深度为 4 。

三、运算题(每小题8分,共24分)

1.假定线性表L=(33,69,78,22,44,88),i=3,x=34,y=22,则对L进行下列一组操作`

ListEmpty(L); false

GetElem(L,i); 78

InsertFront(L,x); (34 33 69 78 22 44 88)

InsertRear(L,x); (34 33 69 78 22 44 88 34)

DeleteFront(L); (33 69 78 22 44 88 34)

Delete(L,y); (33 69 78 44 88 34)

Sort(L); (33 34 44 69 78 88)

Insert(L,66); (33 34 44 66 69 78 88)

请写出每步操作后的结果。

2.假定线性表L=(33,85,21,56,30,63,42,91,76),调用顺序表的排序算法

void Sort(List& L)对此表进行排序,请写出排序过程。(将每一步结果写出)(1)[ 33 85 ] 21 56 30 63 42 91 76

(2)[ 21 33 85 ] 56 30 63 42 91 76

(3)[ 21 33 56 85 ] 30 63 42 91 76

(4)[ 21 30 33 56 85 ] 63 42 91 76

(5)[ 21 30 33 56 63 85 ] 42 91 76

(6)[ 21 30 33 42 56 63 85 ] 91 76

(7)[ 21 30 33 42 56 63 85 91 ] 76

(8)[ 21 30 33 42 56 63 76 85 91 ]

3.已知一个中缀表达式为:10-3*(2+1)+(3-1)/2@,请画出其转换为后缀表达式过程中S2及R栈的变化。

S 1 0 3 2 1

R @ - * ( +

S 1 0 3 2 1 +

R@ - *

S 1 0 3 2 1 + * - 3 1

R@ + ( -

S 1 0 3 2 1 + * - 3 1 - 2

R@ + /

S 1 0 3 2 1 + * - 3 1 - 2 / +

R

S 1 0 3 2 1 + * - 3 1 - 2 / + @ \0

R

四、阅读算法,回答问题(每小题8分,共16分)

1.Void MADE(Lnode * & H1)

2.Void AE(Stack& S)

{ {

Lnode *p; InitStack(S);

p=H1; Push(S,30);

H1=NULL; Push(S,40);

while(p!=NULL) Push(S,50);

{ int x=Pop(S)+2*Pop(S);

lnode *q=p; Push(S,x);

p=p->next; int i,a[4]={5,8,12,15};

q->next=h1; for(i=0;i<4;i++)

H1=q; Push(S,a[i]);

} while(!StackEmpty(S))

} cout<

}

该算法的功能为:该算法被调用后得到的输出结果为:将原链表逆序 15 12 8 5 130 30

五、算法填空,在画有横线的地方填写合适的内容(10分)。

删除带附加表头的单链表上第pos个元素的算法。

Void Del(LNode * & HL,int pos)

{

if(pos<1){

cerr<<”pos is out range!”<

exit(1);

}

int i=0;

Lnode *p, *q;

q=HL ;

p=HL->next ;

int i=1 ;

while( p!=NULL ){

if (i= =pos) break;

else{

q=p ;

p=p->next ;

i++ ;

}

if(p!=NULL){ q->next=p->next ;

delete p ;

}

else{

cerr<<”pos is out range!”<

exit(1);

}

}

六、编写算法(10分)。

写出向二叉排序树中插入一个元素的非递归算法。

Void insert(BtreeNode * BST, const ElemType & item) {

BtreeNode *t=BST, *parent=NULL;

While(t!=NULL){

Parent=t;

If(itemdata) t=t->left;

Else t=t->right;

}

BtreeNode *p=newBtreeNode;

p->data=item;

p->left=p->right=NULL;

if(parent= =NULL) BST=p;

else if(itemdata) parent->left=p;

else parent->right=p;

}

数据结构期中考试模试卷2014

数据结构模拟试卷 一. 单选题(每题1分,共14分) 1.数据结构所讨论的基本数据单位是(B)。 A、数据对象 B、数据元素 C、数据项 D、数据类 2. 在数据结构的讨论中把数据结构从逻辑上分为(C)两大类。 A.内部结构与外部结构 B.静态结构与动态结构 C.线性结构与非线性结构 D.紧凑结构与非紧凑结构。 3.若一个算法的时间复杂度用T(n)表示,其中n的含义是( A )A.问题规模B.指令条数 C.循环层数D.函数数量 4. 算法分析的目的是(C)。 A. 研究算法的输入与输出之间的关系 B. 找出数据结构的合理性 C. 分析算法的效率以求改进算法 D. 分析算法的可读性与可移植性 5、采用线性链表表示一个向量时,要求占用的存储空间地址(D) A.必须是连续的 B.部分地址必须是连续 C. 一定是不连续的 D. 可连续可不连续 6. 在一个当前长度为n的顺序表中向第j个元素(1next==NULL C、head一>next= = head D、head!=NULL 8、设单链表中指针P指向结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为(A) A、p→next=p→next→next B、p=p→next C、p=p→next→next D、p→next=p 9、若有一个最大长度为size,且设有队首指针front和队尾指针rear的顺序循环队列,试问判断队列满的条件应是下列哪一个语句(D) A、front==rear B、front- rear==size C、front+rear==size; D、front==(rear+1)%size

02142数据结构导论201604

2016年4月高等教育自学考试全国统一命题考试 数据结构导论试卷 (课程代码 02142) 本试卷共6页。满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。4.合理安排答题空间,超出答题区域无效。 第一部分选择题(共30分) 一、单项选择题(本大题共l5小题。每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。错涂、多涂或未涂均无分。 1.一个公司的组织机构是1名公司经理领导若于名部门负责人、每个部门负责人领导若干名部门员工,则适合于描述该公司组织机构的逻辑结构是 A.线性表 B.队列 C.树 D.图 2.计算n!(整数n≥0)的递归算法是:int Factorial(int n){if(n= =o)return l;else return n*Factorial(n--1);}其时闯复杂度为 A.0(n) B.0(log2n) C.O(n0) D.O(n2) 3.将一个由指针q指向的结点插在单链表中由指针P所指向的结点之后的操作是 A.p=q; B.p--:>next=q; C.q一>next=p--:>next;p-->next=q; D.p一>next—q;q-->next—p--:>next; 4. 设初始栈为空,s表示人栈操作,x表示出栈操作,则合法的操作序列是 A.sxxssxxs B.ssxsxxxs C.ssxxxssx D.sssxxxsx 5.将递归形式描述的算法改写为功能等价的非递归形式描述的算法,通常应设置的辅助结构是 A.顺序表 B.单链表C.栈 D.队列 6.设长度为n的队列用单循环链表表示(假设表尾结点为当前队列的队尾元素),若只设头指针,则入队操作、出队操作的时间复杂度分别为 A.O(n)、O(1) B.O(1)、O(1) C.O(1)、O(n) D.0(n)、0(n) 7.若采用顺序存储(一维数组)结构存储一棵如题7图所示的二叉树,根结点1的下标为l,剥结点4的下标为 A.4 B.5 C.6 D.7 8.按层序(自顶向下、从左到右)遍历二叉树时需借助队列作辅助结构。对高度为3的满二叉树进行层序遍历时,队列中所出现的元素个数最多是

2010年数据结构期中考试试卷及答案

《数据结构》期中试卷(2009级) 2010-2011学年第一学期姓名:学号:成绩: 一、选择题:(每小题2分,共20分) 1.有六个元素6,5,4,3,2,1 的顺序进栈,下列哪一个不是合法的出栈序列?() A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 2.在一个有125个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动() 个元素。 A.8 B. 62.5 C. 62 D. 7 3. 已知广义表A=((a,b,c),(d,e,f),(h,(i,j)),g),从A表中取出原子项e的运算是:( ) A.head(tail(A)) B.head(tail(tail(A))) C.head(head(tail(tail(A)))) D.head(tail(head(tail(A)))) 4.循环队列存储在数组A[0..m]中,设front和rear分别为队列的头指针和尾指针,则入队 时的操作为()。 A. front=( front +1) mod (m+1) B. rear=(rear+1) mod (m+1) C. front=( front +1) mod m D. rear=(rear+1) mod m 5. 在双向循环链表中,在p指针所指向的结点前插入一个指针q所指向的新结点,其修改指 针的操作是( ) (假设双向循环链表的结点结构为(llink,data,rlink)。A.p->llink=q; q->rlink=p;p->llink->rlink=q;q->llink=q; B.p->llink=q;p->llink->rlink=q ;q->rlink= p;q->llink=p->llink; C.q->rlink=p;q->llink=p->llink;p->llink->rlink=q; p->llink=q; D.q->llink=p->llink;q->rlink=p;p->llink=q;p->llink=q; 6. 一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。 A.250 B.500 C.254 D.以上答案都不对 7. 已知一棵二叉树的前序遍历结果为ABCDEF, 中序遍历结果为CBAEDF, 则后序遍历的结果 为()。 A.CBEFDA B.FEDCBA C.CBEDFA D.不定 8. 利用二叉链表存储树时,则根结点的右指针是()。 A.指向最左孩子B.指向最右孩子C.空D.非空 9.设有二维数组A[0..9, 0..19], 其中每个元素占两个字节,第一个元素的存储地址为100, 若按列优先顺序存储,则元素A[6,6]存储地址为( )。 A. 252 B. 132 C. 352 D.232 10. 引入二叉线索树的目的是() A.加快查找结点的前驱或后继的速度 B.为了能在二叉树中方便的进行插入与删除 C.为了能方便的找到双亲 D.使二叉树的遍历结果唯一

自考数据结构导论20051年10月试卷

全国2005年10月高等教育自学考试 数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.若要描述数据处理的变化过程,其正确的次序应为( ) A.处理要求、基本运算和运算、算法 B.处理要求、算法、基本运算和运算 C.基本运算和运算、处理要求、算法 D.算法、处理要求、基本运算和运算 2.从运算类型角度考虑,属于引用型的运算是( ) A.插入、删除 B.删除、修改 C.查找、读取 D.查找、删除 3.若在长度为n的顺序表中插入一个结点,则其结点的移动次数( ) A.最少为0,最多为n B.最少为1,最多为n C.最少为0,最多为n+1 D.最少为1,最多为n+1 4.在一个单链表中,若p所指结点是q所指结点的前驱结点,则在结点p、q之间插入结点s的正确操作是( ) A.s->next=q;p->next=s->next B.p->next=q;p->next=s C.s->next=q->next;p->next=s D.s->next=q->next;p->next=s->next 5.若有一串数字5、6、7、8入栈,则其不可能 ...的输出序列为( ) A.5、6、7、8 B.8、7、6、5 C.8、7、5、6 D.5、6、8、7 6.FORTRAN语言对数组元素的存放方式通常采用( ) A.按行为主的存储结构 B.按列为主的存储结构 C.按行或列为主的存储结构 D.按行和列为主的存储结构 7.树是n个结点的有穷集合,( ) A.树的结点个数可以为0,此时称该树为空树 B.树至少含有一个根结点,不能为空 C.树至少含有一个根结点和一个叶子结点 D.树至少含有一个根结点和两个叶子结点 8.深度为k的二叉树至多有( ) A.2k个叶子 B.2k-1个叶子 C.2k-1个叶子 D.2k-1-1个叶子 9.具有10个顶点的有向完全图应具有( ) 浙02142# 数据结构导论试题第 1 页(共 4 页)

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 .没有共同点

苏州大学 数据结构 课程期中考试答案

苏州大学数据结构课程期中考试(共6页) 学院计算机专业计算机科学与技术成绩____________________ 班级11计科学号_____________姓名_____________日期2012.11_ 一、填空(14*2 分) 1 x=n; y=0; while (x>=y*y) y=y+1; 2、对于顺序存储的栈,因为栈的空间是有限的,在进行入栈运算时,可能发生栈的上溢(overflow),在进行出栈 _运算时,可能发生栈的下溢(underflow)。 3、以顺序结构实现的双栈类中,其私有数据成员数组S[0..n-1]存放两个栈中的所有元素,top1和top2分别指向两个栈的栈顶位置,入栈1时top1由小到大,入栈2时top2由大到小,则判断双栈栈满的条件是top1+1>=top2 ,双栈栈空的条件是top1==-1 && top2==n。 4、完成链式存储结构下Queue类的append方法,其中front和rear指针分别指示队首和队尾结点: Error_code Queue :: append(const Queue_entry &item) { Node *new_rear = new Node(item); if (new_rear == NULL) return overflow; if (rear == NULL) front=rear=new_rear; ; else { rear->next=new_rear; ; rear = new_rear; } return success; } 5、如果一个函数直接或间接地调用自己,则称这个函数是一个递归函数。

全国自学考试数据结构导论试题及答案(4套)

全国2011年1月自学考试数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.在顺序表中查找第i个元素,时间效率最高的算法的时间复杂度为( ) A.O(1) B.O(n) C.O(log2n) D.O(n) 2.树形结构中,度为0的结点称为( ) A.树根 B.叶子 C.路径 D.二叉树 3.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={,,,},则图G的拓扑序列是 ( ) A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7 C.V1,V3,V4,V5,V2,V6,V7 D.V1,V2,V5,V3,V4,V6,V7 4.有关图中路径的定义,表述正确的是( ) A.路径是顶点和相邻顶点偶对构成的边所形成的序列 B.路径是不同顶点所形成的序列 C.路径是不同边所形成的序列 D.路径是不同顶点和不同边所形成的集合 5.串的长度是指( ) A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 6.组成数据的基本单位是( ) A.数据项 B.数据类型 C.数据元素 D.数据变量 7.程序段 i=n;x=0; do{x=x+5*i;i--;}while (i>0); 的时间复杂度为( ) A.O(1) B.O(n) C.O(n2) D.O(n3) 8.与串的逻辑结构不同的 ...数据结构是( ) A.线性表 B.栈 C.队列 D.树

数据结构期中考试试题答案c语言版本

数据结构期中考试试题答案 一、单选题(每小题2分,共8分) 1.在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。 A.n B.n/2 C.(n+1)/2 D.(n-1)/2 2.在一个带附加表头的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行 D 。 A.HL=p;p->next=HL; B.p->next=HL;HL=p; C.p->next=HL;p=HL; D.p->next=HL->next;HL ->next=p; 3.若让元素A,B,C,D依次入栈,则出栈次序不可能出现 D 种情况。 A.D,C,B,A B.A,D,C,B C.B,A,D,C D.D,A,B,C 4.从一个顺序队列删除元素时,首先需要 B 。 A.前移一位队首指针 B.后移一位队首指针 C.取出队首指针所指位置上的元素 D.取出队尾指针所指位置上的元素 二、填空题(每空1分,共32分) 1.数据的逻辑结构分为集合、线性、树型、图形四种。 2.函数重载要求参数个数、参数类型或参数次序有所不同。 3.在带附加表头的循环双向链表中,表头附加结点的左指针域指向最后一个结点,最后一个结点的右指针域指向表头附加结点。

4.在以HL为表头指针的带附加结点的单链表和循环单链表中,链表为空的条件分别为 HL->next==NULL 和 HL==HL->next 。 5.在由数组a中元素结点构成的单链表中,删除下标为i的结点后,需要把该结点插入到空闲表的表头,具体操作为 a[i].next=a[1].next 、a[1].next=i 。 6.在由数组a中元素结点构成的单链表中,删除下标为i的结点的后继结点并将被删除结点的下标赋给i时,所进行的操作(需要用一个临时变量p)描述为 p=a[i].next 和 a[i].next=a[p].next;i=p 。 7.在稀疏矩阵的十字链接存储中,每个结点的down指针域指向列 号相同的下一个结点,right指针域指向行号相同的下一个结点。 8.一个广义表中的元素分为单元素和表元素两类。 9.广义表A=((a,(b,(),c),((d),e)))的长度为 1 ,深度为 4 。 10.向一个顺序栈插入一个元素时,首先应 top++ ,然后再将待插入元素放入栈顶位置。 11.对于队列,应在队尾进行插入,在队首进行删除。 12.中缀表达式2+7/(4-1)所对应的后缀表达式为 2 7 4 1 - / + @ 。 13.后缀表达式“10 3 5 4 - * - 1 + 3 2 + -”的值为 3 。 14.一棵二叉树的广义表表示为a(b(c,d),e(f(,g))),则e结点的双亲结点为 a ,孩子结点为 f ,树的深度为 4 。 三、运算题(每小题8分,共24分) 1.假定线性表L=(33,69,78,22,44,88),i=3,x=34,y=22,则对L进行下列一组操作` ListEmpty(L); false GetElem(L,i); 78

最新数据结构期中试卷及答案

一、选择题(每小题2分,共30分) 1. 数据结构是( D )。 A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 2.以下与数据的存储结构无关的术语是( D )。 A.链队列 B. 链表 C. 顺序表 D. 栈 3.以下数据结构中,( A )是非线性数据结构 A.树 B.字符串 C.队 D.栈 4.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是(B)。 A.98 B.100 C.102 D.106 5.在线性表的下列运算中,不改变数据元素之间结构关系的运算是(D )。 A.插入 B.删除 C.排序 D.查找 6.线性表采用链式存储时,其地址(D )。 A.必须是连续的 B.一定是不连续的 C.部分地址必须连续 D.连续与否均可以 7.线性表是(A )。 A.一个有限序列,可以为空 B.一个有限序列,不可以为空 C.一个无限序列,可以为空 D.一个无限序列,不可以为空 8.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( B )。 A.3,2,6,1,4,5 B.3,4,2,1,6,5 C.1,2,5,3,4,6 D.5,6,4,2,3,1 9. 若一个栈的输人序列是1,2,3,…,n,输出序列的第一个元素是n,则第k个输出元素是(C )。 A.k B.n-k-1 C.n-k+1 D.不确定 10.对于队列操作数据的原则是( A )。 A. 先进先出 B. 后进先出 C. 先进后出 D. 不分顺序 11. 栈和队列的共同点是( C )。 A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点 12.在一个链队列中,假定front和rear分别为头指针和尾指针,删除一个结点的操作是( A )。 A.front=front->next B.rear=rear->next C.rear->next=front D.front->next=rear 13. 空串与空格串( B )。 A.相同 B.不相同 C.可能相同 D.无法确定 14. 串与普通的线性表相比较,它的特殊性体现在(C )。 A.顺序的存储结构 B.链接的存储结构 C.数据元素是一个字符 D.数据元素可以任意 15. 串的长度是指( B )。 A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 二、填空题(每空2分,共20分) 1.线性表、栈和队列,串都是__线性_____结构。 2.数据的基本单位是__数据元素_______________。 3.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_顺序______存储结构。 4.已知具有n个元素的一维数组采用顺序存储结构,每个元素占k个存储单元,第一个元素的地址为Loc(a1),那么,第i个元素的存储地址Loc(a i)= Loc(a1)+(i-1)*k 。 5.栈(stack)是限定在表尾进行插人或删除操作的线性表。在栈中,允许插人和删除操作的一端称为__栈顶________,而另一端称为_栈底________。 6.一个循环队列Q中,头指针和尾指针分别为Q.front和Q.rear,且最大队列长度为MaxQSize,则判断队空的条件为 Q.rear==Q.front,判断队满的条件为(Q.rear+1)%MaxQSize==Q.front。队列的长度为 (.rear-Q.front+MaxQSize )%MaxQSize

自考数据结构导论复习资料

数据结构导论复习 第一章概论 1.数据:凡能被计算机存储、加工处理的对象。 2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理 3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。 4.逻辑结构需要注意的几点: ①逻辑结构与数据元素本身的内容无关 ②逻辑结构与数据元素相对位置无关 ③逻辑结构与所有结点的个数无关 5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。 6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点? 答:集合中任何两个结点之间都没有逻辑关系,组织形式松散; 线性结构中结点按逻辑关系依次排列形成一条“锁链”; 树形结构具有分支、层次特性,其形态有点像自然界中的树; 图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。 7.运算是在逻辑结构层次上对处理功能的抽象

8.基本运算的含义? 答:假如是S上的一些运算的集合,是的一个子集,使得中每一运算都可以“归约”为中的一个或多个运算,而中任一运算不可归约为别的运算,则称中运算为基本运算 9.数据结构是指由一个逻辑结构S和S上的一个基本运算集构成的整体(S ,)。 10.数据结构涉及数据表示和数据处理两个方面 11.存储结构的含义和四种基本存储方式的基本思想? 答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。 一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。 存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。 12.运算实现与运算的联系与区别? 答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。 13.算法的概念和分类? 答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被

数据结构复习资料,java数据结构期末考试

第二章算法分析 1.算法分析是计算机科学的基础 2.增长函数表示问题(n)大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度。增长函数表示与该问题大小相对应的时间或空间的使用 3.渐进复杂度:随着n的增加时增长函数的一般性质,这一特性基于该表达式的主项,即n 增加时表达式中增长最快的那一项。 4.渐进复杂度称为算法的阶次,算法的阶次是忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出来的。算法的阶次为增长函数提供了一个上界。 5.渐进复杂度:增长函数的界限,由增长函数的主项确定的。渐进复杂度类似的函数,归为相同类型的函数。 6.只有可运行的语句才会增加时间复杂度。 7. O() 或者大O记法:与问题大小无关、执行时间恒定的增长函数称为具有O(1)的复杂度。 增长函数阶次 t(n)=17 O(1) t(n)=3log n O(log n) t(n)=20n-4 O(n) t(n)=12n log n + 100n O(n log n) t(n)=3n2+ 5n - 2 O(n2) t(n)=8n3+ 3n2O(n3) t(n)=2n+ 18n2+3n O(2n) 8.所有具有相同阶次的算法,从运行效率的角度来说都是等价的。 9.如果算法的运行效率低,从长远来说,使用更快的处理器也无济于事。 10.要分析循环运行,首先要确定该循环体的阶次n,然后用该循环要运行的次数乘以它。(n 表示的是问题的大小) 11.分析嵌套循环的复杂度时,必须将内层和外层循环都考虑进来。 12.方法调用的复杂度分析: 如:public void printsum(int count){ int sum = 0 ; for (int I = 1 ; I < count ; I++) sum += I ; System.out.println(sun); } printsum方法的复杂度为O(n),计算调用该方法的初始循环的时间复杂度,只需把printsum方法的复杂度乘以该循环运行的次数即可。所以调用上面实现的printsum方法的复 杂度为O(n2)。 13指数函数增长> 幂函数增长> 对数函数增长

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

《数据结构》期末考试试题及答案 (2003-2004学年第2学期) 单项选择题1、C 2、D 3、A 4、D 5、C 6、D 7、A 8、B 9、C 10、C 一、 1.对于一个算法,当输入非法数据时,也要能作出相应的处理,这种要求称为( c)。 (A)、正确性(B). 可行性(C). 健壮性(D). 输入性 2.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为(d )。 for(i=n-1;i>=0;i--) for(j=0;jnext; p->next= Q.front->next; (B)、p=Q.front->next; Q.front->next=p->next; (C)、p=Q.rear->next; p->next= Q.rear->next; (D)、p=Q->next; Q->next=p->next; 9. Huffman树的带权路径长度WPL等于( c ) (A)、除根结点之外的所有结点权值之和(B)、所有结点权值之和 (C)、各叶子结点的带权路径长度之和(D)、根结点的值

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

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.以顺序方式存储,且数据元素有序

数据结构与算法期中考试题

一、单选题, 从可供选择的4个答案中, 选择一个正确的答案, 将其前面的字母填写在( )中,共40分,每小题4分。 1.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p 之间插入s结点,则执行( )。 A.s->next=p->next; p->next=s; B.q->next=s; s->next=p; C.p->next=s->next; s->next=p; D.p->next=s; s->next=q; 2.带头结点的单链表为空的判定条件是( )。 A.head= =NULL B.head->next= =NULL C.head->next= =head D.head!=NULL 3. 若一棵完全二叉树中某结点无左孩子,则该结点一定是()。 A.度为1的结点B.度为2的结点C.叶子结点 D.分支结点 4.设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是( )。 A.a在b的右 方B.a在b的左方C.a是b的祖 先D.a是b的子孙5.在长度为n的线性表中查找值为x的数据元素的时间复杂度为:()。 A. O(0) B. O(1) C. O(n) D. O(n2) 6.一个栈的入栈序列是a, b, c, d, e,则栈的不可能的出栈序列是()。 A. edcba B. cdeba C.debca D.abcde 7.前序遍历和中序遍历结果相同的二叉树是()。 A. 根结点无左孩子的二叉树 B. 根结点无右孩子的二叉树 C. 所有结点只有左子树的二叉树 D. 所有结点只有右子树的二叉树 8.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组A[1] ~ A[n] 中,结点A[i]若有左子树,则左子树的根结点是()。 A. A[2i-1] B.A[2i+1] C.A[i/2] D.A[2i] 9.对任何一棵四叉树T,如果其终端结点的个数为n0,度为2的结点个数为 n2,度为3的结点个数为n3,度为4的结点个数为n4,则()。 A.n0=n2+n3+n4+1 B.n0=n2+2n3+3n4+1 C.n0=n1+n2+2n3+3n4+1 D.没有规律 10.算法指的是()。 A. 对特定问题求解步骤的一种描述 B. 计算机程序 C. 解决问题的计算方法 D. 数据处理 二、填空题, 请将答案填写在题目的( )内。(共24分,每小题6分) 1.在一个长度为n的顺序表的第i(1≤i≤n+1)个元素之前插入一个元素,需向后移动()个元素,删除第i(1≤i≤n)个元素时,需向前移动()个元素。 2. 权值为{2, 4, 1,7, 3,5}的叶子结点生成一棵哈夫曼树,其带权路径长度为()。 3. 已知一棵二叉树的前序遍历序列为ABCDEFGH,中序遍历序列为CDBAFEHG,该二叉树的后序遍历序列是()

自考数据结构导论

全国2014年4月高等教育自学考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。 1.下列几种算法时间复杂度中,最小的是( A ) A.O(log2n) B.O(n) C.O(n2) D.O(1) 2.数据的存储方式中除了顺序存储方式和链式存储方式之外,还有( D ) A.索引存储方式和树形存储方式 B.线性存储方式和散列存储方式 C.线性存储方式和索引存储方式 D.索引存储方式和散列存储方式 3.表长为n的顺序表中做删除运算的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 4.顺序表中定位算法(查找值为x的结点序号最小值)的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 5.元素的进栈次序为A,B,C,D,E,出栈的第一个元素为E,则第四个出栈的元素为( C ) A.D B.C C.B D.A 6.带头结点的链队列中,队列头和队列尾指针分别为front和rear,则判断队列空的条件为( A ) A.front==rear B.front!=NULL C.rear!==NULL D.front==NULL 7.深度为5的二叉树,结点个数最多为( A )

《数据结构》期末考试试卷

广东创新科技职业学院期末考试试题(标明A 卷、B 或C 卷) 2018 —2019 学年第二学期考试科目:《数据结构》 (闭(开)卷 90分钟) 院系____________ 班级____________ 学号___________ 姓名 __________ 一、选择题(每小题 2 分,共 40 分) 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. 下述程序段①中各语句执行频度的和是()。 s=0; ① for(i=1;i<=i;j++) s+=j; A .n-1 B .n C .2n-1 D .2n 7. 下面程序段的时间复杂度为()。 for(i=0;i

数据结构期末考试试题和标准答案及评分标准

《数据结构》试题(A卷) (考试时间: 90分钟) 一、单项选择题(本大题共15小题,每小题2分,共30分) (每题只有一个选项是正确的,将答案填写在括号内,错选、多选不得分) 1.()是组成数据的基本单位,是一个数据整体中相对独立的单元。 A.数据 B.数据元素 C.数据对象 D.数据结构 2.算法计算量的大小称为算法的()。 A.效率????? B.复杂度 C.数据元素之间的关系??? ? D.数据的存储方法 3.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入或删除运算,则采用以下()方式最节省时间。 A.链式存储 B. 索引存储 C.顺序存储 D.散列存储 4.下述哪一条是顺序存储结构的优点?() A.存储密度大? B.插入运算方便? C.删除运算方便? D.可方便地用于各种逻辑结构的存储表示 5.在一个单链表中,若删除p所指结点的后续结点,则执行()。 >next=p->next->next >next=p->next =p->next;p->next=p->next->next =p->next->next 6.带头结点的单链表head为空的判定条件是()。 ==NULL >next==NULL >next==head !==NULL 7.非空的循环单链表head的尾结点(由p所指向)满足()。 >head==NULL ==NULL >next==head ==head

8.下面关于线性表的叙述中,错误的是哪一个?() A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链式存储,不必占用一片连续的存储单元。 D.线性表采用链式存储,便于插入和删除操作。 9.队列操作的原则是()。 A.后进先出 B.先进先出 C.只能进行插入 D.只能进行删除 10.栈中允许进行插入和删除的一端称为()。 A.栈首 B.栈尾 C.栈顶 D.栈底 11.假设以数组A[n]存放循环队列的元素,其首尾指针分别为front和rear,则当前队列中的元素个数为()。 A.(rear-front+n)%n B. rear-front+1 C. (front-rear+n)%n D.(rear-front)%n 12.最大容量为n的循环队列,队尾指针是rear,队首指针是front,则队空的判断条件是( )。 A.(rear+1)%n==front ==front +1==front D.(rear-1)%n==front 13.将一个十进制的数转换成二进制的数,可以使用以下一种称为()的数据结构。 A. 图 B. 树 C. 广义表 D. 栈 14. 把一棵树转换为二叉树后,这棵二叉树的形态是()。 A. 有2种 B. 有3种 C. 有4种 D. 唯一的 15.一棵左右子树均不空的二叉树在先序线索化后,其中空链域的个数是()。 A. 3 B. 2 C. 0 D. 不确定 二、填空题(本大题共10个空,每空2分,共计20分)

数据结构期中作业

数据结构期中作业文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

北京邮电大学远程教育 计算机科学与技术专业《数据结构》实验指导书 实验一线性表的插入和删除 一、实验目的 1、掌握用Turbo C上机调试线性表的基本方法; 2、掌握线性表的基本操作,插入、删除、查找,以及线性表合并等运算在顺序存储结 构和链接存储结构上的运算。 二、实验内容 线性表基本操作的实现 当我们要在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若要删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。 程序实现: typedef Null 0; typedef int datatype; #define maxsize 1024; typedef struct { datatype data[maxsize]; int last; }sequenlist; int insert(L, x, i) sequenlist *L; int i; { int j; if ((*L).last= =maxsize-1) { printf(“overflow”); return Null; }

else if ((i<1)‖(i>(*L).last+1) { printf(“error”); return Null; } else { for(j=(*L).last; j>=i-1; j--) (*L).data[j+1]=(*L).data[j]; (*L).data[i-1]=x; (*L).last=(*L).last+1; } return(1); } int delete(L,i) sequenlist *L; int i; { int j; if ((i<1)‖(i>(*L).last+1)) {printf (“error”); return Null; } else { for(j=i, j<=(*L).last; j++) (*L).data[j-1]=(*L).data[j]; (*L).data - -; } return(1); } void creatlist( ) { sequenlist *L;

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