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

数据结构练习题及参考答案

数据结构练习题及参考答案
数据结构练习题及参考答案

数据结构练习题

第一部分绪论

一、单选题

1. 一个数组元素a[i]与________的表示等价。

A、 *(a+i)

B、 a+i

C、 *a+i

D、 &a+i

2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。

A、参数类型

B、参数个数

C、函数类型

3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数

A、指针

B、引用

C、值

4. 下面程序段的时间复杂度为____________。

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)

5. 执行下面程序段时,执行S语句的次数为____________。

for(int i=1; i<=n; i++)

for(int j=1; j<=i; j++)

S;

A、 n2

B、 n2/2

C、 n(n+1)

D、 n(n+1)/2

6. 下面算法的时间复杂度为____________。

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!)

二、填空题

1. 数据的逻辑结构被分为__________、_________、__________和__________四种。

2. 数据的存储结构被分为__________、_________、__________和__________四种。

3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。

4. 一种抽象数据类型包括__________和__________两个部分。

5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

6. 当需要用一个形参访问对应的实参时,则该形参应说明为__________。

7. 在函数中对引用形参的修改就是对相应__________的修改,对__________形参的修改只局限在该函数的内部,不会反映到对应的实参上。

8. 当需要进行标准I/O操作时,则应在程序文件中包含________________头文件,当需要进行文件I/O操作时,则应在程序文件中包含________________头文件。

9. 在包含有________________头文件的程序文件中,使用________________能够产生出0~20之间的一个随机整数。

10. 一个数组a所占有的存储空间的大小即数组长度为____________,下标为i的元素a[i]的存储地址为__________,或者为______________________________。

11. 函数重载要求____________、____________或____________有所不同。

12. 对于双目操作符,其重载函数带有__________个参数,其中至少有一个为____________的类型。

13. 若对象ra和rb中至少有一个是属于用户定义的类型,则执行ra==rb时,需要调用__________重载函数,该函数的第一个参数应与__________的类型相同,第二个参数应与__________的类型相同。

14. 从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为________,输出一个二维数组b[m][n]中所有元素值的时间复杂度为________。

15. 在下面程序段中,s=s+p语句的执行次数为________,p*=j语句的执行次数为________,该程序段的时间复杂度为________。

int i=0,s=0;

while(++i<=n) {

int p=1;

for(int j=1;j<=i;j++) p*=j;

s=s+p;

}

16. 一个算法的时间复杂度为(3n2+2n log2n+4n-7)/(5n),其数量级表示为________。

第二部分线性表

一、单选题

1.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移个元素。

A、n-i

B、n-i+1

C、n-i-1

D、i

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

A、n-i

B、n-i+1

C、n-i-1

D、i

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

A、n

B、n/2

C、(n+1)/2

D、(n-1)/2

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

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;

5.在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针p所指的结点,则执行。

A、q->next = p->next ; p->next = q;

B、p->next = q->next; q = p;

C、q->next = p->next; p->next = q;

D、p->next = q->next ; q->next = p;

6.在一个单链表HL 中,若要删除由指针q 所指向结点的后继结点,则执行 。 A 、p = q->next ; p->next = q->next; B 、p = q->next ; q->next = p;

C 、p = q->next ; q->next = p->next;

D 、q->next = q->next->next; q->next = q;

二、填空题

1.在线性表的单链接存储结构中,每个结点包含有两个域,一个叫 域,另一个叫 域。

2.在下面数组a 中链接存储着一个线性表,表头指针为a[0].next ,则该线性表为 。

3.对于一个长度为n 的顺序存储的线性表,在表头插入元素的时间复杂度为 ,在表尾插入元素的时间复杂度为 。

4.对于一个长度为n 的单链接存储的线性表,在表头插入元素的时间复杂度为 ,在表尾插入元素的时间复杂度为 。

5.在线性表的顺序存储中,若一个元素的下标为i ,则它的前驱元素的下标为 ,后继元素的下标为 。

6.在线性表的单链接存储中,若一个元素所在结点的地址为p ,则其后继结点的地址为 ,若假定p 为一个数组a 中的下标,则其后继结点的下标为 。 7.在循环单链表中,最后一个结点的指针指向 结点。

8.在双向链表中每个结点包含有两个指针域,一个指向其 结点,另一个指向其 结点。 9.在循环双向链表中表头结点的左指针域指向 结点,最后一个结点的右指针域指向 结点。

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

三、应用题

1.在下面的每个程序段中,假定线性表La 的类型为List ,元素类型ElemType 为int ,并假定每个程序段是连续执行的,试写出每个程序段执行后所得到的线性表La 。 (1) InitList(La);

int a[]={48,26,57,34,62,79}; for(i=0; i<6; i++) InsertFront(La,a[i]); TraverseList(La); (2) InitList(La); for(i=0; i<6; i++) Insert(La,a[i]); TraverseList(La);

a data next

(3) ClearList(La);

for(i=0; i<6; i++) InsertRear(La,a[i]);

Delete(La, a[5]);

Sort(La);

Insert(La,a[5]/2);

TraverseList(La);

2.写出下面函数被调用执行后,得到的以HL为表头指针的单链表中的数据元素序列。

void AA(LNode * & HL)

{

InitList(HL);

InsertRear(HL,30);

InsertRear(HL,50);

int a[5] = {15,8,9,26,12};

for ( int i=0; i<5; i++ ) InsertFront(HL,a[i]);

}

3.对于List类型的线性表,编写出下列每个算法。

(1) 从线性表中删除具有最小值的元素并由函数返回,空出的位置由最后一个元素填补,若线性表为空则显示出错信息并退出运行。

(2) 从线性表中删除第i个元素并由函数返回。

(3) 向线性表中第i个元素位置插入一个元素。

(4) 从线性表中删除具有给定值x的所有元素。

4.对于结点类型为LNode的单链表,编写出下列每个算法。

(1) 删除单链表中的第i个结点。

(2) 在有序单链表中插入一个元素x的结点。

(3) 从单链表中查找出所有元素的最大值,该值由函数返回,若单链表为空,则显示出错信息并停止运行。

(4)统计出单链表中结点的值等于给定值x的结点数。

第三部分栈和队列

一、单选题

1.栈的插入与删除操作在进行。

A、栈顶

B、栈底

C、任意位置

D、指定位置

2.当利用大小为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行语句修改top指针。

A、top++

B、top--

C、top=0

D、top

3.若让元素1,2,3依次进栈,则出栈次序不可能出现种情况。

A、3,2,1

B、2,1,3

C、3,1,2

D、1,3,2

4.在一个循环顺序队列中,队首指针指向队首元素的位置。

