数据结构单元练习10

数据结构单元练习10
数据结构单元练习10

单元测验10

一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)

(ㄨ)(1)如果某种排序算法不稳定,则该排序方法就没有实用价值。

(√)(2)希尔排序是不稳定的排序。

(ㄨ)(3)冒泡排序是不稳定的排序。

(√)(4)对n个记录的进行快速排序,所需要的平均时间是O(nlog2n)。

(ㄨ)(5)堆排序所需的时间与待排序的记录个数无关。

(√)(6)当待排序的元素个数很多时,为了交换元素的位置要占用较多的时间,这是影响时间复杂度的主要因素。

(ㄨ)(7)快速排序在任何情况下都比其它排序方法速度快。

(√)(8)对快速排序来说,初始序列为正序或反序都是最坏情况。

(√)(9)采用归并排序可以实现外排序。

(√)(10)采用希尔方法排序时,若关键字的排列杂乱无序,则效率最高。

二.填空题

(1)大多数排序算法都有两个基本的操作:比较和移动。

(2)评价排序算法优劣的主要标准是时间复杂度和算法所需的附加空间。

(3)根据被处理的数据在计算机中使用不同的存储设备,排序可分为:内排序和外排序。(4)外排序是指在排序过程中,数据的主要部分存放在计算机的外存中。

(5)对n个关键字进行冒泡排序,其可能的最小比较次数为: n-1 次。

(6)在最坏情况下,在第i趟直接插入排序中,要进行 i-1 次关键字的比较。

(7)对n个关键字进行冒泡排序,时间复杂度为 O(n2) 。

(8)快速排序在最坏情况下的时间复杂度是 O(n2) 。

(9)对于n个记录的集合进行归并排序,所需要的平均时间为: O(log2n) 。

(10)对于n个记录的集合进行归并排序,所需要的附加空间是 O(n) 。

(11)若原始数据接近无序,则选用快速排序最好。

(12)在排序前,关键字值相等的不同记录,排序后相对位置保持不变的排序方法,称为稳定排序方法。

(13)在插入排序和选择排序中,若初始数据基本正序,则选用插入排序较好。

(14)当增量为1时,该趟希尔排序与直接插入排序基本一致。

(15)第一趟排序后,序列中键值最大的记录交换到最后的排序算法是冒泡排序。(16)依次将每个记录插入到一个有序的子文件中的排序方法称为直接插入排序。(17)在插入排序、选择排序和归并排序中,排序是不稳定的为:选择排序。

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

(19)两个序列分别为:

L1={25,57,48,37,92,86,12,33}

L2={25,37,33,12,48,57,86,92}。

用冒泡排序法对L1和L2进行排序,交换次数较少的是序列: L2 。

(20)对一组记录(54,35,96,21,12,72,60,44,80)进行直接选择排序时,第四次选择和交换后,未排序记录是 54,72,60,96,80 。

三.选择题

(1)排序是根据( A )的大小重新安排各元素的顺序。

A.关键字 B.数组 C.元素件 D.结点

(2)评价排序算法好坏的标准主要是( D )。

A.执行时间 B.辅助空间

C.算法本身的复杂度 D.执行时间和所需的辅助空间

(3)直接插入排序的方法是( B )的排序方法。

A.不稳定 B.稳定 C.外部 D.选择

(4)直接插入排序的方法要求被排序的数据( B )存储。

A.必须链表 B.必须顺序 C.顺序或链表 D.可以任意

(5)排序方法中,从无序序列中选择关键字最小的记录,将其与无序区(初始为空)的第一个记录交换的排序方法,称为 ( D )。

A.希尔排序 B.归并排序 C.插入排序 D. 选择排序

(6)每次把待排序方的区间划分为左、右两个区间,其中左区间中元素的值不大于基准元素的值,右区间中元素的值不小于基准元素的值,此种排序方法叫做( C )。

A.冒泡排序 B.堆排序 C.快速排序 D. 归并排序

(7)快速排序在( C )情况下最易发挥其长处。

A.待排序的数据中含有多个相同的关键字 B.待排序的数据已基本有序

C.待排序的数据完全无序 D.待排序的数据中最大值与最小值相差悬殊

(8)下述几种排序方法中,要求内存量最大的是:( D )。

A.插入排序 B.选择排序 C.快速排序 D. 归并排序

(9)直接插入排序的方法是从第( B )个元素开始,插入到前边适当位置的排序方法。

A.1 B.2 C.3 D.n

(10)堆的形状是一棵( C )。

A.二叉排序树 B.满二叉树 C.完全二叉树 D.平衡二叉树

(11)内排序是指在排序的整个过程中,全部数据都在计算机的( A )中完成的排序。

A.内存 B.外存 C.内存和外存 D.寄存器

(12)快速排序的方法是( A )的排序方法。

A.不稳定 B.稳定 C.外部 D.选择

(13)下列排序方法中,关键字比较次数与记录的初始排列次序无关的是( A )。

A.选择排序 B.希尔排序 C.插入排序 D.冒泡排序

(14)下述几种排序方法中,平均时间复杂度最小的是( A )。

A.希尔排序 B.插入排序 C.冒泡排序 D.选择排序

(15)对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是( B )。

A.O(n) B.O(n2) C.O(nlog2n) D.O(n3)

(16)冒泡排序的方法对n个数据进行排序,第一趟排序共需要比较( C )次。

A.1 B.2 C.n-1 D.n

(17)对n个不同的排序码进行冒泡(递增)排序,在下列( B )情况比较的次数最多。

A.从小到大排列好的 B.从大到小排列好的 C.元素无序 D.元素基本有序

(18)用直接插入排序法对下面的四个序列进行由小到大的排序,元素比较次数最少的是( B )。 A,94,32,40,90,80,46,21,69 B.21,32,46,40,80,69,90,94

C.32,40,21,46,69,94,90,80 D.90,69,80,46,21,32,94,40

(19)一组记录的排序码为(25,48,16,35,79,82,23,40),其中含有4个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为:( A )。

A,16 25 35 48 23 40 79 82 36 72 B.16 25 35 48 79 82 23 36 40 72

