数据结构(本)期末综合练习20230313.pdf

为了帮助同学们进行期末复习,特拟定以下三套期末综合练习题,望同学们逐一认真完

成。

数据结构(本)期末综合练习一

一、单项选择题

1.针对线性表,在存储后如果最常用的操作是取第i个结点及其前驱,则采用()

A.单链表B.双链表C.单循环链表D.顺序表

2.线性表采用链式存储时,其地址

A.一定是不连续的B.必须是连续的

C.可以连续也可以不连续D.部分地址必须是连续的

3.数据结构中,与所使用的计算机无关的是数据的()结构。

A.物理B.存储C.逻辑与物理D.逻辑

4.带头结点的单向链表的头指针为head,该链表为空的判定条件是()的值为真。

A.head==NULLB.head->next==head

C.head->next==NULLD.head==head->next

5.以下特征中,()不是算法的特性。

A.有穷性B.确定性C.可行性1).有0个或多个输出

6.设顺序存储的线性表长度为n,对于插入操作,设插入位置是等概率的,则插入一个

元素平均移动元素的次数为()0

A.n/2B.nC.n-1D.n-i+1

7.设有个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i

个元素),则移动元素个数为()。

A.n-i+1B.n-iC.n-i-1D.i

8.一个栈的进栈序列是5,6,7,8,则栈的不可能的出栈序列是()(进出栈操

作可以交替进行)

A.5,8,6,7B.7,6,8,5

C.1,6,5,8D.8,7,6,5

9.栈的插入删除操作在()进行。

A.栈底B.任意位置C.指定位置D.栈顶

10.栈和队列的相同点是()。

A.都是后进先出B.都是后进后出

C.逻辑结构与线性表不同

D.逻辑结构与线性表相同,都是操作规则受到限制的线性表

11.以下说法正确的是()。

A.栈的特点是先进先出,队列的特点是先进后出B.栈和队列的特点都是先进后出

C.栈的特点是先进后出,队列的特点是先进先出D.栈和队列的特点都是先进先出

12.在C语言中,利用数组a存放字符串“Hell。",以下语句中正确的是()。