A、前一个

B、后一个

C、当前

D、后面

5.当利用大小为N的一维数组顺序存储一个循环队列时,该队列的最大长度为。

A、N-2

B、N-1

C、N

D、N+1

6.从一个循环顺序队列删除元素时,首先需要。

A、前移一位队首指针

B、后移一位队首指针

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

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

7.假定一个循环顺序队列的队首和队尾指针分别为f和r,则判断队空的条件是。

A、f+1==r

B、r+1==f

C、f==0

D、f==r

8.假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件是。

A、front==rear

B、front!=NULL

C、rear!=NULL

D、front==NULL

二、填空题

1.队列的插入操作在进行,删除操作在进行。

2.栈又称为表,队列又称为表。

3.向一个顺序栈插入一个元素时,首先使后移一个位置,然后把待插入元素到这个位置上。

4.从一个栈中删除元素时,首先取出,然后再前移一位。

5.在一个循环顺序队列Q中,判断队空的条件为,判断队满的条件为。

6.在一个顺序栈中,若栈顶指针等于,则为空栈;若栈顶指针等于,则为满栈。

7.在一个链栈中,若栈顶指针等于NULL,则为;在一个链队中,若队首指针与队尾指针的值相同,则表示该队列为或该队列为。

8.向一个链栈插入一个新结点时,首先把栈顶指针的值赋给,然后把新结点的存储位置赋给。

9.从一个链栈中删除一个结点时,需要把栈顶结点的值赋给。

10.向一个顺序队列插入元素时,需要首先移动,然后再向所指位置新插入的元素。

11、当用长度为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件为。

12.向一个栈顶指针为HS的链栈中插入一个新结点*P果,应执行和

操作。

13.从一个栈顶指针为HS的非空链栈中删除结点并不需要返回栈顶结点的值和回收结点时,应执行操作。

14.假定front和rear分别为一个链队的队首和队尾指针,则该链队中只有一个结点的条件为。

15. 中缀算术表达式3+4/(25-(6+15))*8 所对应的后缀算术表达式为。

16. 后缀算术表达式24 8 + 3 * 4 10 7 - * / 所对应的中缀算术表达式为,其值为。

三、应用题

执行下面函数调用后得到的输出结果是什么?

void AF(Queue & Q)

{

InitQueue(Q);

int a[4] = { 5,8,12,15 };

for ( int i=0; i<4; i++ ) QInsert(Q,a[i]);

QInsert(Q,QDelete(Q));

QInsert(Q,30);

QInsert(Q,QDelete(Q)+10);

while ( ! QueueEmpty(Q) ) cout <

}

四、编程题

裴波那契(Fibonacci)数列的定义为:它的第1项和第2项均为1,以后各项为其前两项之和。若裴波那契数列中的第n项用Fib(n)表示,则计算公式为:

? 1 (n=1或2)

Fib(n)=?

? Fib(n-1)+Fib(n-2) (n>=2)

试编写出计算Fib(n)的递归算法和非递归算法,并分析它们的时间复杂度和空间复杂度。

第四部分稀疏矩阵和广义表

一、单选题

1. 在稀疏矩阵的带行指针向量的链接存储中,每个行单链表中的结点都具有相同的________。

A、行号

B、列号

C、元素值

D、地址

2. 设一个广义表中结点的个数为n,则求广义表深度算法的时间复杂度为_______。

A、O(1)

B、O(n)

C、O(n2)

D、O(log2n)

二、填空题

1. 在一个稀疏矩阵中,每个非零元素所对应的三元组包括该元素的________、________和________三项。

2. 在稀疏矩阵所对应的三元组线性表中,每个三元组元素按________为主序、________为辅序的次序排列。

3. 在初始化一个稀疏矩阵的函数定义中,矩阵形参应说明为________参数。

4. 在稀疏矩阵的顺序存储中,利用一个数组来存储非零元素,该数组的长度应________对应三元组线性表的长度。

5.在稀疏矩阵的带行指针向量的链接存储中,每个结点包含有________个域,在相应的十字链接存储中,每个结点包含有________个域。

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

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

8.一个广义表的深度等于________嵌套的最大层数。

9.在广义表的存储结构中,每个结点均包含有________个域。

10.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为________域和________域。

11.若把整个广义表也看为一个表结点,则该结点的tag域的值为________,next域

三、应用题

1. 已知一个稀疏矩阵如下图所示:

0 4 0 0 0 0 0

0 0 0 -3 0 0 1

8 0 0 0 0 0 0

0 0 0 5 0 0 0

0 -7 0 0 0 2 0

0 0 0 6 0 0 0

具有6行×7列的一个稀疏矩阵

(1)写出它的三元组线性表;

(2) 给出它的顺序存储表示;

(3) 给出它的转置矩阵的三元组线性表和顺序存储表示;

2. 画出下列每个广义表的带表头附加结点的链接存储结构图并分别计算出它们的长度和深度。

(1) A=(())

(2) B=(a,b,c)

(3) C=(a,(b,(c)))

(4) D=((a,b),(c,d))

(5) E=(a,(b,(c,d)),(e))

(6) F=((a,(b,(),c),((d),e)))

第五部分树和二叉树

一、填空题

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

2. 假定一棵三叉树的结点个数为50,则它的最小深度为________,最大深度为_______。 3.在一棵三叉树中,度为3的结点数有2个,度为2的结点数有1个,度为1的结点数为2个,那么度为0的结点数有________个。

4.一棵深度为5的满二叉树中的结点数为________个,一棵深度为3的满三叉树中的结点数为________个。

5.假定一棵树的广义表表示为A(B(C,D(E,F,G),H(I,J))),则树中所含的结点数为________个,树的深度为________,树的度为________。

6.假定一棵树的广义表表示为A(B(C,D(E,F,G),H(I,J))),则度为3、2、1、0的结点数分别为______、______、______和______个。

7. 假定一棵树的广义表表示为A(B(C,D(E,F,G),H(I,J))),则结点H的双亲结点为________,孩子结点为___________。

8.在一棵二叉树中,假定双分支结点数为5个,单分支结点数为6个,则叶子结点数

9.对于一棵二叉树,若一个结点的编号为i,则它的左孩子结点的编号为________,右孩子结点的编号为________,双亲结点的编号为________。

10.在一棵二叉树中,第5层上的结点数最多为______。

11.假定一棵二叉树的结点数为18,则它的最小深度为________,最大深度为________。 12.一棵二叉树的广义表表示为a(b(c,d),e(f(,g))),则e结点的双亲结点为______,左孩子结点为________,右孩子结点为________。