C.16 25 48 35 79 82 23 36 40 72 D.16 25 35 48 79 23 36 40 72 82

(20)一个数据序列的关键字为:(46,79,56,38,40,84),采用快速排序,并以第一个数为基准得到第一次划分的结果为:( C )

A.(38,40,46,56,79,84) B.(40,38,46,79,56,84)

C.(40,38,46,56,79,84) D.(40,38,46,79,56,84)

四.排序过程分析

1.已知数据序列{10,8,18,15,7,16},写出采用直接插入算法排序时,每一趟排序的结果。解: 10 8 18 15 7 16

第一趟结束时结果: [8 10] 18 15 7 16

第二趟结束时结果: [8 10 18] 15 7 16

第三趟结束时结果: [8 10 15 18] 7 16

第四趟结束时结果: [7 8 10 15 18] 16

第五趟结束时结果: [7 8 10 15 16 18]

2.已知数据序列{18,17,60,40,07,32,73,65},写出采用直接插入算法排序时,每一趟排序的结果。

解: 18 17 60 40 07 32 73 65

第一趟结束时结果: [17 18] 60 40 07 32 73 65

第二趟结束时结果: [17 18 60] 40 07 32 73 65

第三趟结束时结果: [17 18 40 60] 07 32 73 65

第四趟结束时结果: [07 17 18 40 60] 32 73 65

第五趟结束时结果: [07 17 18 32 40 60] 73 65

第六趟结束时结果: [07 17 18 32 40 60 73] 65

第七趟结束时结果: [07 17 18 32 40 60 65 73]

3. 已知数据序列{17,18,60,40,7,32,73,65,85}

请写出采用冒泡排序法对该序列作升序排序时每一趟的结果。

解: 17 18 60 40 7 32 73 65 85

第一趟排序结果:

第二趟排序结果:

第三趟排序结果:

第四趟排序结果:

第五趟排序结果:

第五趟排序过程中已无记录交换,排序结束。

4.已知数据序列{80,18,9,90,27,75,42,69,34}

请写出采用冒泡排序法对该序列作升序排序时每一趟的结果。

解: 80 18 09 90 27 75 42 69 34

第一趟排序结果:

第二趟排序结果:

第三趟排序结果:

第四趟排序结果:

第五趟排序结果:

第六趟排序结果:

第六趟排序过程中已无记录交换,排序结束。

5.已知数据序列{10,18,4,3,6,12,9,15,8},写出希尔排序每一趟(设d=4、2、1)排序的结果。

解:

10 18 4 3 6 12 9 15 8

d=4 6 12 4 3 8 18 9 15 10

d=2 4 3 6 12 8 15 9 18 10

d=1 3 4 6 8 9 10 12 15 18

6.已知数据序列{12,02,16,30,28,10,17,20,06,18},写出希尔排序每一趟排序的结果。(设d=5、2、1)

解: 12 02 16 30 28 10 17 20 06 18

d=5

10 02 16 06 18 12 17 20 30 28

d=2

12 02 16 06 17 12 18 20 30 28

d=1 02 06 10 12 16 17 18 20 28 30

7.已知数据序列{10,18,4,3,6,12,9,15},写出二路归并排序的每一趟排序结果。

[10] [18] [4] [3] [6] [12] [9] [15]

[10 18] [3 4] [6 12] [9 15] 第一趟排序结果

[3 4 10 18] [6 9 12 15] 第二趟排序结果

[3 4 6 9 10 12 15 18] 第三趟排序结果

8.已知数据序列{53,36,48,36,60,7,18,41},写出采用简单选择排序的每一趟排序结果。解: [53 36 48 36 60 7 18 41]

(7) [36 48 36 60 53 18 41]

(7 18) [48 36 60 53 36 41]

(7 18 36) [48 60 53 36 41]

(7 18 36 36) [60 53 48 41]

(7 18 36 36 41) [53 48 60]

(7 18 36 36 41 48) [53 60]

(7 18 36 36 41 48 53) [60]

(7 18 36 36 41 48 53 60 )

9.已知数据序列{10,1,15,18,7,15},试画出采用快速排序法,第一趟排序的结果。

10 1 15 18 7 15

low high

交换

7 1 15 18 [10] 15

low high

交换

第一趟排序结果: 7 1 [10] 18 15 15

low high

10.已知数据序列{10,1,15,18,7,15},试写出采用快速排序法,第一趟排序的结果。

解:

7 1 10 18 15 15

五.二分插入排序程序填空

void BInsSort( ) // 按递增序对R[1]~R[ n ]进行二分插入排序

