数据结构c语言章节练习题

数据结构c语言章节练习题
数据结构c语言章节练习题

数据结构章节练习题

第一章绪论

一、单选题

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

A、 *(a+i)

B、 a+i

C、 *a+i

D、 &a+i

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

for(int i=0; i

for(int j=0; j

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

A、 O(m2)

B、 O(n2)

C、 O(m*n)

D、 O(m+n)

3.执行下面程序段时,执行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

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

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]的存储地址为__________,或者为______________________________。

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+2nlog2n+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);

(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);

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==0表示栈空,则向这个栈插入一个元素时,需要执行语句修改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==0表示栈空,则表示栈满的条件为________。

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

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

三、应用题

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

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)) printf ( “%d ”,QDelete(Q));

}

第四章稀疏矩阵和广义表

一、单选题

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

A、行号

B、列号

C、元素值

D、地址

二、填空题

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

________三项。

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

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

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

第五章树和二叉树(一)

一、填空题

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. 从二叉搜索树中查找一个元素时,其时间复杂度大致为________。

A、 O(n)

B、 O(1)

C、 O(log2n)

D、 O(n2)

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

A、 O(1)

B、 O(log2n )

C、 O(n)

D、 O(nlog2n)

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

A、 O(n)

B、 O(log2n )

C、 O(n2)

D、 O(nlog2n)

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

A、 O(1)

B、 O(n)

C、 O(log2n)

D、 O(nlog2n)

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

A、 O(log2n)

B、 O(n)

C、 O(1)

D、 O(nlog2n)

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. A

2. C

3. B

4. C

5. D

6. B

二、填空题

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

2.顺序、链式

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

4.数据定义、操作声明

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

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

7.实参、值、、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) 、i+1

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

1 2 2 3 4 5 5 6

2 4 7 1 4 2 6 4

4 -3 1 8

5 -7 2 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))

1 2 2 4 4 4 6 7

3 1 5 2

4 6

5 2

8 4 -7 -3 5 6 2 1

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

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

第四章栈和队列

一、单选题

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.队尾指针、存储 = = 0 >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 ) 6 、21 、4、3 、1、1、6 、I和J 9. 2i、2i+1、? i/2? 、18 、f、空结点(即无右孩子结点) 13. 4、2、3

14. a[2*i]、a[2*i+1]、a[i/2] 15. 2i-1、2j+1 16. A[2*i+1]、a[2*i+2]、a[i/2]

、n-1、n+1 、5 19. abcdef、cbaedf、cbefda、abdcef 20. abecfhijgd、abcdefghij 二、应用题