13. 一棵二叉树的广义表表示为a(b(c,d),e(f(,g))),它含有双亲结点______个,单分支结点______个,叶子结点______个。

14. 假定一棵二叉树顺序存储在一维数组a中,则a[i]元素的左孩子元素为________,右孩子元素为________,双亲元素(i>1)为________。

15.假定一棵二叉树顺序存储在一维数组a中,但让编号为1的结点存入a[0]元素中,让编号为2的结点存入a[1]元素中,其余类推,则编号为i结点的左孩子结点对应的存储位置为________,若编号为i结点的存储位置用j表示,则其左孩子结点对应的存储位置为________。

16.若对一棵二叉树从0开始进行结点编号,并按此编号把它顺序存储到一维数组a中,即编号为0的结点存储到a[0]中,其余类推,则a[i]元素的左孩子元素为________,右孩子元素为________,双亲元素(i>0)为________。

17.对于一棵具有n个结点的二叉树,对应二叉链表中指针总数为________个,其中________个用于指向孩子结点,________个指针空闲着。

18. 一棵二叉树广义表表示为a(b(d(,h)),c(e,f(g,i(k)))),该树的结点数为________个,深度为________。

19. 假定一棵二叉树广义表表示为a(b(c),d(e,f)),则对它进行的先序遍历结果为____________,中序遍历结果为____________,后序遍历结果为____________,按层遍历结果为____________。

20. 假定一棵普通树的广义表表示为a(b(e),c(f(h,i,j),g),d),则先根遍历结果为____________,按层遍历结果为___________。

二、应用题

1. 已知一棵具有n个结点的完全二叉树被顺序存储于一维数组的A[1] A[n]元素中,试编写一个算法打印出编号为i的结点的双亲和所有孩子。

2. 编写一算法,求出一棵二叉树中所有结点数和叶子结点数,假定分别用变参C1和C2统计所有结点数和叶子结点数,初值均为0。

(1) 写出先根遍历得到的结点序列;

(2) 写出按层遍历得到的结点序列;

(3) 画出转换后得到的二叉树和二叉链表。

二叉树的应用

一、单选题

1. 从二叉搜索树中查找一个元素时,其时间复杂度大致为________。

A、 O(n)

B、 O(1)

C、 O(log2n)

D、 O(n2)

2. 向二叉搜索树中插入一个元素时,其时间复杂度大致为________。

A、 O(1)

B、 O(log2n )

C、 O(n)

D、 O(n log2n)

3. 根据n个元素建立一棵二叉搜索树时,其时间复杂度大致为________。

A、 O(n)

B、 O(log2n )

C、 O(n2)

D、 O(n log2n)

4. 从堆中删除一个元素的时间复杂度为________。

A、 O(1)

B、 O(n)

C、 O(log2n)

D、 O(n log2n)

5. 向堆中插入一个元素的时间复杂度为________。

A、 O(log2n)

B、 O(n)

C、 O(1)

D、 O(n log2n)

6. 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A、 24

B、 48

C、 72

D、 53

二、填空题

1. 在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定________该结点的值,右子树上所有结点的值一定________该结点的值。

2.对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个________。

3.从一棵二叉搜索树中查找一个元素时,若元素的值等于根结点的值,则表明_______,若元素的值小于根结点的值,则继续向________查找,若元素的大于根结点的值,则继续向________查找。

4.在一个堆的顺序存储中,若一个元素的下标为i,则它的左孩子元素的下标为______,右孩子元素的下标为________。

5. 在一个小根堆中,堆顶结点的值是所有结点中的________,在一个大根堆中,堆顶结点的值是所有结点中的________。

6.当从一个小根堆中删除一个元素时,需要把________元素填补到________位置,然后再按条件把它逐层________调整。

三、应用题

1.已知一组元素为(46,25,78,62,12,37,70,29),画出按元素排列顺序输入生成的一棵

二叉搜索树。

2. 空堆开始依次向堆中插入线性表(38,64,52,15,73,40,48,55,26,12)中的每个元素,请以线性表的形式给出每插入一个元素后堆的状态。

3. 已知一个堆为(12,15,40,38,26,52,48,64),若需要从堆中依次删除四个元素,请给出每删除一个元素后堆的状态。

4. 有七个带权结点,其权值分别为3,7,8,2,6,10,14,试以它们为叶子结点构造一棵哈夫曼树,并计算出带权路径长度WPL。

四、算法设计

1.编写在以BST为树根指针的二叉搜索树上进行查找值为item的结点的非递归算法,

若查找成功则由item带回整个结点的值并返回true,否则返回false。

bool Find( BTreeNode * BST , ElemType & item )

2.下面的算法功能是向HBT堆中插入一个值为item的元素,使得插入后仍是一个堆。请在画有横线的地方填上合适的语句,完成其功能。

void AH(Heap & HBT , const ElemType item)

// 形参HBT为一个小根堆

{

HBT.heap[HBT.size]=item;

HBT.size++;

ElemType x=item

int i=HBT.size-1;

while ( i != 0 ){

int j= ;

if ( x>=HBT.heap[j]) break;

;

;

}

HBT.heap[i]=x;

}

第六部分图

一、填空题

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

2.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。

3. 在一个具有n个顶点的无向图中,要连通所有顶点则至少需要________条边。

4.表示图的三种存储结构为________、________和________。

5. 对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为________。

6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别为________和________条。

7. 在有向图的邻接表和逆邻接表表示中,每个顶点邻接表分别链接着该顶点的所有________和________结点。

8.对于一个具有n个顶点和e条边的有向图和无向图,若采用边集数组表示,则存于数组中的边数分别为________和________条。

9.对于一个具有n个顶点和e条边的无向图,当分别采用邻接矩阵、邻接表和边集数组表示时,求任一顶点度数的时间复杂度依次为________、________和________。

10. 假定一个图具有n个顶点和e条边,则采用邻接矩阵、邻接表和边集数组表示时,其相应的空间复杂度分别为________、________和________。

11. 对用邻接矩阵表示的图进行任一种遍历时,其时间复杂度为________,对用邻接表表示的图进行任一种遍历时,其时间复杂度为________。

12.对于下面的无向图G1,假定用邻接矩阵表示,则从顶点v 0开始进行深度优先搜索遍历得到的顶点序列为____________,从顶点v 0开始进行广度优先搜索遍历得到的顶点序列为____________。

13. 对于下面的有向图G2,假定用邻接矩阵表示,则从顶点v 0开始进行深度优先搜索遍历得到的顶点序列为____________,从顶点v 0开始进行广度优先搜索遍历得到的顶点序列为____________。

14. 对于下面的带权图G3,其最小生成树的权为________。