{ int i, j, low, high, m;

for ( i=2; i<= n ; i++)

{ R[0]=R[i]; // 设定R[0]为监视哨

low=1;

high= n;

while (low <= high)

{ m=(low+high)/2 ;

if ( R[0]

high=m-1 ;

else

low=m+1;

}

for (j=i-1;j>=high+1;j--)

R[j+1]= R[ j ] ; // 元素后移 R[high]=R[0]; // 插入

}

}

六.算法题

1.以单链表为存储结构,写一个直接选择排序算法。

解: void selectsort(pointer h)

{ pointer p,q,r,s,t;

t=NULL;

while(h)

{ p=h; q=NULL;

s=h; r=NULL;

while (p)

{ if (p->keykey)

{ s=p; p=q; }

if (s==h)

h=h->link;

else

h=s;

s->link=t;

t=s;

}

h=t;

}

}

2.以单链表作为存储结构实现直接插入排序算法。

解: void InsertList(List head)

{ Lnode *p, * pprev,q,*qprev, *current;

if (!head)

return;

pprev=head;

p=head->next;

while (p)

{ q=head;

qprev=NULL;

while (q->key < p->key) // 查找插入位置

{qprev=q; q=q->next;}

if (q= =p) // p最大,无须插入

{pprev=p; p=p->next;}

else

{ current=p; p=p->next;

pprev->next=p;

current->next=q;

if (q==head) // 插在表头

head=current;

else // 插在中间某个位置上

qprev->next=current;

}

}

}

3.设计一个算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关键字之前。

解: void part (int a[ ])

{ i=1;j=n; // 初、终下标

while (i

{ while (i=0) // 自右向左找非负数

j--;

while (i

i++;

if (i

{ t=a[i];

a[i]=a[j];

a[j]=t;

i++;

j--;

}

}

}

4.设已排序的文件用单链表表示,再插入一个新记录,仍然按关键字从小到大的次序排序,试写出该算法。

void insert(lklist head;datatype x)

{

s=new ( node );

s->key=x;

s->next= NULL;

if (head= =NULL)

head=s;

else

{ p=head;

q= NULL;

while (( p! =NULL) && (s->key > p->key ))

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

if (q= =NULL)

{ s->next=head; head=s; }

else

{ if (p==NULL)

q->next=s;

else

{ s->next=q->next; q->next=s; }

}

}

}

排序过程分析

1.已知数据序列{50,60,40,20,80,15,10,45},试画出采用快速排序法,第一趟排序的结果。

解:[45,10,40,20,15] 50 [80,60]

2.已知数据序列{82,40,66,13,84,36,96,57,39,80,61,14},写出二路归并排序的每一趟排序结果。

解:

[82] [40] [66] [13] [84] [36] [96] [57] [39] [80] [61] [14]

[40 82] [13 66] [36 84] [57 96] [39 80] [14 61] 第一趟排序结果

[13 40 66 82] [36 57 84 96] [14 39 61 80] 第二趟排序结果

[13 36 40 57 66 82 84 96] [14 39 61 80] 第三趟排序结果

[13 14 36 39 40 57 61 66 80 82 84 96] 第四趟排序结果

3.已知数据序列{40,63,11,84,35,93,58,39,15},写出采用简单选择排序的每一趟排序结果。

解:[40 63 11 84 35 93 58 39 15]

(11) [63 40 84 35 93 58 39 15]

(11 15)[40 84 35 93 58 39 63]

(11 15 35)[84 40 93 58 39 63]

(11 15 35 39)[40 93 58 84 63]

(11 15 35 39 40)[93 58 84 63]

(11 15 35 39 40 58)[93 84 63]

(11 15 35 39 40 58 63)[84 93]

(11 15 35 39 40 58 63 84)[93]

(11 15 35 39 40 58 63 84 93)

4.已知数据序列{18,17,60,40,07,32,73,65},写出采用冒泡排序法每一趟排序的结果。解: 18 17 60 40 07 32 73 65

第一趟结束时结果:

第二趟结束时结果:

第三趟结束时结果:

第四趟结束时结果:

第五趟结束时结果:

已无交换,结束。

5.已知数据序列{10,18,14,13,16,12,11,9,15,08},写出希尔排序每一趟排序的结果(设d=5、2、1)。

解: 10 18 14 13 16 12 11 09 15 08

d=5

10 11 09 13 08 12 18 14 15 16

d=2

08 11 09 12 10 13 15 14 18 16

d=1 08 09 10 11 12 13 14 15 16 18

6.已知数据序列{39,28,55,80,75,06,17,45},写出采用直接插入算法排序时,每一趟排序的结果。

解: 39 28 55 80 75 06 17 45

第一趟结束时结果: [28 39] 55 80 75 06 17 45

第二趟结束时结果: [28 39 55] 80 75 06 17 45

第三趟结束时结果: [28 39 55 80] 07 32 73 65

第四趟结束时结果: [07 28 39 55 80] 32 73 65

第五趟结束时结果: [07 28 32 39 55 80] 73 65

第六趟结束时结果: [07 28 32 39 55 73 80] 65

第七趟结束时结果: [07 28 32 39 55 65 73 80]

程序填空

1.设表的长度为L,试填空完成直接插入排序程序。

void insertsort(int R[ ]) // 按递增序对R[1]~ R[ n ]进行直接插入排序

{ int i,j;

for ( i=2; i<= L ; i++ )

{ R[0]=R[i]; // 设定R[0]为监视哨

j= i-1;

while (R[0] < R[j] )

{ R[j+1]=R[j] ;

j-- ;

}

R[j+1]= R[0] ; // 插入第i个记录

}

}

2.直接选择排序

void selectsort ( ) // 按递增序对R[1] ~ R[n] 进行直接选择排序{ int i, j, k ;

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

{ k=i ;

for (j= i+1 ;j<=n;j++) // 选择选择关键字最小的记录

if (R[j] < R[k])

k=j;

if (! k=j)

{ R[0]=R[ i ]; // 交换关键字

R[i] = R[k] ;

R[k]=R[0];

}

}

}

3.二分插入排序

void BInsSort( ) // 按递增序对R[1]~R[ n ]进行二分插入排序

{ int i, j, low, high, m;

for ( i=2; i<= n ; i++)

{ R[0]=R[i]; // 设定R[0]为监视哨

low=1;

high= n;

while (low <= high)

{ m=(low+high)/2 ;

if ( R[0]

high=m-1 ;

else

low=m+1;

}

for (j=i-1;j>=high+1;j--)

R[j+1]= R[ j ] ; // 元素后移

R[high]=R[0]; // 插入

}

}

算法设计题

1.设计一个函数修改冒泡排序过程以实现双向冒泡排序(每一趟排序,通过相邻的关键字比较,产生最小和最大的两个元素)。

解: void dbubble (SeqList r)

{int i,j,t,b;

while (b)

{ b=0;

for (j=n-i+1;j>=i+1;j--) // 由底向上

if (r[j].key

{ b=1;

t=r[j];

r[j]=r[j-1];

r[j-1]=t;

}

for (j=i+1;j

if (r[j].key>r[j+1].key)

{b=1;

t=r[j];

r[j]=r[j+1];

r[j+1]=t;

}

i++;

}

}

2.以单链表为存储结构,写一个直接选择排序算法。

解:void selectsort (pointer h)

{ pointer p,q,r,s,t;

t=NULL;

while(h)

{ p=h; q=NULL;

s=h; r=NULL;

while (p)

{ if (p->keykey)

{ s=p; p=q; }

if (s= =h)

h=h->link;

else

h=s;

s->link=t;

t=s;

}

h=t;

}

3.设待排序的文件用单链表做存储结构,头指针为head,写出其选择排序算法。

void select ( lklist head )

{ p=head;

while ( p!=NULL )

{ s=p;

q=p->next;

while ( q!=NULL )

{ if ( q->key < s->key )

s=q;

q=q->net;

}

if ( s!=p )

{ t=p->key;

p->key=s->key;

s->key=t;

}

}

p=p->next;

}

数据结构复习题目和答案

《数据结构-C语言版》 第一章绪论 单项选择题 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.在对算法的时间复杂度进行估计的时候,下列最佳的时间复杂度是____ __。 A. n2 B. nlogn C. n D. logn 7.设使用某算法对n个元素进行处理,所需的时间是T(n)=100nlog2n+200n+2000,则该算法的渐近时间复杂度为____ ___。 A. O(1) B. O(n) C. O(200n) D. O(nlog2n)

CDCBBDD 第二章线性表 单项选择题 1.链表不具有的特点是____ ____。 A. 可随机访问任一元素 B. 插入和删除时不需要移动元素 C. 不必事先估计存储空间 D. 所需空间与线性表的长度正比 2.设顺序表的每个元素占8个存储单元。第1个单元的存储地址是100,则第6个元素占用的最后一个存储单元的地址为。 A. 139 B. 140 C. 147 D. 148 3.在线性链表存储结构下,插入操作算法。 A. 需要判断是否表满 B. 需要判断是否表空 C. 不需要判断表满 D. 需要判断是否表空和表满 4.在一个单链表中,若删除p所指结点的后继结点,则执行。 A. p->next = p->next->next; B. p->next = p->next; C. p = p->next->next; D. p = p->next; p->next = p->next->next; 5.将长度为n的单链表接在长度为m的单链表之后的算法时间复杂度为。A. O(n) B. O(1) C. O(m) D. O(m+n) 6.需要预分较大空间,插入和删除不需要移动元素的线性表,其存储结构是。 A. 单链表 B. 静态链表 C. 线性链表 D. 顺序存储方式ACCABB 填空题 1.在带表头结点的单链表中,当删除某一指定结点时,必须找到该结点的_____结点。2.在单链表中,指针p所指结点为最后一个结点的条件是。 3.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是。4.在一个长度为n的顺序表中第i个元素(1≤i≤n)之前插入一个元素时,需向后移动元素的个数是。 5.在长度为n的顺序表中插入一个元素的时间复杂度为。 1前驱 2 p->next==NULL

数据结构试题及答案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 23 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(log 2n) B.O(nlog 2 n) C。0(n) D.0 (n2) 10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C ). A.O(n) B. O(1) C。 O(log 2 n) D. O(n2)二、运算题(每题 6 分,共24分)

数据结构试卷及答案2套

数据结构试卷1 一、单项选择题:(每小题2分,共20分) 1. 在一个长度为n的顺序表中顺序搜索一个值为x的元素时,在等概率的情况下,搜索成功时的数据平均比较次数为________。 A. n B. n/2 C.(n+1)/2 D.(n-1)/2 2. 不带头结点的单链表first为空的判定条件是_________。 A. first->next == NULL; B. first == NULL; C. first->next == first; D. first != NULL; 3. 栈的插入和删除操作在__________进行。 A. 栈顶 B. 栈底 C. 任意位置 D. 指定位置 4. 假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为__________。 A. front == rear B. front != NULL C. rear != NULL D. front == NULL 5. 设有一个广义表A ( (x, (a, b) ), (x, (a, b), y) ),运算Head (Head (Tail (A) ) ) 的执行结果为________。 A.y B.(a, b) C.(x,(a, b)) D.x 6. 在一棵具有n个结点的二叉树中,所有结点的空子树个数等于_________。 A. n B. n-1 C. n+1 D. 2*n 7. 利用n个值作为叶结点的权重,生成的霍夫曼树中共包含有_________个结点。 A. n B. n+1 C. 2*n D. 2*n-1 8. 设无向图的顶点个数为n,则该图最多有________条边。 A. n-1 B. n(n-1)/2 C. n(n+1)/2 D. n(n-1) 9. 任何一个无向连通图的最小生成树_________。 A.只有一棵 B. 一棵或多棵 C. 一定有多棵 D. 可能不存在 10. 从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为_______排序法。 A.选择 B.二路归并 C.交换 D.插入 二、填空题(每空1分,共20分) 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的____________以及它们之间的___________和运算等的学科。 2. 顺序表中逻辑上相邻的元素的物理位置________相邻。单链表中逻辑上相邻的元素的物理位置__________相邻。 3. 在单链表中,除了首元结点外,任一结点的存储位置由___________________ 指示。 4. ________ 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性

数据结构第10章 习题答案

1.下列排序算法中,其中( D )是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.有一组数据(15,9,7,8,20,-1,7,4)用快速排序的划分方法进行一趟划分后数据的排序为 ( A )(按递增序)。 A.下面的B,C,D都不对。 B.9,7,8,4,-1,7,15,20 C.20,15,8,9,7,-1,4,7 D. 9,4,7,8,7,-1,15,20 3.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是:( B )。 A. 直接插入排序 B. 快速排序 C. 直接选择排序 D. 堆排序 4.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( D )方法最快。 A.起泡排序 B.快速排列 C.Shell排序 D.堆排序 E.简单选择排序 5.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( A )排序法。 A. 插入 B. 选择 C. 希尔 D. 二路归并 6. 在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序记录的末尾,该排序方法是( A )。 A. 选择 B. 冒泡 C. 插入 D. 堆 7. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行( C )次比较。 A. 3 B. 10 C. 15 D. 25 8. 对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是 ( B ) A. l B. 4 C. 3 D. 2 9. 堆排序是( E )类排序 A. 插入 B. 交换 C. 归并 D. 基数 E. 选择 10.排序方法有许多种,(1)法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;(2)法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端;交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)和(4)是基于这类方法的两种排序方法,而(4)是比(3)效率更高的方法;(5)法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。 (1)--(5): A.选择排序 B.快速排序 C.插入排序 D.起泡排序 E.归并排序 F.shell排序 G.堆排序 H.基数排序 10.1C 5 2A 3D 4B 5G 1.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的__ ____和记录的_____。比较,移动 2.分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是_____算法,最费时间的是______算法。冒泡,快速 3. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列)依次是4,2,1则排序需__________趟,写出第一趟结束后,数组中数据的排列次序__________。3,(10,7,-9,0,47,23,1,8,98,36) 4.对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。

数据结构考研试卷 (10)

附录 B 三份数据结构考研试题及参考 答案 试题一(满分75) 一、单项选择题(2×10分,共20分) 1.某算法的时间复杂度为O(n2),表明该算法的_. A.问题规模是n2 B.执行时间等于n2 C.执行时间与n2成正比 D.问题规模与n2成正比 2.设线性表有n个元素,以下操作中,_在顺序表上实现比在链表上实现效率更高. A.输出第i(1≤i≤n)个元素值 B.交换第1个元素与第2个元素的值 C.顺序输出这n个元素的值 D.输出与给定值x相等的元素在线性表中的序号 3.设n个元素进栈序列是1,2,3,…,n,其输出序列是p1,p2,…p n,若p1=3,则p2的值_. A.一定是2 B.一定是1 C.不可能是1 D.以上都不对 4.设循环队列中数组的下标是0~N-1,其头尾指针分别为f(指向队头元素的前一位置)和r(指向队尾元素的位置),则其元素个数为_. A.r-f B.r-f-1 C.(r-f)%N+1 D.(r-f+N)%N 5.若串s=’abcefgh’,其子串(含空串和自身)的个数是_. A.8 B.37 C.36 D.9 6.若将n阶上三角矩阵A按列优先顺序压缩存放在一维数组B[1..n(n+1)/2]中,第一个非零元素a11存放于B[1]中,则应存放到B[k]中的非零元素a ij(1≤i≤n;1≤j≤i)的下标i,j 与k的对应关系是k=( )。 A.i(i+1)/2+j B. i(i-1)/2+j-1 C. j(j+1)/2+I D. j(j-1)/2+i-1 7. 设高度为h(根结点为第1层)的二叉树上只有度为0和度为2的结点,则此类二叉

树中所包含的结点数至少为( ). A. 2h B.2h-1 C.2h+1 D.h+1 8. 无向图的邻接矩阵是一个( )。 A. 对称矩阵 B.零矩阵 C.上三角矩阵 D.对角矩阵 9. 对线性表进行二分查找时,要求线性表必须( )。 A. 以顺序表方式存储 B. 以链接方式存储 C. 以顺序方式存储,且结点按关键字有序排序 D. 以链式方式存储,且结点按关键字有序排序 10. 以下排序算法中,( )不能保证每趟排序至少能将一个元素放到其最终位置上。 A. 快速排序 B.希尔排序 C.堆排序 D.冒泡排序 二、问答题(共30分) 1. 有5个字符,根据其使用频率设计对应的哈弗曼编码,以下哪些可能的哈弗曼编码。(8分) (1)000,001,010,011,1 (2)0000,0001,001,01,1 (3)000,001,01,10,11 (4)00,100,101,110,111 2. 一个有向图G 的邻接表存储如图B.1所示,现按深度优先搜索遍历,从顶点1出发,所得到的顶点时什么?(5分) v1 v2 v3 v4 ∧ v5 3. 已知一个有序表为(12,18,20,25,29,32,40,62,83,90,95,98),当二分查找值为29和90时,分别需要多少次比较才能查找成功?若采用顺序查找时,分别需要多少次比较才能查找成功?(8分) 4. 按13、24、37、90、53的次序形成二叉平衡树,回答以下问题:(9分) (1)该二叉平衡树的高度是多少? (2)其根结点是谁? (3)左子树中的数据是什么? (4)右子树种的数据是什么? 三=算法设计题(共25分) 设计一个算法int increase(LinkList * L),判定带头结点单链表L 是否是递减的,若是返回1,否则返回0.(10分) 假如二叉树采用二叉链存储结构存储,试设计一个算法,输出该二叉树种第一条最长的路径长度,并输出此路径上各结点的值。(15分) 试题一参考答案 2 3 3 ∧ 4 ∧ 5 ∧ 5 ∧ 4 1 2 3 4 5 图B. 1 一个有向图G 的邻接表

数据结构习题库汇总

知识点: 01.绪论 02.顺序表 03.链表 04.栈 05.链队列 06.循环队列 07.串 08.数组的顺序表示 09.稀疏矩阵 10.广义表 11.二叉树的基本概念 12.二叉树遍历、二叉树性质 13.树、树与二叉树的转换 14.赫夫曼树 15.图的定义、图的存储 16.图的遍历 17.图的生成树 18.静态查找(顺序表的查找、有序表的查找) 19.动态查找(二叉排序树、平衡树、B树) 20.哈希查找 21.插入排序(直接插入、折半插入、2路插入、希尔排序)22.选择排序(简单选择、树形选择、堆排序) 23.快速排序、归并排序

101A1(1).数据的逻辑结构是(A)。 A.数据的组织形式B.数据的存储形式C.数据的表示形式D.数据的实现形式 101A1(2).组成数据的基本单位是(C)。 A.数据项B.数据类型C.数据元素D.数据变量 101B1(3).与顺序存储结构相比,链式存储结构的存储密度(B)。 A.大B.小C.相同D.以上都不对 101B2(4).对于存储同样一组数据元素而言,(D)。 A.顺序存储结构比链接结构多占空间B.在顺序结构中查找元素的速度比在链接结构中查找要快C.与链接结构相比,顺序结构便于安排数据元素D.顺序结构占用整块空间而链接结构不要求整块空间101B2(5).下面程序的时间复杂度为(B)。 x=0; for(i=1;ii;j++) state; A.n(n+1)/2 B.(n-1)(n+2)/2C.n(n+1)/2 D.(n-1)(n+2) 101D3(8).下面程序的时间复杂度为(A)。 for(i=0;i

数据结构试卷和答案

《数据结构》试题参考答案 (开卷) (电信系本科2001级 2002年12月) 一、回答下列问题 (每题4分,共36分) 1. 某完全二叉树共有15381个结点,请问其树叶有多少个? 答:n2=?n/2?=?15381/2?=7691(个) 2. 假设有二维数组A 7×9,每个元素用相邻的6个字节存储,存储器按字节编址。已知A 的起始存储位置(基地址)为1000,末尾元素A[6][8]的第一个字节地址为多少?若按列存储时,元素A[4][7]的第一个字节地址为多少? 答:① 末尾元素A[6][8]的第一个字节地址=1000+(7行×9列—1)×6B =1000+62×6=1372 ②按列存储时,元素A[4][7]的第一个字节地址=1000+(7列×7行+4)×6B =1000+53×6=1318 3. 在KMP 算法中,已知模式串为ADABBADADA ,请写出模式串的next[j]函数值。 答:根据 0 当j =1时 next[ j ]= max { k |1

数据结构试卷带答案

数据结构试卷(一) 一、选择题(20分) 1.组成数据的基本单位是( 1.C )。 (A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量 2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是( C )。 (A) 线性结构(B) 树型结构(C) 图型结构(D) 集合 3.数组的逻辑结构不同于下列(D)的逻辑结构。 (A) 线性表(B) 栈(C) 队列(D) 树 4.二叉树中第i(i≥1)层上的结点数最多有(C)个。 (A) 2i (B) 2i(C) 2i-1(D) 2i-1 5.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为(.A )。 (A) p->next=p->next->next (B) p=p->next (C) p=p->next->next (D) p->next=p 6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是(.C )。 (A) 6 (B) 4 (C) 3 (D) 2 7.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为(C )。 (A) 100 (B) 40 (C) 55 (D) 80 8.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为(8.B (A) 3 (B) 4 (C) 5 (D) 1 9.根据二叉树的定义可知二叉树共有(B)种不同的形态。 (A) 4 (B) 5 (C) 6 (D) 7 10.设有以下四种排序方法,则(B )的空间复杂度最大。 (A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序 二、填空题(30分) 1.设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元 素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;。 2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________, 在链式存储结构上实现顺序查找的平均时间复杂度为___________。 3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有________个指 针域,__________个空指针域。 4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点 B的操作序列为______________________________________。 5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有_________个表头结点和_________个表 结点。 6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有______关系。 7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为__________。 8.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编 号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________。 9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句。 int index(char s[ ], char t[ ]) { i=j=0; while(i

数据结构第八章习题及答案

习题八查找 一、单项选择题 1.顺序查找法适合于存储结构为()的线性表。 A.散列存储 B. 顺序存储或链式存储 C. 压缩存储 D. 索引存储 2.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。 A. (n-1)/2 B. n/2 C. (n+1)/2 D. n 3.适用于折半查找的表的存储方式及元素排列要求为( ) A.链接方式存储,元素无序 B.链接方式存储,元素有序 C.顺序方式存储,元素无序 D.顺序方式存储,元素有序 4.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( ) A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减5.当采用分块查找时,数据的组织方式为 ( ) A.数据分成若干块,每块内数据有序 B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块 C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块 D. 数据分成若干块,每块(除最后一块外)中数据个数需相同 6.二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法()。 A.正确 B. 错误 7. 二叉查找树的查找效率与二叉树的((1) )有关, 在 ((2) )时其查找效率最低。 (1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置 (2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。 8.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用( )查找法。 A. 分快查找 B. 顺序查找 C. 折半查找 D. 基于属性 9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( )。 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) 10.下图所示的4棵二叉树,( )是平衡二叉树。 (A)(B)(C)(D) 11.散列表的平均查找长度()。 A.与处理冲突方法有关而与表的长度无关 B.与处理冲突方法无关而与表的长度有关 C.与处理冲突方法有关且与表的长度有关 D.与处理冲突方法无关且与表的长度无关 12. 设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key MOD 13,散列地址为1的链中有()个

数据结构习题

排序算法(19) 1.以单链表为存储结构,写一个直接选择排序算法。 2.设计一算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关 键字之前。请分析算法的时间复杂度。 3.写一个双向冒泡排序的算法,即在排序过程中交替改变扫描方向。 4. 4.下面是一个自上往下扫描的冒泡排序的伪代码算法,它采用lastExchange 来记录每趟扫描中进 行交换的最后一个元素的位置,并以它作为下一趟排序循环终止的控制值。请仿照它写一个自下往上扫描的冒泡排序算法。 void BubbleSort(int A[],int n) //不妨设A[0..n-1]是整型向量 int lastExchange,j,i=n-1; while (i>0) lastExchange=0; for(j=0;j if([j+1] 交换A[j]和A[j+1]; lastExchange=j; } i=lastExchange;//将i置为最后交换的位置 }//endwhile }//BubbleSort 5.改写快速排序算法,要求采用三者取中的方式选择划分的基准记录;若当前被排序的区间长度小于等于3时,无须划分而是直接采用直接插入方式对其排序。 6.对给定的j(1 ≤ j ≤ n ),要求在无序的记录区R[1..n]中找到按关键字自小到大排在第j个位置上的记录(即在无序集合中找到第j个最小元),试利用快速排序的划分思想编写算法实现上述的查找操作。 7.以单链表为存储结构,写一个直接选择排序算法。 8.写一个heapInsert(R,key)算法,将关键字插入到堆R中去,并保证插入R后仍是堆。提示:应为堆R增加一个长度属性描述(即改写本章定义的SeqList类型描述,使其含有长度域);将key先插入R 中已有元素的尾部(即原堆的长度加1的位置,插入后堆的长度加1),然后从下往上调整,使插入的关键字满足性质。请分析算法的时间。 9.写一个建堆算法:从空堆开始,依次读入元素调用上题中堆其中。 10.写一个堆删除算法:HeapDelete(R,i),将R[i]从堆中删去,并分析算法时间,提示:先将R[i]和堆中最后一个元素交换,并将堆长度减1,然后从位置i开始向下调整,使其满足堆性质。

数据结构考试试题

数据结构辅导试题一 一、简答问题: 1.四类数据结构 2.线性结构与非线性结构有何差别? 3.简述算法的定义与特性。 4.设有1000个无序元素,仅要求找出前10个最小元素,在下列排序方法中(归并排序、基数排序、快速排序、堆排序、插入排序)哪一种方法最好,为什么? 二、判断正误:(每小题1分,共5分)正确在()内打√,否则打 。1.()二叉排序树或是一棵空树,或是具有下列性质的二叉树: 若它的左子树非空,则根结点的值大于其左孩子的值, 若它的右子树非空,则根结点的值大于其右孩子的值。 2.()索引顺序表的特点是块内可无序,块间要有序。 3.()子串是主串中任意个连续字符组成的序列。 4.()线性结构只能用顺序结构存放,非线性结构只能用链表存放。 5.()快速排序的枢轴元素可以任意选定。 三、单项选择题:(每小题1分,共4分) 1.栈S最多能容纳4个元素。现有6个元素按A、B、C、D、E、F的顺序进栈, 问下列哪一个序列是可能的出栈序列? A)E、D、C、B、A、F B)B、C、E、F、A、D C)C、B、E、D、A、F D)A、D、F、E、B、C 2.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号为49的结点的左孩子的编号为: A、98 B、99 C、50 D、48 3. 对下列关键字序列用快速排序法进行排序时,速度最快的情形是: A){21、25、5、17、9、23、30} B){25、23、30、17、21、5、9} B){21、9、17、30、25、23、5} D){5、9、17、21、23、25、30} 4. 设森林F中有三棵树,第一、第二和第三棵树的结点个数分别为M1、M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是: A)M1 B)M1+M2 C)M3 D)M2+M3 四、填空题:(每小题2分,共 20分) 1.设一哈希表表长M为100 ,用除留余数法构造哈希函数,即H(K)=K MOD P(P<=M), 为使函数具有较好性能,P应选 2.N个结点的二叉树采用二叉链表存放,共有空链域个数为 3.单链表与多重链表的区别是 4.在各种查找方法中,平均查找长度与结点个数无关的是 5.深度为6(根层次为1)的二叉树至多有个结点。 6.已知二维数组A[20][10]采用行序为主方式存储,每个元素占2个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的存储地址是 7.在一个单链表中p所指结点之后插入s所指结点时,应执行 s->next= 和p->next= 的操作. 8.广义表((a,b),c,d)的表头是,表尾是 9.循环单链表LA中,指针P所指结点为表尾结点的条件是 10.在一个待排序的序列中,只有很少量元素不在自己最终的正确位置上,但离他们的正确位置都不远,则使用排序方法最好。 五、构造题:(每小题5分,共25分) 1.已知一棵二叉树,其中序序列DBCAFGE,后序序列DCBGFEA,构造该二叉树。2.设哈希表长度为11,哈希函数H(K)=(K的第一字母在字母表中的序号)MOD11,若输入顺序为(D,BA,TN,M,CI,I,K,X,TA),处理冲突方法为线性探测再散