1.void Request( int A[] , int n , int i ) {

if ( i>n ) {

cerr <<"编号为"<

exit(1);

}

cout <<"当前结点为"<

int j = i/2; C 2. B 3. D 4. C 5. A 6. D

二、填空题

1. 小于、大于等于

2. 按升序排列的有序序列

3. 找到、左子树、右子树

4. 2i+1、2i+2

5. 最小值、最大值

6. 堆尾、堆顶、向下

三、应用题

1.

2. 初态:空堆 ( )

插入38后:( 38 )

插入64后:( 38 , 64 )

插入52后:( 38 , 64 , 52 )

插入15后:( 15 , 38 , 52 , 64 )

插入73后:( 15 , 38 , 52 , 64 , 73 )

插入40后:( 15 , 38 , 40 , 64 , 73 , 52 )

插入48后:( 15 , 38 , 40 , 64 , 73 , 52 , 48 )

插入55后:( 15 , 38 , 40 , 55 , 73 ,52 , 48 , 64 )

插入26后:( 15 , 26 , 40 , 38 , 73 ,52 , 48 , 64 , 55 )

插入12后:( 12 , 15 , 40 , 38 , 26 ,52 , 48 , 64 , 55 ,73 ) 3. 初态堆:( 12 , 15 , 40 , 38 , 26 ,52 , 48 , 64 )

删除第1个元素后堆:( 15 , 26 , 40 , 38 , 64 , 52 , 48 )

删除第2个元素后堆:( 26 , 38 , 40 , 48 , 64 , 52 )

删除第3个元素后堆:( 38 , 48 , 40 , 52 , 64 )

删除第4个元素后堆:( 40 , 48 , 64 , 52 )

4. 哈夫曼树:

WPL = 3*4+7*3+8*3+2*4+6*3+10*2+14*2 = 131

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

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

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

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

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

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

数据结构(c语言版)期末考试复习试题

《数据结构与算法》(c语言版)期末考复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位

B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

数据结构(C语言版)复习题概论

一、单项选择题: 1、树形结构不具备这样的特点:() A. 每个节点可能有多个后继(子节点) B. 每个节点可能有多个前驱(父节点) C. 可能有多个内节点(非终端结点) D. 可能有多个叶子节点(终端节点) 2、二叉树与度数为2的树相同之处包括()。 A. 每个节点都有1个或2个子节点 B. 至少有一个根节点 C. 至少有一个度数为2的节点 D. 每个节点至多只有一个父节点 3、一棵完全二叉树有999 个结点,它的深度为()。 A.9 B.10 C.11 D.12 4、在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行() A. s->next=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; 5、对于一棵具有n个结点、度为5的树来说,() A. 树的高度至多是n-3 B. 树的高度至多是n-4 C. 树的高度至多是n D. 树的高度至多是n-5 6、在顺序队列中,元素的排列顺序()。 A. 由元素插入队列的先后顺序决定 B. 与元素值的大小有关 C. 与队首指针和队尾指针的取值有关 D. 与数组大小有关 7、串是一种特殊的线性表,其特殊性体现在()。 A.可以顺序存储 B.数据元素是一个字符 C.可以链式存储 D.数据元素可以是多个字符若 8、顺序循环队列中(数组的大小为 6),队头指示 front 和队尾指示 rear 的值分别为 3 和 0,当从队列中删除1个元素,再插入2 个元素后,front和 rear的值分别为()。 A.5 和1 B.2和4 C.1和5 D.4 和2 9、一棵完全二叉树上有1001 个结点,其中叶子结点的个数为()。 A.250 B.500 C.254 D.501 10、已知一个有向图如下图所示,则从顶点a出发进行深度优先遍历,不可能得到的DFS序 列为()。 A.adbefc B.adcefb C.adcebf D.adefbc

数据结构c语言版期末考试复习试题1

《数据结构与算法》复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

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

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

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

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

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

第1章绪论 5.选择题:CCBDCA 6.试分析下面各程序段的时间复杂度。 (1)O(1) (2)O(m*n) (3)O(n2) (4)O(log3n) (5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2) (6)O(n) 第2章线性表 1.选择题 babadbcabdcddac 2.算法设计题 (6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。 ElemType Max (LinkList L ){ if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据具有最大值 p=L->next->next; while(p != NULL ){//如果下一个结点存在 if(p->data > pmax->data) pmax=p; p=p->next; } return pmax->data; (7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。 void inverse(LinkList &L) { // 逆置带头结点的单链表 L p=L->next; L->next=NULL; while ( p) { q=p->next; // q指向*p的后继 p->next=L->next; L->next=p; // *p插入在头结点之后 p = q; }

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

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

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

严蔚敏《数据结构(c语言版)习题集》答案第四章串

《一定能摸到红球吗?》说课稿 林银花 一、教材说明: 1、课题:《一定能摸到红球吗?》 2、本节内容的地位和作用 在现代社会中,人们面临着更多的机会和选择,常常需要在不确定情境中作出合理的决策,概率正是通过对不确定现象和事件发生的可能性的刻画,来为人们更好的制定决策提供依据和建议.本节内容又是义务教育阶段,唯一培养学生从不确定的角度来观察世界的数学内容,让学生了解可能性是普遍的,有助于他们理解社会,适应生活. 3、教学目标设计: (1)认知目标: (A)经历猜测.实验.收集与分析试验结果等过程 (B)体会事件的发生的不确定性知道事情发生的可能性有多大。 (2)、能力目标: (A)经历游戏等的活动过程,初步认识确定事件和不确定事件 (B)在与其它人交流的过程中,能合理清晰地表达自己的思维过程; (3)、情感目标: (A)通过创设游戏情境,让学生主动参与,做“数学实验”,激发学生学习的热情和兴趣,激活学生思维。 (B)在与他人的合作过程中,增强互相帮助、团结协作的精神。 (C)体会到在生活中我们可以从确定和不确定两方面分析一件事情. 4、本课重点、难点分析: 学习的重点是初步体验事情发生的确定性和不确定性. 学习的难点是确定事件发生的可能性大小. 学习本节知识应注意猜测,试验,收集与分析实验结果,从中体会事件发生的可能性及大小. 二、教学对象分析: 1、初一学生性格开朗活泼,对新鲜事物特别敏感,且较易接受,因此,教学过程中创设的问题情境应较生动活泼,直观形象,且贴近学生的生活,从而引起学生的有意注意。 2、初一学生的概括能力较弱,推理能力还有待不断发展,所以在教学时,可让学生充分试验,收集,分析,帮助他们直观形象地感知。 3、初一学生已经具备了一定的学习能力,所以本节课中,应多为学生创造自主学习、

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

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

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

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

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

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

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

数据结构作业(C语言版)习题

数据结构作业(C 语言版)习题 1.4,试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 复数: ADT Triplet { D={r,i|r,i 为实数} R={} InitComplex(&C,re,im) }ADT Complex 有理数: ADT Triplet { D={c1,c2,c3 | c1,c2,c3∈Z,c3≠0}; R={}; C3=c1/c2; }ADT Triplet 1.9 假设n 为2的乘幂,并且n >2,试求下列算法的时间复杂度及变量count 的值(以n 的函数形式表示)。 int Time (int n){ count=0;x=2; while(x <n/2){ x*=2;count++; } return(count) }//Time 解:)(log 2n o count=2log 2 n 1.16 试写一算法,自大至小依次输出顺序读入的三个整数X ,Y 和Z 的值。 Void bubble-sort(int a[X,Y ,Z],int i){ for (i=n-1,change=TRUE; i ≥&&change; --i){ change=FALSE; for(j=0;ja[j+1]){a[j+1]←→a[j]change=TRUE;} } }//bubble-sort 解: int max3(int x,int y,int z) { if(x>y) if(x>z) return x; else return z;

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

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

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

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

第1章绪论 5.选择题:CCBDCA 6.试分析下面各程序段的时间复杂度。 (1)O(1) (2)O(m*n) (3)O(n2) (4)O(log3n) (5)因为x++共执行了n-1+n-2+ (1) n(n-1)/2,所以执行时间为O(n2) (6)O(n) 第2章线性表 1.选择题 babadbcabdcddac 2.算法设计题 (6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。 ElemType Max (LinkList L ){ if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据

具有最大值 p=L->next->next; while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p; p=p->next; } return pmax->data; (7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。 void inverse(LinkList &L) { // 逆置带头结点的单链表 L p=L->next; L->next=NULL; while ( p) { q=p->next; // q指向*p的后继 p->next=L->next; L->next=p; // *p插入在头结点之后 p = q; } }

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

《数据结构(C语言版 第2版)》(严蔚敏 著)第二章练习题答案

《数据结构(C语言版第2版)》(严蔚敏著) 第二章练习题答案 第2章线性表 1.选择题 (1)顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地 址是()。 A.110 B.108 C.100 D.120 答案:B 解释:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。 (2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。 A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B.在第i个结点后插入一个新结点(1≤i≤n) C.删除第i个结点(1≤i≤n) D.将n个结点从小到大排序 答案:A 解释:在顺序表中插入一个结点的时间复杂度都是O(n2),排序的时间复杂度为O(n2)或 O(nlog2n)。顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接 通过数组的下标直接定位,时间复杂度是O(1)。 (3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动 的元素个数为()。 A.8 B.63.5 C.63 D.7 答案:B 解释:平均要移动的元素个数为:n/2。 (4)链接存储的存储结构所占存储空间()。 A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B.只有一部分,存放结点值 C.只有一部分,存储表示结点间关系的指针 D.分两部分,一部分存放结点值,另一部分存放结点所占单元数 答案:A (5)线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。 A.必须是连续的B.部分地址必须是连续的 C.一定是不连续的D.连续或不连续都可以 答案:D (6)线性表L在()情况下适用于使用链式结构实现。 A.需经常修改L中的结点值B.需不断对L进行删除插入 C.L中含有大量的结点D.L中结点结构复杂 答案:B 解释:链表最大的优点在于插入和删除时不需要移动数据,直接修改指针即可。

算法与数据结构C语言版课后习题答案(机械工业出版社)第1章-绪论-习题参考答案

第1章概论习题参考答案 一、基础知识题 1.简述下列概念 数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。 【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据元素是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。 数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。每一种计算机程序设计语言都定义有自己的数据类型。 “数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。 数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。 数据结构在计算机中的表示称为物理结构,又称存储结构。是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。逻辑结构与计算机无关。 算法是对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操作。一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。 2.数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面? 【解答】数据的逻辑结构分为线性结构和非线性结构。(也可以分为集合、线性结构、树形结构和图形即网状结构)。 逻辑结构是数据组织的某种“本质性”的东西: (1)逻辑结构与数据元素本身的形式、内容无关。 (2)逻辑结构与数据元素的相对位置无关。 (3)逻辑结构与所含数据元素的个数无关。 3.试举一个数据结构的例子,叙述其逻辑结构、存储结构、运算三方面的内容。 【解答】如学生成绩表,逻辑结构是线性结构,可以顺序存储(也可以链式存储),运算可以有插入、删除、查询、等等。 4.简述算法的五个特性,对算法设计的要求。 【解答】算法的五个特性是:有穷性、确定性、可行性、零至多个输入和一至多个输出。

数据结构c语言版期末考试复习试题

《数据结构与算法》复习题一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

相关文档
最新文档