15.对于下面的带权图G3,若从顶点v 0出发,则按照普里姆算法生成的最小生成树中,依次得到的各条边为_______________。

16. 对于下面的带权图G3,若按照克鲁斯卡尔算法产生最小生成树,则得到的各条边依次为_______________。

17.假定用一维数组d[n]存储一个AOV 网中用于拓扑排序的顶点入度,则值为0的元素被链接成为一个________。

18. 对于一个具有n 个顶点和e 条边的连通图,其生成树中的顶点数和边数分别为________和________。

二、应用题

1. 对于下图G4和G5,按下列条件试分别写出从顶点v 0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列。 (1) 假定它们均采用邻接矩阵表示; (2) 假定它们均采用邻接表表示,并且假定每个顶点邻接表中的结点是按顶点序号从大到小的次序链接的。

2. 对于下图G6,试给出一种拓扑序列,若在它的邻接表存储结构中,每个顶点邻接表中的边结点都是按照终点序号从大到小链接的,则按此给出唯一一种拓扑序列。

图G1图G2图G3

图G4图G5

图G6

第七部分查找

一、填空题

1.以顺序查找方法从长度为n的线性表中查找一个元素时,平均查找长度为________,时间复杂度为________。

2.以二分查找方法从长度为n的线性有序表中查找一个元素时,平均查找长度小于等于________,时间复杂度为________。

3.以二分查找方法从长度为12的有序表中查找一个元素时,平均查找长度为________。 4.以二分查找方法查找一个线性表时,此线性表必须是________存储的________表。 5.从有序表(12,18,30,43,56,78,82,95)中依次二分查找43和56元素时,其查找长度分别为________和________。

6.对于二分查找所对应的判定树,它既是一棵_______,又是一棵________。

7.假定对长度n=50的有序表进行二分查找,则对应的判定树高度为________,判定树中前5层的结点数为________,最后一层的结点数为________。

8.在索引表中,每个索引项至少包含有________域和________域这两项。

9.假定一个线性表为(12,23,74,55,63,40,82,36),若按Key % 3条件进行划分,使得同一余数的元素成为一个子表,则得到的三个子表分别为________、________和________。

10. 假定一个线性表为(”abcd”,”baabd”,”bcef”,”cfg”,”ahij”,”bkwte”,”ccdt”, ”aayb”),若按照字符串的第一个字母进行划分,使得同一个字母被划分在一个子表中,则得到的a,b,c三个子表的长度分别为________、________和________。

11.在线性表的________存储中,无法查找到一个元素的前驱或后继元素。

12.在线性表的________存储中,对每一个元素只能采用顺序查找。

13.假定对线性表(38,25,74,52,48)进行散列存储,采用H(K)=K % 7作为散列函数,若分别采用线性探查法和链接法处理冲突,则对各自散列表进行查找的平均查找长度分别为_______和________。

14.假定要对长度n=100的线性表进行散列存储,并采用链接法处理冲突,则对于长度m=20的散列表,每个散列地址的单链表的长度平均为________。

15. 在线性表的散列存储中,处理冲突有________和________两种方法。

16.对于线性表(18,25,63,50,42,32,90)进行散列存储时,若选用H(K)=K % 9作为散列函数,则散列地址为0的元素有________个,散列地址为5的元素有________个。

二、应用题

1. 假定查找有序表A[25]中每一元素的概率相等,试分别求出进行顺序、二分查找每

一元素时的平均查找长度。

2. 假定一个待散列存储的线性表为(32,75,29,63,48,94,25,46,18,70),散列地址空间为HT[13],若采用除留余数法构造散列函数和线性探查法处理冲突,试求出每一元素的散列地址,画出最后得到的散列表,求出平均查找长度。

3. 假定一个待散列存储的线性表为(32,75,29,63,48,94,25,46,18,70),散列地址空间为HT[11],若采用除留余数法构造散列函数和链接法处理冲突,试求出每一元素的散列地址,画出最后得到的散列表,求出平均查找长度。

三、算法设计

设计在有序表A[n]中按二分查找关键字为K的递归和非递归算法。

第八部分排序

一、填空题

1.每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做________排序;每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做________排序。

2.每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做________排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做________排序。

3.在直接选择排序中,记录比较次数的时间复杂度为________,记录移动次数的时间复杂度为________。

4. 在堆排序的过程中,对n个记录建立初始堆需要进行________次筛运算,由初始堆到堆排序结束,需要对树根结点进行_______次筛运算。

5.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序过程的时间复杂度为________。

6.假定一组记录的排序码为(46,79,56,38,40,84),则利用堆排序方法建立的初始堆为________________。

7. 快速排序在平均情况下的时间复杂度为________,在最坏情况下的时间复杂度为________。

8.快速排序在平均情况下的空间复杂度为________,在最坏情况下的空间复杂度为________。

9.在快速排序方法中,进行每次划分时,是从当前待排序区间的________向________依次查找出处于逆序的元素并交换之,最后将基准元素交换到一个确定位置,从而以该位置把当前区间划分为前后两个子区间。

10. 假定一组记录的排序码为(46,79,56,38,40,80),对其进行快速排序的一次划分的结果为________________。

11. 假定一组记录的排序码为(46,79,56,38,40,80),对其进行快速排序的过程中,对应二叉搜索树的深度为________,分支结点数为________。

12.在二路归并排序中,对n个记录进行归并的趟数为________。

13. 在归并排序中,进行每趟归并的时间复杂度为________,整个排序过程的时间复杂度为________,空间复杂度为________。

14.对20个记录进行归并排序时,共需要进行________趟归并,在第三趟归并时是把

长度为________的有序表两两归并为长度为________的有序表。

15.假定一组记录的排序码为(46,79,56,38,40,80),对其进行归并排序的过程中,第二趟归并后的结果为________________。

二、应用题

已知一组元素的排序码为

(46,74,16,53,14,26,40,38,86,65,27,34)

(1) 利用直接插入排序的方法写出每次向前面有序表插入一个元素后的排列结果。

(2) 利用直接选择排序方法写出每次选择和交换后的排列结果。

(3) 利用堆排序的方法写出在构成初始堆和利用堆排序的过程中,每次筛运算后的排列结果,并画出初始堆所对应的完全二叉树。

(4) 利用快速排序的方法写出每一层划分后的排列结果,并画出由此快速排序得到的二叉搜索树。

(5) 利用归并排序的方法写出每一趟二路归并排序后的结果。

三、算法设计

完成从一维数组A[n]上进行快速排序的递归算法。

void QuickSort( ElemType A[] , int s , int t )