A.chara[10J="Hello”;B.charallOJ;a="Hello”;

C.chara[10]=lHello';D.chara[10]={'H','e',T,T,'o'};

13.元素2,4,6,8按顺序依次进栈,则该栈的不可能输出序列是()(进栈出栈

可以交替进行)。

A.8,6,4,2B.2,4,6,8

C.4,2,8,6D.8,6,2,4

14.设有一个15阶的对称矩阵A,采用压缩存储方式将其下三角部分以行序为主序存储

到一维数组b中。(矩阵A的第一个元素为au,数组b的下标从1开始),则数组元

素b[13]对应A的矩阵元素是()。

A.a5,3B.防4C.a7.2D.a6,8

15.设有一个15阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序

存储到维数组B中(数组下标从1开始),则矩阵中元素a%6在维数组B中的下

标是()。

A.42B.13C.27D.32

16.一棵完全二叉树共有30个结点,则该树一共有()层(根结点所在层为第一层)。

A.6B.4C.3D.5

17.串函数StrCmp("d”,“D”)的值为()。

A.0B.1C.-1D.3

18.以下说法正确的是()。

A.连通图G的生成树中不一定包含G的所有顶点

B.连通图G的生成树中一定要包含G的所有边

C.连通图G的生成树一定是唯一的

D.连通图G一定存在生成树

19.在一棵二叉树中,若编号为i的结点存在右孩子,则右孩子的顺序编号为()。

A.2iB.2i-lC.2i+2D.2i+l

20.对二叉排序树进行()遍历,遍历所得到的序列是有序序列。

A.按层次B.前序C.中序D.后序

21.设一棵有n个结点采用链式存储的二叉树,则该树共有()个指针域为空。

A.2nB.2n+lC.2n+2D.n+1

交换的算法是()。

A.直接选择B.冒泡C.直接插入D.折半插入

23.已知如图1所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能

得到的一种顶点序列为()。

A.abcedfB.abcefdC.aebcfdD.acfdeb

图1

24.对长度为n的线性表进行顺序查找,在等概率情况下,平均查找长度为()。

A.nB.(n+1)/2C.2nD.n-1

25.在有序表{L3,8,13,33,42,46,63,76,78,86,97,100}中,用折半查找

值86时,经()次比较后查找成功。

A.6B.3C.8D.4

26.如图若从顶点a出发按深度优先搜索法进行遍历,则可能得到的顶点序列为()o

A.acfgedb

B.aedcbgf

C.acfebdg

D.aecbdgf

27.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况F查找成功

的平均比较次数为()。

A.29/10B.31/10C.26/10D.29/9

28.一棵哈夫曼树有12个叶子结点(终端结点),该树总共有()个结点。

A.22B.21C.23D.24

29.一组记录的关键字序列为(37,70,47,29,31,85),利用快速排序,以第一个关

键字为分割元素,经过一次划分后结果为(

A.31,29,37,47,70,85B.29,31,37,47,70,85

C.31,29,37,70,47,85D.31,29,37,85,47,70

30.队列的删除操作在()进行。

A.队头B.队尾C.队头或队尾D.在任意指定位置

得分评卷人

二、填空题

1.把数据存储到计算机中,并具体体现数据之间的逻辑结构称为结构。

2.设有一个不带头结点的单向循环链表,结点的指针域为next,指针p指向尾结点,现

要使p指向第一个结点,可用语句o

3.结构中的数据元素存在一对一的关系称为结构。

4.要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循

环链表,若结点的指针域为next,头指针为head,尾指针为p,,则可执行head=head->

next;o

5.在双向链表中,每个结点有两个指针域,一个指向,另一个指向

6.设有个非空的链栈,栈顶指针为hs,要进行出栈操作,用x保存出栈结点的值,

栈结点的指针域为next,数据域为data,则可执行x=;和

hs=;

7.设有一个头指针为head的单向链表,p指向表中某一个结点,且有p->next==NULL,

通过操作,就可使该单向链表构造成单向循环链表。

8.循环队列的最大存储空间为MaxSize,队头指针为f,队尾指针为r,当__________

时表明队列已满。

9.从一个栈顶指针为h的链栈中删除一个结点时,用x保存被删结点的值,可执行

x=h->data;和。(结点的指针域为next)

10.程序段intcount=0;char*s="ABCD";

while(*s!=,\0,){s++;count++;}

执行后count=__________________

11.两个串相等的充分必要条件是。

12.一棵二叉树总结点数为II,叶结点数为5,幽有个双分支结点,

个单分支结点。

13.对二叉树的遍历可分为、、、四种

不同的遍历次序。

14.设一棵完全二叉树,其最高层上最右边的叶结点的编号为偶数,该叶节点的双亲结

点的编号为9,该完全二叉树一共有个结点。

15.一棵有n个叶结点的二叉树,其每一个非叶结点的度数都为2,则该树共有

个结点。

16.双向循环链表中,p指向表中某结点,则通过p可以访问到p所指结点的直接后继结

点和直接前驱结点,这种说法是的(回答正确或不正确)。

17.一棵有14个结点的完全二叉树,则它的最高层上有个结点。

18.栈和队列的操作特点分别是和o

19.如图2所示的二叉树,其先序遍历序列为o

图2

20.折半查找只适用于存储的有序表。

21.哈希函数是记录关键字值与该记录之间所构造的对应关系。

22.深度为k的二叉树最多有结点。

23.二叉树排序中任一棵子树都是二叉排序树,这种说法是的。(回答正确或不正

确)

24.串的两种最基本的存储方式是和

三、综合题

1.设一组记录的关键字序列为(49,83,59,41,43,47),采用堆排序算法完成以下

操作:(要求小根堆,并画出中间过程)

(1)以二叉树描述6个元素的初始堆

(2)以二叉树描述逐次取走堆顶元素后,经调整得到的5个元素、4个元素的堆

2.

设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一

个数据域data和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下

要求写出相应语句(不要求完整程序,(1)、(2)、(3)、(4)是一个连续的过程)。

(1)新开辟一个结点,使指针s指向该结点,结点的数据成员data赋值为1

(2)把该结点插入链表的尾部,释放指针s的指向

(3)删除链表的第一个结点

(4)已知pi指向另一个新结点,把它插入到p所指结点和尾结点之间

3.设有序表为(13,19,25,36,48,51,63,84,91,116,135,200),元素的下标

依次为1,2,……,12。

(1)说出有哪几个元素需要经过4次元素间的比较才能成功查到

(2)画出对上述有序表进行折半查找所对应的判定树(树结点用下标表示)

(3)设查找元素5,需要进行多少次元素间的比较才能确定不能查到

4.

(1)设有序列{10,12,15,19,22,25,100,130,150,200}画出对上述序列进行折

半查找的判定树(以序列中的元素作为树的结点)

(2)为了成功查找到100需要进行多少次元素间的比较?为了查找9,经过多少次元素

间的比较可知道查找失败?

5.

(I)对给定数列{7」6,4,8,20,9,6,18,5},依次取数列中的数据,构造一棵二叉排序树。

(2)对一个给定的查找值,简述针对二叉排序树进行查找的算法步骤,在上述二叉树中查找

元素20共要进行多少次元素的比较?

6.

(1)设有查找表{5,14,2,6,18,7,4,16,3},依次取表中数据,构造棵二叉排序树。

(2)说明如何由序列的二叉排序树得到相应序列的排序结果,对上述二叉排序给出中序

遍历的结果。

四、程序填空题

1.以下冒泡法程序对存放在a[l],a[2L……,a[n]中的序列进行排序,完成程序中

的空格部分,其中n是元素个数,要求按升序排列。

voidbsort(NODEa[],intn)

{NODEtemp;

inti,j,flag;

for(.j-l;(1);j++);

{flag=0;

for(i=l;(2);i++)

if(a[i].key>a[i+l],key)

{flag=l;

temp=a[i];

(3);

(4);

if(flag==0)break;

)

程序中flag的功能是(5)_______________________

2.以下程序是先序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、

右指针域分别为left和right,数据域data为字符型,BT指向根结点)。

voidPreorder(structBTreeNode*BT)

{if(BT!=NULL){

_______________;

^2);

}

3.设线性表为(6,10,16,4),以下程序用说明结构变量的方法建立单向链表,并输

出链表中各结点中的数据。

#defineNULL0

voidmain()

{NODEa,b,c,d,*head,*p;

a.data=6;

b.data=10;

c.data=16;

d.data=4;/*d是尾结点*/

head=(1);

a.next=&b;

b.next=&c;

c.next=&d;

(2);/*以上结束建表过程*/

p=head;/*p为工作指针,准备输出链表*/

do

{Drintf("%d\n”,(3)):

(4)___________;

}while((5)):

4.以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、

voidInorder(structBTreeNode*BT)

__________________;

_I2)______________:

答案

1.I)2.C3.D4.C5.I)6.A7.A8.A9.D10.D11.C12.A

13.D14.A15.C16.D17.B18.D19.D20.C21.D22.A23.B

24、B25.D26.A27.A28.C29.A30.A

1.物理(存储)

3.线性

5.结点的直接后继结点的直接前驱

7.p->next=head;

9.h=h->next;

11.串长度相等且对应位置的字符相等

13.先序、中序、后序、层次

15.2n-l

17.7

19.abdgcefhi

21.存储地址

23.正确

2.p=p->next;

4.p->next=head;

6.hs->data;hs->next;

8.(r+1)%MaxSize=f

10.4

12.4;2

14.18

16.正确

18.先进后出(后进先出)先进先出(后进后出)

20.顺序存储结构

22.2k-l

24.顺序存储链式存储

图3

图4

(1)s=(NODE*)malloc(sizeof(NODE));s->data=1;

(2)p->next=s;

s->next=NULL;

free(s)

(3)head=head->next;

(4)pr>next=p->next;

p->next=pi;

3.

(1)19,48,84,116,200

(2)

图5

(3)3次

(2)4次;3次

图6

(2)先将给定值与根结点比较,若相等则查找成功,否则若小于根结点则在左子树中继续

查找,大于根结点在右子树中查找,查找20共进行3次比较。

(2)中序遍历

中序2,3,4,5,6,7,14,16,18

L.

(1)j<=n-l

(2)i<=n-j

(3)a[i]=a[i+l]

(4)a[i+l]=temp

(5)当某趟冒泡中没有出现交换则已排好序,结束循环

(1)printf(a%cw,BT->data)

(2)Preorder(BT->left)

(3)Preorder(BT->right)

(1)&a

(2)dnext二NULL

(3)p->data

(4)p=p->next

(5)p!=NULL

(1)Inorder(BT->left)

(2)printf(u%c,J,BT->data)

(3)Inorder(BT->right)

数据结构(本)期末综合练习二

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.双向循环链表结点的数据类型为:

structnode

{intdata;

structnode力ext;/*指向直接后继*/

structnode"prior;

};

设p指向表中某一结点,要显示p所指结点的直接前驱结点的数据元素,可用操作

()o

A.printf(tt%d,\p->next->data);B.printf(44%d,,,p->prior->data);

C.printf("%d”,p->prior->next);D.printf("%d”,p->data);

7.设顺序存储的线性表长度为n,对于删除操作,设删除位置是等概率的,则删除一个元

素平均移动元素的次数为()o

A.(n+1)/2B.nC.2nD.n-i

8.一个栈的进栈序列是efgh,则栈的不可能的出栈序列是()(进出栈操作可以交

替进行)。

A.hgfeB.gfehC.fgehD.ehfg

9.设top是一个链栈的栈顶指针,栈中每个结点由一个数据域data和指针域next组成,

设用x接收栈顶元素,则出栈操作为()。

A.x=top->data;top=top->next;B.top=top->next;x=top->data;

C.x=top->next;top=top->data;D.top->next=top;x=top->data;

10.设top是一个链栈的栈顶指针,栈中每个结点由一个数据域data和指针域next组成,

设用x接收栈顶元素,则取栈顶元素的操作为()。

A.top->data=x;B.top=top->next;

C.x=top->data;D.x=top->data;top=top->next;

11.以下说法正确的是()o

A.队列是后进先出B.栈的特点是后进后出

C.栈的删除和插入操作都只能在栈顶进行

D.队列的删除和插入操作都只能在队头进行

12.以下说法不正确的是()。

A.栈的特点是后进先出B.队列的特点是先进先出

C.栈的删除操作在栈底进行,插入操作在栈顶进行

D.队列的插入操作在队尾进行,删除操作在队头进行

13.串函数StrCmp(“abA”,“aba")的值为()。

A.1B.0C.“abAaba”D.-1

14.char*p;

p=StrCat(“ABD”,“ABC");

Printf("%s”,p);

的显示结果为()。

A.-1B.ABDABCC.ABD.1

15.设有一个12阶的对称矩阵A,采用压缩存储方式将其下三角部分以行序为主序存储

到一维数组b中(矩阵A的第一个元素为au,数组b的下标从1开始),则矩阵A

中第4行的元素在数组b中的下标i一定有()o

A、7WiW10B、C、94W14D、6WiW9

16.深度为5的满二叉树至多有()个结点(根结点为第一层)

A.40B.31C.34D.35

17.已知一个图的边数为m,则该图的所有顶点的度数之和为()o

A.2mB.mC.2m+lD.m/2

18.已知一个图的所有顶点的度数之和为m,则该图的边数为()。

19.以下说法不正确的是()o

A.连通图G一定存在生成树

B.连通图G的生成树中一定包含G的所有顶点

C.连通图G的生成树中不一定包含G的所有边

D.连通图G的生成树可以是不连通的

20.以下说法不正确的是()。

A.连通图G的生成树一定是唯一的

B.连通图G一定存在生成树

C.连通图G的生成树中一定要包含G的所有顶点

D.连通图G的生成树一定是连通而且不包含回路

21.散列查找的原理是()。

A.在待查记录的关键字值与该记录的存储位置之间建立确定的对应关系

B.按待查记录的关键字有序的顺序方式存储

C.按关键字值的比较进行查找

D.基于二分查找的方法

22.有序表为{1,2,4,6,10,18,20,32},用课本中折半查找算法查找值18,经()

次比较后成功查到。

A.3B.2C.4D.5

23.排序过程中,每一趟从无序子表中将一个待排序的记录按其关键字的大小放置到已经

排好序的子序列的适当位置,直到全部排好序为止,该排序算法是()。

A.直接插入排序B.快速排序

C.冒泡排序D.选择排序

好序,从而可以提前结束排序过程的排序算法是()。

A.冒泡B.选择C.直接插入D.折半插入

25.采用顺序查找法对长度为n的线性表进行查找(不采用表尾设监视哨的方法),最坏的

情况下要进行()次元素间的比较。

A.n+2B.nC.n-1D.n/2

26.用折半查找法,对长度为12的有序的线性表进行查找,最坏情况下要进行()

次元素间的比较

A.4B.3C.5D.6

27.如图若从顶点a出发按广度优先搜索法进行遍历,则可能得到的顶点序列为()o

A.acebdfgh

B.aebcghdf

C.aedfbcgh

D.abecdfgh

28.如图若从顶点a出发按深度优先搜索法进行遍历,则可能得到的顶点序列为()o

B.aedbgfc

29.一棵哈夫曼树总共有23个结点,该树共有()个叶结点(终端结点)

A.10B.13C.11D.12

30.一棵哈夫曼树总共有25个结点,该树共有)个非叶结点(非终端结点)。

A.12B.13C.14D.15

二、填空题(每小题2分,共24分)

1.通常数据的逻辑结构包括、、、四种类

型。

2.结构中的元素之间存在多对多的关系称为结构。

3.设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该

单向链表改为单向循环链表,可用语句。

4.设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某结

点,若逻辑表达式的结果为真,则p所指结点为尾结点。

5.设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点

的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作

6.设有一个链栈,栈顶指针为hs,现有-一个s所指向的结点要入栈,则可执行操作s->

next=hs;。

7.在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,则插入一个

S所指结点的操作为;r=s;

8.在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,s指向一个要

入队的结点,则入队操作为;;

9.循环队列的队头指针为f,队尾指针为r,当时表明队列为空。

10.循环队列的最大存储空间为MaxSize=6,采用少用一个元素空间以有效地判断栈空或

栈满,若队头指针front=4,当队尾指针rear=时队满,队列中共有

个元素。

11.*A'在存储时占个字节。

“A”在存储时占个字节。

12.程序段char*s="aBcD”;n=0;

while(*s!='\0')

{if(*s>='a'&&*s<='z')n++;

s++;

}执行后n=______________

13.一棵二叉树没有单分支结点,有6个叶结点,则该树总共有个结点。

14.一棵二叉树中顺序编号为5的结点(树中各结点的编号与等深度的完全二叉中对应

位置上结点的编号相同),若它存在左孩子,则左孩子的编号为。

15.按照二叉树的递归定义,对二叉树遍历的常用算法有、、

三种。

16.根据搜索方法的不同,图的遍历有两种方法。

17.把数据存储到计算机中,并具体体现数据之间的逻辑结构称为结构。

18.结构中的数据元素存在多对多的关系称为结构。

19.如图2所示的二叉树,其后序遍历序列为o

20.一棵有n个叶结点的二叉树,其每一个非叶结点的度数都为2,则该树共有

21.二叉树为二叉排序的充分必要条件是其任一结点的值均大于其左孩子的值、小于其

右孩子的值。这种说法是的。(回答正确或不正确)

22.串的两种最基本的存储方式分别是和。

23.根据搜索方法的不同,图的遍历有、两种方法

24.按某关键字对记录序列排序,若关键字的记录在排序前和排序后仍保

持它们的前后关系,则排序算法是稳定的,否则是不稳定的。

1.(1)已知某二叉树的后序遍历序列是debca,中序遍历序列是dbeac,试画出该二叉树

(2)若上述二叉树的各个结点的字符分别代表不同的整数(其中没有相等的),并恰好

使该树成为一棵二叉排序树,试给出a、b、c、d、e的大小关系

(3)给出该树的前序遍历序列

2.(1)已知某二叉树的先序遍历序列是aecdb,中序遍历序列是eadcb,试画出该二叉树

(2)给出上述二叉树的后序遍历序列

(3)若上述二叉树的各个结点的字符分别是1,2,3,4,5,并恰好使该树成为一棵二

叉排序树,试问a、b、c、d、e的值各为多少?

3.(1)设有一个整数序列{40,28,6,72,100,3,54}依次取出序列中的数,构造一

棵二叉排序树

(2)对上述二叉排序树,在等概率条件下,求成功查找的平均查找长度

4.(1)给定数列{8,17,5,9,21,10,7,19,6),依次取序列中的数构造一棵二叉

排序树

(2)对匕述二叉树给出中序遍历得到的序列

5.(1)利用筛选过程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),画

出相应的完全二叉树(不要求中间过程)

(2)写出对上述堆对应的完全二叉树进行中序遍历得到的序列

6.(1)以给定权重值1,2,12,13,20,25为叶结点,建立一棵哈夫曼树

(2)若哈夫曼树有n个非叶子结点,则树中共有多少结点。对给定的一组

权重值建立的棵哈夫曼树是否一定唯一

1.以下函数在a[0]到a[n-l]中,用折半查找算法查找关键字等于k的记录,查找成功返回

该记录的下标,失败时返回-1,完成程序中的空格

typedefstruct

{intkey;

}NODE;

intBinary_Search(NODEa[],intn,intk)

intlow,mid,high;

low=0;

high=n-l;

while(___(1))

{

mid=(low+high)/2;

if(a[mid].key==k)

return_(2)

elseif(___(3))

low=mid+l;

else_(4);

—(5);

2.以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返

回值是指向树结点的结构指针p(查找成功p指向查到的树结点,不成功p指向为NULL)

完成程序中的空格

typedefstructBnode

structBnode*left;

structBnodetight;

}Bnode;

Bnode*BSearch(Bnode*bt,intk)

/*bt用于接收二叉排序树的根结点的指针,k用以接收要查找的关键字*/

{Bnode*p;

if(bt==—(1))

return(bt);

P=bt;

while(p->key!=(2))

{if(kkey)

—(3);

else___(4);

if(p二二NULL)break;

Return(___(5));

3.以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front>rear分别是

链队列的队头、队尾指针

{ElemTypedata;

structnode*next;

);

structnode*front,*rear;

voidInQueue(ElemTypex)

(

structnode*p;

p=(structnode*)___(1);

p->data=x;

p->next=NULL;

一(2);

rear=___(3);

4.以下函数为链队列的出队操作(链队列带有头结点),出队结点的数据域的值由x返

回,front、rear分别是链队列的队头、队尾指针

);

ElemTypeOutQueue0

ElemTypex;

if(—(1)){

printf("队列下溢错误!\n〃);

exit(1);

else{

structnode*p=front->next;

x=p->data;

front->next=___(2);

if(p->next-NULL)rear=front;

free(p);

1.C2.A3.C4.B5.D6.B7.A8.D9.A10.C11.C12.C

13.D14.B15.A16.B17.A18.D19.D20.A21.A22.B23.A

24.A25.B26.A27.D28.B29.D30.A

1.集合;线性;树形;图状

2.图状

3.p->next=head;

4.p->next==head;

5.p->next=head;

6.hs=s;

7.r->next=s

8.r->next=s;r=s;

9.r==f

10.3;5

11.1;2

12.2

13.11

14.10

15.先序;中序;后序

16.深度优先;广度优先

17.物理(存储)

18.图状(网状)

19.gdbeihfca

20.2n-l

21.错误

22.顺序存储链式存储

23.深度优先广度优先

24.关键字相等的记录

三、综合应用题

1.(1)一

(2)d

(3)abdec

2.(1)

a

(2)edbca

(3)e=l,a=2,d=3,c=4,b=5

3.(1)

(2)ASL=(1x14-2x2+3x3+4)/7=18/7

4.(1)

(2)5,6,7,8,9,10,17,18,19,21

(1)

初始树堆

(2)102,52,42,82,16,67,32,57

(2)2n-l不一定唯一

四、程序填空题(每空2分,共16分)

1.(1)low<=high

(2)mid

(3)a[mid].key

(4)high=mid-l

(5)return-1;

2.(1)NULL

(2)k

(3)p=p->left

(4)p=p->right

(5)p

3.(1)malloc(sizeof(structnode))

(2)rear->next=p

(3)p

4.(1)front==rear

(2)p->next

(3)retum(x)

数据结构(本)期末综合练习三

1.()是性质相同的数据元素的集合,是数据的子集。

A、数据元素B.数据对象C.数据结构D.数据项

2.从n个数中选取最大元素()。

3.设链表中的结点是NODE类型的结构体变量,且有NODE*p:为了申请一个新结点,

并由p指向该结点,可用以下语句()。

A.p=(NODE*)malloc(sizeof(NODE));

B.p=(*NODE)malloc(sizeof(NODE));

C.p=(NODE)malloc(sizeof(p));

D.p=(NODE*)malloc(sizeof(p));

4.设head为非空的单向循环链表头指针,p指向链表的尾结点,则满足逻辑表达式()

的值为真。

A.p->next=NULLB.p==NULL

C.p->next=headD.p->next==head

5.设顺序存储的线性长度为n,要在第i个元素之前插入一个新元素,按课本的算法当1=

()时,移动元素次数为2

A.n/2B.nC.1D.n-1

6.设顺序存储的线性表长度为n,要删除第i个元素,按课本的算法,当i=()时,

移动元素的次数为3

A.3B.n/2C.n-3D.3

7.一个栈的进栈序列是1,2,3,4,则栈的不可能的出栈序列是()(进出栈操作

可以交替进行)

A.3,2,4,1B.1,4,2,3

C.4,3,2,1D.3,2,L4

8.一个栈的进栈序列是a,b,c,d,则栈的不可能的出栈序列是()o

A.adbcB.bead

C.cbadD.deba

9.设有一个带头结点的链队列,队列中每个结点由一个数据域data和指针域next组成,

front和rear分别为链队列的头指针和尾指针。设p指向要入队的新结点(该结点已被

赋值),则入队操作为()0

A.rear->next=p;rear=p;B.rear->next=p;p=rear;

C.p=rear->next;rear=p;D.rear=p;rear->next=p;

10.设有一个带头结点的链队列,队列中每个结点由一个数据域data和指针域next组成,

front和rear分别为链队列的头指针和尾指针,要执行出队操作,用x保存出队元素的

值,p为指向结点类型的指针,可执行如下操作:p=front->next;x=p->data;然后指行

THE END
1.数据结构经典题目—两个队列实现栈与两个栈实现队列将一个栈当作输入栈,用于压入push 传入的数据;另一个栈当作输出栈,用于 pop操作。每次 pop 时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。若不为空,则只有将所有输出栈的数据都pop完后,才将输入栈的数据弹入输出栈。再对输出栈进行...https://developer.aliyun.com/article/1336825
2....10在循环队列中用数组A[0..m数据结构 10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( ).A ( front - rear + 1) % m \x05\x05 B ( rear - front + 1) % mC ( front - rear + m) % m\https://www.zybang.com/question/0d4ec37165be699e4a461d50c58d7b1b.html
3.2022年三季度“云南好人”昆明市候选人推荐公示临危受命 他义无反顾率队进入隔离病区 “最短时间内组建人工肺重症医学团队,带上设备和耗材马上去云南省传染病医院抢救危重型新冠肺炎患者。”李志伟是云南省首例成功开展人工肺技术(以下简称ECMO)的人,带领的团队是云南省内ECMO完成数最多的,且存活率接近国内及国际先进水平,他的团队也是云南省首例成功运用人工肺辅助...http://km.wenming.cn/gsgg/202207/t20220722_7722328.html
1.数据结构栈和队列1.1什么是栈 只允许在固定的一端进行插入和删除元素操作的特殊线性表,数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 如果是两个栈(一个空,一个非空)来进行交换数据的话,特点是“倒进去”---刷题很大用处 ...https://blog.csdn.net/2301_80176093/article/details/143090437
2.android栈和队列的区别mob64ca12e0c608的技术博客在学习Android开发的过程中,理解数据结构的概念尤为重要。栈(Stack)和队列(Queue)是两种基本的数据结构,它们在数据存储和访问方式上有显著的区别。本文将通过一个详细的过程来帮助你理解这两者之间的不同之处。 流程概述 我们将通过以下步骤来探讨栈和队列的区别: ...https://blog.51cto.com/u_16213366/12573836
3.栈与队列(详解)队列循环的要点: 下标往后移动rear与front移动都不能直接+1,都会有从末尾到0的时候 所以向前的代码: (rear+1)%数组长度 (front+1)%数组长度 三、队列与栈的区别 队列:数据是一端入队,另一端出队 原则:先入先出 栈:数据一端入栈,同一端出栈 原则:先入后出...https://yundeesoft.com/109674.html
4.c语言数据结构之栈和队列详解(Stack&Queue)C语言InitStack(&S):初始化一个空栈S。StackEmpty(S):判断一个栈是否为空,若栈为空则返回true,否则返回false。Push(&S, x):进栈(栈的插入操作),若栈S未满,则将x加入使之成为新栈顶。Pop(&S, &x):出栈(栈的删除操作),若栈S非空,则弹出栈顶元素,并用x返回。https://www.jb51.net/article/261165.htm
5.数据结构之栈与队列(优先队列/堆)腾讯云开发者社区此外,针对队列这一特殊数据结构,有时需考虑队列元素的优先级的关系,即根据用户自定义的优先级排序,出队时优先弹出优先级更高(低)的元素,优先队列能更好地满足实际问题中的需求,而在优先队列的各种实现中,堆是一种最高效的数据结构。本文分别介绍了顺序栈、链式栈、链式队列和循环队列以及对应与前两种队列实现的最...https://cloud.tencent.com/developer/article/1173781
6.设数组q[M](M等于6)存储一个循环队,first和last分别是首尾指针...E. 编制财务报表,反映企业的财务状况和经营成果以及资金状况 查看完整题目与答案 【简答题】策划-实施-检查-改进循环请描述应用于整个体系的情况 查看完整题目与答案 【单选题】a、b、c、d、e、f依次进栈、进栈、出栈、进栈、进栈、出栈、进栈的操作,则操作完后,栈S的栈顶元素为()。 A. a ...https://www.shuashuati.com/ti/44dd5c803f81409791a3b64f6ed050a3.html
7.2016年计算机二级考试MSOffice题库及答案A) 在带链队列中,队头指针和队尾指针都是在动态变化的 √B) 在带链栈中,栈顶指针和栈底指针都是在动态变化的 C) 在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的 75、设数据元素的集合D={ 1,2,3,4,5 },则满足下列关系R的数据结构中为线性结构的是 ...http://edu.yjbys.com/jisuanjidengji/67935_2.html
8.全国自考(数据结构)模拟试卷9自考5. 设数组A[0,m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行入队操作的语句是( ) A.sq.front=(sq.front+1)%m B.sq.front=(sq.front+1)%(m+1) C.sq.rear=(sq.rear+1)%m D.sq.rear=(sq.rear+1)%(m+1) https://www.educity.cn/zikao/68954.html
9.最好的旅行方式,大多数中国人都错过了澎湃号·湃客澎湃新闻中国蓝天救援高山救援队队长安少华参加过近百次户外运动遇险救援。他发现:“很多户外的悲剧,都是对风险点和难度估计不足,高估了自己的能力,贸然涉险而至”。 △救援队救助户外登山者的消息/新浪微博 不可否认,受都市文明庇护已久的人类,对自然,以及人类在自然中的生存能力实际非常陌生。 https://www.thepaper.cn/newsDetail_forward_9487804
10.政策入耳更入脑干啥心里都有底从产业兴旺到乡风文明,从基层治理到脱贫攻坚,从田间到社区,从“兜兜队”到“婆婆嘴”,马祖镇十九大精神宣讲热气腾腾。马祖镇党委书记廖皎介绍,宣传队成员都是来自各村土生土长的村民和干部。宣传队成立后,全镇还统一组织了培训。“用身边人来宣传,更接地气,也更易于被老百姓接受。”廖皎说。 http://www.gcdr.gov.cn/content.html?id=29998
11.银河护卫队2六级影迷官方指定辅导手册(银河护卫队2)影评星爵到哪都是戏,Vol.1中没能和卡魔拉跳舞,Vol.2继续撩,能不能展开一段恋情,还得看这两个人的心情。 预告 传说中的亲爹终于登场,一边认女票,一边认亲爹, 第二部星爵有点忙。 预告 >>>人气天团填新人 银河护卫队由原来的5人增加为8人,而且还有新角色加入,新人气质符不符合,飙次车就知道。 预告...https://movie.douban.com/review/8513166
12.阿拉贡魔戒中文维基灰机wiki[7]此后,数批斥候被派向各地,他们要将幽谷方圆百里都侦察个一干二净。阿拉贡和埃尔隆德的双生子也在其中。霍比特人在幽谷呆了将近两个月,斥候才一批一批地返回。于是,埃尔隆德与甘道夫确定了护戒远征队的九名成员,他们是:弗罗多·巴金斯、山姆怀斯·甘姆吉、甘道夫、阿拉贡、梅里阿道克·白兰地鹿、佩里格林·图克、...https://lotr.huijiwiki.com/index.php?curid=1611