数据结构第十章习题课

1.下列排序算法中,其中()是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。 A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序3.排序趟数与序列的原始状态有关的排序方法是( )排序法。 A.插入 B. 选择 C. 冒泡 D. 快速4.对一组数据(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 则采用的排序是( )。 A. 选择 B. 冒泡 C. 快速 D. 插入5.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。 A. 选择 B. 快速 C. 希尔 D. 冒泡6.若上题的数据经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的 是()排序。 A.选择 B. 堆 C. 直接插入 D. 冒泡 7.在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()A.直接插入排序B.冒泡排序C.简单选择排序 8.下列排序算法中,()算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。 A. 堆排序 B. 冒泡排序 C. 快速排序 D. 插入排序 9. 下列排序算法中,占用辅助空间最多的是:( ) A. 归并排序 B. 快速排序 C. 希尔排序 D. 堆排序10.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数 最少的是()。 A.94,32,40,90,80,46,21,69 B.32,40,21,46,69,94,90,80 C.21,32,46,40,80,69,90,94 D.90,69,80,46,21,32,94,40 11. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。 A. 3 B. 10 C. 15 D. 25 12.对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确

数据结构1-4章习题答案

第一章绪论 一、选择题 1.D 2.C 3.C 4.B 5.D 6.C 7.D 8.C 9.A 10.D 11.D 12.B 二、填空题 1. 逻辑结构存储结构运算 2. 集合结构线性结构树形结构图状结构 3. 有穷性. 确定性. 可行性. 输入. 输出 4. 顺序存储. 链式存储 5. 数据元素 6. 线性结构非线性结构 三、简答题 1. 尽管算法的含义与程序非常相似,但两者还是有区别的。首先,一个程序不一定满 有穷性,因为它不是一个算法。其次,程序中的指令必须是计算机可以执行的,而 算法中的指令却无此限制。如果一个算法采用机器可执行的语言来书写,那么它就 是一个程序。 2. 数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(数据元 素的组织形式)。例如:队列的逻辑结构是线性表(先进后出);队列在计算机中 既可以采用顺序存储也可以采用链式存储;队列可进行删除数据元素. 插入数据元 素. 判断是否为空队列,以及队列置空等操作。 3. 数据元素之间的逻辑关系,也称为数据的逻辑结构。数据元素以及它们之间的相互 关系在计算机存储器内的表示(又称映像)称为数据的存储结构,也称数据的物理 结构。 4. 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表 示一个或者多个操作。此外,一个算法还具有下列5个特性: (1)有穷性:一个算法必须在执行有穷步之后结束,即算法必须在有限时间内完 成。 (2)确定性:算法中每一步必须有明确的含义,不会产生二义性。并且,在任何 条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。 (3)可行性:一个算法是能执行的,即算法中的每一步都可以通过已经实现的基 本运算执行有限次得以实现。 (4)输入:一个算法有零个或者多个输入,它们是算法开始时对算法给出的初始 量。 (5)输出:一个算法有一个或者多个输出,它们是与输入有特定关系的量 5. 举例说明四种基本结构的区别: 集合: 数据元素之间无任何关系,如集合A={x,5,t,&}; 线性结构: 数据元素之间存在一个对一个的关系,如线性表L=(2,3,4,5,7,10); 树形结构: 数据元素之间存在一个对多个的关系,如文件系统目录管理; 图状结构: 数据元素之间存在多个对多个的关系,如教学计划课程安排顺序图。 四. 算法设计题

数据结构试卷一与答案

习题一 一、选择题 ( 每小题 2 分,共 20 分 ) 1.下列程序段的时间复杂度为()。 i=0,s=0; while (snext=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; 4.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为()。 (A) 5,3,4,6,1,2 (B) 3,2,5,6,4,1 (C) 3,1,2,5,4,6 (D) 1,5,4,6,2,3 5.设有一个10阶的下三角矩阵A(包括对角线),按照从上到下、从左到右的顺序存储到连续的55个存储单元中,每个数组元素占1个字节的存储空间,则A[5][4]地址与A[0] [0]的地址之差为()。 (A) 10 (B) 19 (C) 28 (D) 55 6.设一棵m叉树中有N1个度数为1的结点,N2个度数为2的结点,……,Nm个度数为m的结点,则该树中共有()个叶子结点。 7. 二叉排序树中左子树上所有结点的值均()根结点的值。 (A) < (B) > (C) = (D) !=

数据结构Ch10习题答案

第十章内部排序 一、择题 1.用直接插入排序法对下面四个表进行(由小到大)排序,比较次数最少的是(B)。A.(94,32,40,90,80,46,21,69) 插32,比2次 插40,比2次 插90,比2次 插80,比3次 插46,比4次 插21,比7次 插69,比4次 B.(21,32,46,40,80,69,90,94) 插32,比1次 插46,比1次 插40,比2次 插80,比1次 插69,比2次 插90,比1次 插94,比1次 C.(32,40,21,46,69,94,90,80) 插40,比1次 插21,比3次 插46,比1次 插69,比1次 插94,比1次 插90,比2次 插80,比3次 D.(90,69,80,46,21,32,94,40) 插69,比2次 插80,比2次 插46,比4次 插21,比5次 插32,比5次 插94,比1次 插40,比6次 2.下列排序方法中,哪一个是稳定的排序方法(BD)。 A.希尔排序 B.直接选择排序 C.堆排序 D.冒泡排序 下列3题基于如下代码: for(i=2;i<=n;i++) { x=A[i]; j=i-1; while(j>0&&A[j]>x) { A[j+1]=A[j]; j--; } A[j+1]=x

} 3.这一段代码所描述的排序方法称作(A)。 A.插入排序 B.冒泡排序 C.选择排序 D.快速排序 4.这一段代码所描述的排序方法的平均执行时间为(D) A.O(log2n) B.O(n) C. O(nlog2n) D.O(n2) 5.假设这段代码开始执行时,数组A中的元素已经按值的递增次序排好了序,则这段代码的执行时间为(B)。 A.O(log2n) B.O(n) C.O(nlog2n) D.O(n2) 6.在快速排序过程中,每次被划分的表(或了表)分成左、右两个子表,考虑这两个子表,下列结论一定正确是(B)。A.左、右两个子表都已各自排好序 B.左边子表中的元素都不大于右边子表中的元素 C.左边子表的长度小于右边子表的长度 D.左、右两个子表中元素的平均值相等 7.对n个记录进行堆排序,最坏情况下的执行时间为(C)。 A.O(log2n) B.O(n) C.O(nlog2n) D.O(n2) 8、设待排序关键码序列为(25、18、9、33、67、82、53、95、12、70),要按关键码值递增的顺序排序,采取以第一个关键码为分界元素的快速排序法,第一趟排序完成后关键码表33被放到了第几个位置(D)。 A.3 B.5 C.7 D.9 9.若对一个已经排好了序的序列进行排序,在下列四方法中,哪种方法比较好(C)。 A.冒泡排序法 B.直接选择排序法 C.直接插入排序法 D.堆排序法 10.快速排序的时间复杂度是(A) A.O(nlog2n) B.O(n2) C. O(n3) D.O(log2n) 11.以下关键字序列用快速排序法进行排序,速度最慢的是(C) A.{23,27,7,19,11,25,32} B.{23,11,19,32,27,35,7}

数据结构习题2011级

1.数据的四种存储结构是( ) A.顺序存储结构、链接存储结构、索引存储结构和散列存储结构 B.线性存储结构、非线性存储结构、树型存储结构和图型存储结构 C.集合存储结构、一对一存储结构、一对多存储结构和多对多存储结构 D.顺序存储结构、树型存储结构、图型存储结构和散列存储结构 2.若对某线性表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,要使操作时间最少, 下列选项中,应选择的存储结构是( ) A.无头结点的单向链表 B.带头结点的单向链表 C.带头结点的双循环链表 D.带头结点的单循环链表 3.若带头结点的单链表的头指针为head,则判断链表是否为空的条件是( ) A.head=NULL B.head->next=NULL C.head!=NULL D.head->next!=head 7.若一棵二叉树的前序遍历序列与后序遍历序列相同,则该二叉树可能的形状是( ) A.树中没有度为2的结点 B.树中只有一个根结点 C.树中非叶结点均只有左子树 D.树中非叶结点均只有右子树 8.若根结点的层数为1,则具有n个结点的二叉树的最大高度是( ) A.n B. C. +1 D.n/2 9.在图G中求最小生成树可以采用的算法是( ) A.迪杰斯特拉(Dijkstra)算法 B.克鲁斯卡尔(Kruskal)算法 C.深度优先遍历(DFS)算法 D.广度优先遍历(BFS)算法 10.下图G=(V,E)是一个带权连通图,G的最小生成树的权为( ) A.15 B.16 C.17 D.18 11.在下图中,从顶点1出发进行深度优先遍历可得到的序列是( ) A.1 2 3 4 5 6 7 B.1 4 2 6 3 7 5 C.1 4 2 5 3 6 7 D.1 2 4 6 5 3 7 12.如果在排序过程中不改变关键字相同元素的相对位置,则认为该排序方法是( ) A.不稳定的 B.稳定的 C.基于交换的 D.基于选择的 13.设有一组关键字(19, 14, 23, 1,6,20, 4,27, 5,11, 10, 9),用散列函数H(key)=key%13构造散列表,用拉链法解 决冲突,散列地址为1的链中记录个数为( ) A.1 B.2 C.3 D.4 14.已知二叉树结点关键字类型为字符,下列二叉树中符合二叉排序树性质的是( )

相关文档
最新文档