{

int i = s, j = t+1;

ElemType x = A[s];

do {

do i++; while ( ) ; // 填写一个循环条件

do j--; while ( A[j].stn > x.stn );

if ( i

{ ElemType temp = A[i] ; A[i] = A[j] ; A[j] = temp; } } while ( i

A[s] = A[j]; A[j] = x;

if ( s

if ( j+1

}

数据结构练习题参考答案

第一部分绪论

一、单选题

1. A

2. C

3. B

4. C

5. D

6. B

二、填空题

1. 集合结构、线性结构、树型结构、图形结构

2. 顺序、链接、索引、散列

3. 1:1、1:N、M:N

4. 数据定义、操作声明

5. 引用形参( 或指针形参)

6. 引用类型( 或指针类型)

7. 实参、值

8. iostream.h 、fstream.h

9. stdlib.h 、rand( ) %21

10. sizeof(a)、a+i*sizeof(a[0])、a+i

11. 参数类型、数量、次序

12. 2、用户自定义

13. = = 、ra 、rb

14. O(n)、O(m*n)

15. n、n(n+1)/2、O(n2)

16. O(n)

第二部分线性表

一、单选题

1. B

2. A

3. C

4. B

5. D

6. C

二、填空题

1.元素值、指针

2.( 38 , 56 , 25 , 60 , 42 , 74 )

3. O(n)、O(1)

4.(1)、O(n)

5.i-1、i+1

6. p->next 、a[p].next

7.表头

8.前驱、后继

9. 表尾、表头

10.HL->next = = NULL 、HL->next = = HL

三、应用题

1.(1) ( 79 , 62 , 34 , 57 , 26 , 48 )

(2) ( 26 , 34 , 48 , 57 , 62 , 79 )

(3) ( 26, 34 , 39 , 48 , 57 , 62 )

2.(12,26,9,8,15,30,50)

3.(1) ElemType DMValue( List & L ) {

if ( ListEmpty(L) ) { // 空线性表

cerr <<”List is Empty!”<

exit(1);

}

ElemType x; // x存放最小元素

x = L.list[0];

int k = 0; // k存放最小元素的下标

for ( int i = 1; i

if ( L.list[i] < x ) { x = L.list[i] ; k = i; }

L.list[k] = L.list[L.size-1]; // 最后一个元素填补最小元素位置

L.size--; // 线性表长度减1

return x; // 返回最小元素

}

(2)ElemType Delete( List & L, int i ) {

if ( i<1 || i>L.size ) { // 判断i的合法性

cerr <<”Index is out range!”<

exit(1);

}

ElemType x = L.list[i-1]; // 保存被删除元素

for ( int j = i-1; j

L.list[j] = L.list[j+1];

L.size--; // 长度减1

return x; // 返回被删元素

}

(3)void Insert( List & L, int i, ElemType x ) {

if ( i<1 || i>L.size+1 ) { // 判断i的合法性

cerr <<”Index is out range!”<

exit(1);

}

if ( L.size == MaxSize ) { // 判断线性表满

cerr <<”List overflow!”<

exit(1);

}

for ( int j = L.size-1 ; j>=i-1 ; j-- ) // 元素后移,产生插入位置L.list[j+1] = L.list[j];

L.list[i-1] = x; // 元素插入

L.size++; // 长度加1

}

(4) void Delete( List & L, ElemType x ) {

int i = 0;

while ( i

if ( L.list[i] == x ) { // 删除x元素

for ( int j = i+1; j

L.list[j-1] = L.list[j];

L.size--;

}

else i++; // 寻找下一个x元素的位置

}

4.(1)void Delete( LNode * & HL, int i ) {

if ( i<1 || HL==NULL ) { // 判断i的合法性或空链表

cerr <<”index is out range!”<

exit(1);

}

LNode * ap , * cp;

ap = NULL ; cp = HL ; // cp指向当前结点,ap指向其前驱结点

int j = 1;

while ( cp != NULL ) // 查找第i个结点

if ( j == i ) // 找到第i个结点

break; // cp指向的结点即为第i个结点

else { // 继续向后寻找

ap = cp;

cp = cp->next;

j++;

}

if ( cp == NULL ) { // 没有找到第i个结点

cerr <<”Index is out range!”<

exit(1);

}

if ( ap == NULL ) // 删除第1个结点(即i=1)

HL = HL->nextl

else

ap->next = cp->next; // 删除第i个结点

delete cp; // 释放被删除结点的空间}

(2)void Insert( LNode * & HL, const ElemType & x ) {

LNode * newptr = new LNode; // 申请一个新结点

if ( newptr == NULL ) { // 分配失败

cerr <<”Memory allocation failare!”<

exit(1);

}

newptr->data = x;

if ( HL == NULL || xdata ) { // 空表或x小于表头结点,

newptr->next = HL; // 作为新表头结点插入

HL = newptr;

return;

}

// 查找插入位置

LNode * cp = HL->next; // 用cp指向当前结点(即待查结点)

LNode * ap = HL; // 用ap作为指向当前结点的前驱结点指针

while ( cp != NULL )

if ( xdata) break; // 找到插入位置

else { ap = cp; cp = cp->next; } // 继续查找插入位置

newptr->next = cp; ap->next = newptr; // 插入新结点

}

(3)ElemType MaxValue( LNode * HL ) {

if ( HL == NULL ) { // 空表

cerr <<”Linked list is empty!”<

exit(1);

}

ElemType max = HL->data;

LNode * p = HL->next;

while ( p != NULL ) { // 寻找最大值

if ( max < p->data ) max = p->data;

p = p->next;

}

return max;

}

(4)int Count( LNode * HL , ElemType x ) {

int n = 0;

LNode * p = HL;

while ( p != NULL ) {

if ( p->data == x ) n++;

p = p->next;

}

return n;

}

第三部分栈和队列

一、单选题

1. A

2. B

3. C

4. A

5. B

6. B

7. D

8. D

二、填空题

1.队尾、队首

2. 后进先出(LIFO)、先进先出(FIFO)

3.栈顶指针、存储

4.栈顶元素、栈顶指针

5.front = = rear 、(rear+1)%QueueMaxSize = = front

6. –1 、StackMaxSize-1

7. 栈空、空队、队列只有一个元素

8. 新结点的指针域、栈顶指针

9.指针域、栈顶指针

10. 队尾指针、存储

11.top = = 0

12. p->next = HS 、HS = p

13. HS = HS->next

14. ( front = = rear ) && ( front <>NULL )

15. 3 4 25 6 15 + - / 8 * +

16. (24+8)*3/(4*(10-7)) 、8

三、应用题

12 15 5 30 18

四、编程题

递归算法:

long Fib( int n ) {

if ( n==1 || n=2 ) // 终止递归条件

return 1;

else

return Fib(n-1)+Fib(n-2);

}

非递归算法:

long Fib( int n ) {

int a , b , c; // c代表当前项,a和b分别代表当前项前面的第2项和第1项

a =

b = 1;

if ( n == 1 || n == 2 )

return 1;

else

for ( int i = 3 ; i<=n ; i++ ) {

c = a+b; // 求当前项

a = b; // 产生第2项

b = c; // 产生第1项

}

return c; // 返回所求的第n项

}

递归算法的时间复杂度为O(2n),空间复杂度为O(n);非递归算法的时间复杂度为O(n),空间复杂度为O(1)。

第四部分 稀疏矩阵和广义表

一、单选题

1. A

2. B 二、填空题

1. 行号、列号、元素值

2. 行号、列号

3. 引用 (或指针)

4. 等于

5. 4 、5

6. 列号、行号

7. 单、表

8. 括号

9. 3

10. 元素值、子表指针 11. true 、NULL 三、应用题

1.(1) ( (1,2,4),(2,4,-3),(2,7,1),(3,1,8),(4,4,5),(5,2,-7),(5,6,2),(6,4,6) ) (2)

(3) ((1,3,8),(2,1,4),(2,5,-7),(4,2,-3),(4,4,5), (4,6,6),(6,5, 2),(7,2,1))

2. (1) A :长度:1 深度:2 (2) B :长度:3 深度:1

(3) C :长度:2 (4) D :长度:2 (5) E :长度:3 (6) F :长度:1

B E D

严蔚敏版数据结构课后习题答案-完整版

第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)

数据结构-第六章-图-练习题及答案详细解析(精华版)

图 1. 填空题 ⑴ 设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵ 任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶ 图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度

⑺ 图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼ 如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽ 在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk 【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。 2. 选择题 ⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的()倍。 A 1/2 B 1 C 2 D 4 【解答】C 【分析】设无向图中含有n个顶点e条边,则。

数据结构试题库答案

数据结构试题及答案 一、单项选择题 (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

数据结构II试卷B及答案(孟凡荣)

东北大学继续教育学院 数据结构II 试卷(作业考核线上) B 卷 (共8 页) 一、单选题(每小题2分,共10小题,20分) [A ] 1.抽象数据类型的三个组成部分分别为 A.数据对象、数据关系和基本操作 B.数据元素、逻辑结构和存储结构 C.数据项、数据元素和数据类型 D.数据元素、数据结构和数据类型 [D ] 2.下列各式中,按增长率由小至大的顺序正确排列的是 A.n,n!,2n ,n3/2 B.n3/2,2n,n logn,2100 C.2n,log n,n logn,n3/2 D.2100,logn, 2n, n n [A ] 3. 已知指针p和q分别指向某单链表中第一个结点和最后一个结点。假设指针s指向 另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为 A. q->next=s->next;s->next=p; B. s->next=p;q->next=s->next; C. p->next=s->next;s->next=q; D. s->next=q;p->next=s->next; [C ] 4.二维数组A[20][10]采用行优先的存储方法,若每个元素占2个存储单元,且第1 个元素的首地址为200,则元素A[8][9]的存储地址为 A.374 B.576 C.378 D.580 [B ] 5.设有一个顺序栈的入栈序列是a、b、c,则3个元素都出栈的可能不同排列个数为 A.4 B.5 C. 6 D. 7 [D ] 6. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的 叶子数为 A.5 B.6

C.7 D.8 [C ] 7.以下说法不正确的是 A.无向图中的极大连通子图称为连通分量 B.连通图的广度优先搜索中一般要采用队列来暂存刚访问过的顶点 C.图的深度优先搜索中一般要采用栈来暂存刚访问过的顶点 D.有向图的遍历不可采用广度优先搜索 [B ] 8. 假设在构建散列表时,采用线性探测解决冲突。若连续插入的n个关键字都是同义 词,则查找其中最后插入的关键字时,所需进行的比较次数为 A. n-1 B. n C. n+l D. n+2 [B ] 9.设置溢出区的文件是 A.索引非顺序文件B.ISAM文件 C.VSAM文件D.顺序文件 [A ] 10. 已知一组关键字为{25,48,36,72,79,82,23,40,16,35},其中每相邻两个为有序子 序列。对这些子序列进行一趟两两归并的结果是 A.{25,36,48,72,23,40,79,82,16,35} B.{25,36,48,72,16,23,40,79,82,35} C.{25,36,48,72,16,23,35,40,79,82} D.{16,23,25,35,36,40,48,72,79,82} 二、填空题(每小题1分,共10小题,10分) 11.下面程序段中带下划线的语句的执行次数的数量级是( log n )。 2 i=1; WHILE(inest=L->next->next;L->next->next =S )。 13.无表头结点的链队列Q为空的条件是( Q->real==Q->front=NULL )。 14.设Q[0..N-1]为循环队列,其头、尾指针分别为P和R,则队Q中当前所含元素个数为((R-P+N)% N )。 15.一棵含999个结点的完全二叉树的深度为( 10 )。 16.在 AOV网中,存在环意味着某项活动以自己为先决条件;对程序的数据流图来说,它表明存在(死循环)。 17. 有向图G可拓扑排序的判别条件是( 不存在环 )。 18.如果结点A有 3个兄弟,而且B是A的双亲,则B的度是( 4 )。 19.应用回溯与分支限界法解决实际问题时,在搜索过程中利用判定函数,也称为(限界函数)。 20. 若以1234作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由输 出受限的双端队列得到的输出序列是( 4231 )。 三、应用题(每小题6分,共5小题,30分) 21.比较线性表和栈的基本操作的不同点。

数据结构习题及参考答案

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构复习题附答案

一.是非题 1. 数据结构(应该是抽象数据类型)可用三元式表示(D,S,P)。其中:D是数据对象,S是D上的关系,P是对D的基本操作集。(f) 2 简单地说,数据结构是带有结构的数据元素的集合。(t) 3 判断带头结点的非空循环单链表(头指针为L)中指针p所指结点是最后一个元素结点 的条件是:p->next==L。(t) 4 线性表的链式存储结构具有可直接存取表中任一元素的优点。(f) 5 线性表的顺序存储结构优于链式存储结构。(f) 6. 在单链表P指针所指结点之后插入S结点的操作是: P->next= S ; S-> next = P->next;。(f) (顺序弄反了S-> next = P->next; P->next= S ;) 7 对于插入、删除而言,线性表的链式存储优于顺序存储。(t) 8. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。(f) 9. 栈和队列是操作上受限制的线性表。(t) 10. 队列是与线性表完全不同的一种数据结构。(f) (栈和队列是操作上受限制的线性表) 11. 队列是一种操作受限的线性表,凡对数据元素的操作仅限一端进行。(f) (两端) 12. 栈和队列也是线性表。如果需要,可对它们中的任一元素进行操作。(f) ( “如果需要,可对它们中的任一元素进行操作.” 这里的意思是在O(1)的时间来读和改某个元素。比如数组的直接索引。 栈:如果需要,每一次只能对栈顶的元素进行操作 队列:如果需要,每一次只能对两端,或者只能对队列头的元素进行操作。) 13. 栈是限定仅在表头进行插入和表尾进行删除运算的线性表。(f) 14. 二叉树中每个结点有两个子结点,而对一般的树,则无此限制,所以,二叉树是树的特殊情形。(f) (二叉树和树相互独立) 15 二叉树是一棵结点的度最大为二的树。(f) (二叉树和树相互独立) 16 赫夫曼树中结点个数一定是奇数。(t) 17 在二叉树的中序遍历序列中,任意一个结点均处在其左孩子结点的后面。(t) (LDR) 18 假设B是一棵树,B′是对应的二叉树。则B的后根遍历相当于B′的后序遍历。(f) (后根遍历相当于中序遍历) 19. 通常,二叉树的第i层上有2i-1个结点。(f) (应该为1~2i-1个) 20. 中序线索二叉树的优点是便于在中序下查找直接前驱结点和直接后继结点。(t) 21 二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。(t) 22 由树结点的先根序列和后根序列可以唯一地确定一棵树。(t) 23 邻接多重表可以用以表示无向图,也可用以表示有向图。(f) (只能表示无向图,有向图用十字链表) 24 可从任意有向图中得到关于所有顶点的拓扑次序。(f) (带环图没有) 25 有向图的十字链表是将邻接表和逆邻接表合二为一的链表表示形式。(t)

《数据结构》题库及答案

《数据结构》题库及答案 一、选择题 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 的存放位置是 。

大工数据结构课程考试模拟试卷a

少年易学老难成,一寸光阴不可轻- 百度文库 《数据结构》 一、单项选择题(本大题共10小题,每小题3分,共30分) 1、若进栈的序列为1,2,3,4,则不可能得到的出栈序列是()。 A. 3,2,1,4 B. 3,2,4,1 C. 4,2,3,1 D. 2,3,4,1 2、深度为k的完全二叉树所含叶结点的个数最多为(),设根结点在第1层上。 A. 2k B. 2k-1 C. k D. 2k-1 3、衡量查找算法效率的主要标准是()。 A. 元素个数 B. 所需的存储量 C. 平均查找长度 D. 算法难易程度 4、与线性表的顺序存储不相符的特性是()。 A. 插入和删除操作灵活 B. 需要连续的存储空间 C. 便于随机访问 D. 存储密度大 5、若进队序列为1,2,3,则出队序列是()。 A. 3,2,1 B. 1,2,3 C. 1,3,2 D. 3,1,2 6、不带头结点的单链表L为空的判定条件是()。 A. L==NULL B. L->next==NULL C. L->next==L D. L!=NULL 7、union(A,B,C)表示求集合A和B的并集C。若A={a,b,c},B={c,d},则union(A,B,C)运算后C=()。 A.{a,b,c,d} B.{a,b,c} C.{a,b} D.{c,d} 8、数组A中,每个元素的长度为3个存储单元,行下标i从1到5,列下标j从1到6,从首地址SA开始连续存放在存储器内,存放该数组至少需要的存储单元数是()。 A. 90 B. 70 C. 50 D. 30 9、遍历一棵具有n个结点的二叉树,在先序序列、中序序列和后序序列中所有叶子结点的相对次序()。 A. 都不相同 B. 完全相同 C. 先序和中序相同 D. 中序和后序相同 10、用给定的哈夫曼编码来压缩数据文件,其压缩效率主要取决于()。 A. 文件长度 B. 平均码长 C. 被压缩文件的特征 D. 以上都不是 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、当利用大小为N的数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。 A. top++ B. top-- C. top=0 D. top=N-1 7、在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。 A. 2 B. 3 C. 4 D. 5 8、利用3,6,8,12,5,7这六个值作为叶子结点的权,生成一棵哈夫曼树,该树的深度为()。 A. 3 B. 4

数据结构 习题答案

第1章概论 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①C、数据信息在计算机中的②A以及一组相关的运算等的课程。 ①A.操作对象B.计算方法C.逻辑结构D.数据映象 ②A.存储结构B.关系C.运算D.算法 2. 计算机算法指的是① C ,它必具备输入、输出和② B 等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 3.下面程序段的时间复杂度是D for(i=0;inext = p; p->next = s; B. s->next = p->next; p->next = s; C. s->next = p->next; p = s; D. p->next = s; s->next = p; 2.非空的不带头结点的循环单链表,首结点由first指向,尾结点由p指向,则满足: C A. p->next == NULL; B. p == NULL; C. p->next == first; D. p == first; 3.在一个长度为n的顺序存储的线性表中,删除第i个元素(0≤i≤n-1)时,需要移动多少个元素?C A. n-i B. n-i+1 C. n-i-1 D. I 4.在带头结点指针head的单链表中,链表为空的判断条件是?B A. head == NULL B. head->next == NULL C. head != NULL D. head->next == head; 5.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是B A. p=p->next; B. p->next=p->next->next; C. p->next=p; D. p=p->next->next;

数据结构 第六章 图 练习题及答案详细解析

图 1. 填空题 ⑴设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度 ⑺图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk

数据结构试题及答案(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 )

数据结构试卷-A+答案

北京师范大学2011~2012学年第 1 学期期末考试试卷(A 卷) 课程名称: 数据结构 任课教师姓名: 刘玉铭 卷面总分: 100 分 考试时长: 100 分钟 考试类别:闭卷 院(系): 数学科学学院 专 业: 年级: 2010 姓 名: 学 号: 阅卷教师(签字): 一、 单项选择题(每题2分,共10题20分) 1.以下那一个术语与数据的存储结构无关? 。 A .栈 B .哈希表 C .线索树 D .双向链表 2.链表不具有的特点是 。 A .插入、删除不需要移动元素 B .可随机访问任一元素 C .不必事先估计存储空间 D .所需空间与线性表长度成正比 3.算术表达式a+b*(c+d/e )转为后缀表达式后为 。 A .ab+cde/* B .abcde/+*+ C .abcde/*++ D .abcde*/++ 4.二维数组A[10][20]采用列优先的存储方法,若每个元素占2个存储单元,设A[0][0]的地址为100,则元素A[7][6]的存储地址为 。 A .232 B .234 C .390 D .392 装 订 线

5.若一棵二叉树具有10 个度为2 的结点,5 个度为1 的结点,则度为0 的结点个数是。 A.9 B.11 C.15 D.不确定 6.一棵二叉树中序序列为FEABDC,后序序列为FBADCE,则层序序列为。 A. ABCDEF B. EFCDBA C. FECDAB D. EFCDAB 7.在有向图G 的拓扑序列中,若顶点Vi 在顶点Vj 之前,则下列情形不可能出现的是。 A.G 中有弧 B.G 中有一条从Vi 到Vj 的路径C.G 中没有弧 D.G 中有一条从Vj 到Vi 的路径 8.对于二叉排序树,下面的说法是正确的。 A.二叉排序树是动态树表,查找不成功时插入新结点时,会引起树的重新分裂和组合 B.对二叉排序树进行层序遍历可得到有序序列 C.用逐点插入法构造二叉排序树时,若先后插入的关键字有序,二叉排序树的深度最大 D.在二叉排序树中进行查找,关键字的比较次数不超过结点数的1/2 9.一组记录的关键字为{47、75、55、30、42、90},则用快速排序方法并以第一个记录为支点得到的第一次划分结果是。 A. 30,42,47,55,75,90 B. 42,30,47,75,55,90 C. 42,30,47,55,75,90 D. 42,30,47,90,55,75 10.下述文件中适合于磁带存储的是。 A. 顺序文件 B. 索引文件 C. 散列文件 D. 多关键字文件 二、判断(每题1分,共10题10分) 1.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。----( ) 2.KMP 算法的特点是在模式匹配时指示主串的指针不会变小。------------( )

数据结构习题及答案——严蔚敏

第一章绪论 一、选择题 1.组成数据的基本单位是() (A)数据项(B)数据类型(C)数据元素(D)数据变量 2.数据结构是研究数据的()以及它们之间的相互关系。 (A)理想结构,物理结构(B)理想结构,抽象结构 (C)物理结构,逻辑结构(D)抽象结构,逻辑结构 3.在数据结构中,从逻辑上可以把数据结构分成() (A)动态结构和静态结构(B)紧凑结构和非紧凑结构 (C)线性结构和非线性结构(D)内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ① (A)数据元素(B)计算方法(C)逻辑存储(D)数据映像 ② (A)结构(B)关系(C)运算(D)算法 5.算法分析的目的是()。 (A)找出数据结构的合理性(B)研究算法中的输入和输出的关系 (C)分析算法的效率以求改进(D)分析算法的易懂性和文档性 6.计算机算法指的是(①),它必须具备输入、输出和(②)等5 个特性。 ① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法

② (A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性 (C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性 二、判断题 1.数据的机内表示称为数据的存储结构。() 2.算法就是程序。() 3.数据元素是数据的最小单位。() 4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。() 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。() 三、填空题 1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。 2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。 3.在树形结构中,树根结点没有_______结点,其余每个结点有且只 有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以 _________。 5.线性结构中元素之间存在________关系,树形结构中元素之间存 在______关系,图形结构中元素之间存在_______关系。 6.算法的五个重要特性是_______、_______、______、_______、

数据结构复习题及答案(12级).

一、选择题。(每小题2分,共40分) (1) 计算机识别.存储和加工处理的对象被统称为____A____。 A.数据 B.数据元素 C.数据结构 D.数据类型 (2) 数据结构通常是研究数据的____ A _____及它们之间的联系。 A.存储和逻辑结构 B.存储和抽象 C.理想和抽象 D.理想与逻辑 (3) 不是数据的逻辑结构是____ A ______。 A.散列结构 B.线性结构 C.树结构 D.图结构 (4) 数据结构被形式地定义为,其中D是____ B _____的有限集,R是____ C _____的有限集。 A.算法 B.数据元素 C.数据操作 D.逻辑结构 (5) 组成数据的基本单位是____ A ______。 A.数据项 B.数据类型 C.数据元素 D.数据变量 (6) 设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是____ A ______。 A.线性结构 B.树型结构 C.图型结构 D.集合 (7) 数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为___ C ____。 A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构 (8) 在数据结构的讨论中把数据结构从逻辑上分为___ A ____。 A.内部结构与外部结构 B.静态结构与动态结构 C.线性结构与非线性结构 D.紧凑结构与非紧凑结构 (9) 对一个算法的评价,不包括如下____ B _____方面的内容。 A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度 (10) 算法分析的两个方面是__ A ____。 A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 (11) 线性表是具有n个___ C _____的有限序列(n≠0)。 A.表元素 B.字符 C.数据元素 D.数据项 (12) 线性表的存储结构是一种____ B ____的存储结构。 A.随机存取 B.顺序存取 C.索引存取 D.HASH存取

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

一、单项选择题 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;

数据结构试卷A卷

读书破万卷下笔如有神 《数据结构》试卷(A卷) 一、选择题 1. 数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 D.顺序存储结构 C. 链式存储结构 3. 树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 D. 一对多关系 C.多对一关系 4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; 23nn) D.O(C.O(n) B.O( ) A.O(1) 5. 算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6. 计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 不好说D. 相同C. 高B. 低A. 读书破万卷下笔如有神 8. 数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9. 数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对 10. 计算机内部数据处理的基本单位是()。 A.数据 B.数据元素 C.数据项 D.数据库 11.若查找每个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为( )。

数据结构习题与答案

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

数据结构练习试题和答案解析

第1章绪论 一、判断题 1.数据的逻辑结构与数据元素本身的容和形式无关。(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位。(×) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。(√) 7.数据的存储结构是数据的逻辑结构的存储映象。(√) 8.数据的物理结构是指数据在计算机实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的。(×) 10.算法是对解题方法和步骤的描述。(√) 二、填空题 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构。 5.在树形结构中,除了树根结点以外,其余每个结点只有1个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面的容。 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算法和事后统计法。 16.一个算法的时间复杂度是算法输入规模的函数。 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模的n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O(nlog2n)。 19.若一个算法的语句频度之和为T(n)=3n+nlog2+n2,则算法的时间复杂度为O(n2)。 20.数据结构是一门研究非数值计算的程序问题中计算机的操作对象,以及它们之间的关系和运算的学 科。 三、选择题 1.数据结构通常是研究数据的(A)及它们之间的相互关系。 A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑 2.在逻辑上可以把数据结构分成(C)。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.部结构和外部结构。 3.数据在计算机存储表示时,物理地址和逻辑地址相同并且是连续的,称之为(C)。 A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构 4.非线性结构中的每个结点(D)。 A.无直接前驱结点.B.无直接后继结点.

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