1、 1 / 40数据结构复习资料总结2012-05 T.H.C 2012-06-05 MODIFY目录1. 第一章 .31.1 基本概念题 .31.2 逻辑结构题 .31.3 物理结构题 .31.4 算法特性题 .42. 线性表 .42.1 基本概念题 .42.2 顺序表 .42.3 链表概念题 .52.4 链表指针题 .52.5 链表编程题 .63. 栈和队列 .83.1 栈的概念题 .83.2 进栈出栈题 .83.3 链栈指针题 .93.4 链栈编程题 .93.5 队列概念题 .103.6 链队指针题 .103.7 链队编程题 .113.8 循环队列题 .124. 串 .124.1 串的基本
2、概念 .124.2 串函数 .134.5 串的编程题 .135. 数组和广义表 .145.1 数组坐标换算题 .145.2 矩阵题 .145.3 广义表 .156. 树和二叉树 .156.1 二叉树的概念性质 .156.2 二叉树的链式存储 .176.3 树的遍历概念题 .176.4 树的遍历操作题 .186.5 树的遍历编程题 .206.6 哈夫曼树 .216.7 树的遍历反过来做的题 .227. 图 .237.1 图的基本概念 .237.2 图的遍历 .242 / 407.3 图的最小生成树 .247.5 图的连通性 .258. 查找 .258.1 顺序查找 .258.2 折半查找 .25
3、8.3 二叉排序树 .268.4 二叉判定树 .288.5 哈希函数 .298.6 折半查找编程题 .298.7 二叉排序树编程题 .309. 排序 .319.1 排序基本概念 .319.2 直接插入排序 .319.3 折半插入排序 .329.4 交换排序之冒泡排序 .329.5 交换排序之快速排序 .339.6 选择排序之直接选择排序 .349.7 选择排序之堆排序 .359.8 选择排序之归并排序 .389.9 排序稳定性题 .383 / 401. 第一章1.1 基本概念题1线性结构中数据元素的位置之间存在( )的关系。 【B】A一对多 B一对一C多对多 D每一个元素都有一个直接前驱和一个
4、直接后继 注:D 选不全的,第一个元素就木有前驱,最后一个元素就木有后继。2数据结构中,与所使用的计算机无关的是数据的( )结构。 【D】A物理 B存储 C逻辑与物理 D逻辑3结构中的数据元素存在一对一的关系称为_结构。 【线性】4数据元素是数据的基本单位,它( ) 。 【C】 A只能有一个数据项组成 B至少有二个数据项组成C可以是一个数据项也可以由若干个数据项组成D至少有一个数据项为指针类型 5 一种逻辑结构( )存储结构。 【A】A可以有不同的 B只能有唯一的C的数据元素在计算机中的表示称为 D的数据元素之间的关系称为1.2 逻辑结构题1通常数据的逻辑结构包括_、_、_、_四种类型。 【集
5、合;线性;树形;图状】2通常可以把一本含有不同章节的书的目录结构抽象成_结构。 【树形】 3通常可以把某城市中各公交站点间的线路图抽象成_结构。 【图状】4结构中的数据元素存在多对多的关系称为_结构。 【图状(网状) 】5结构中的数据元素存在一对多的关系称为_结构。 【树形】6结构中的数据元素存在一对一的关系称为_结构。 【线性】1.3 物理结构题1把数据存储到计算机中,并具体体现数据之间的逻辑结构称称为物理( )结构。 【存储】2把数据存储到计算机中,并具体体现数据之间的逻辑结构称为_结构。 (物理(存储) )4 / 401.4 算法特性题1以下特征中, ( )不是算法的特性。 【C】A有穷
6、性 B确定性 C有 0 个或多个输出 D可行性 2算法的时间复杂度与( )有关。 【D】A所使用的计算机 B与计算机的操作系统 C与数据结构 D与算法本身3要求在 n 个数据元素中找其中值最大的元素,设基本操作为元素间的比较。则比较的次数和算法的时间复杂度分别为_和 O(n)。 【n-1】2. 线性表2.1 基本概念题1针对线性表,在存储后如果最常用的操作是取第 i 个结点及其前驱,则采用( )存储方式最节省时间。 【B】A单链表 B顺序表 C单循环链表 D双链表2.2 顺序表1设有一个长度为 n 的顺序表,要在第 i 个元素之前(也就是插入元素作为新表的第 i 个元素) ,则移动元素个数为(
7、 ) 。 【A】An-i+1 Bn-i Cn-i-1 Di注:元素要插入到 i 的位置,不动的是前面 i-1 个元素,总元素有 n 个,要移动的元素个数是:n-(i-1) 即: n- i +12. 设顺序存储的线性表长度为 n,对于插入操作,设插入位置是等概率的,则插入一个元素平均移动元素的次数为( ) 。 【A】An/2 Bn Cn-1 Dn-i+13 .设顺序存储的线性表长度为 n,对于删除操作,设删除位置是等概率的,则删除一个元素平均移动元素的次数为( ) 。 【A】A(n+1)/2 Bn C2n Dn-i4线性表的顺序结构中, ( ) 。 【C】A逻辑上相邻的元素在物理位置上不一定相邻
8、B数据元素是不能随机访问的5 / 40C逻辑上相邻的元素在物理位置上也相邻D进行数据元素的插入、删除效率较高2.3 链表概念题1链表所具备的特点是( ) 。 【D】A可以随机访问任一结点 B占用连续的存储空间C可以通过下标对链表进行直接访问 D插入删除元素的操作不需要移动元素结点 2线性表采用链式存储时,其地址( ) 。 【C】A一定是不连续的 B必须是连续的C可以连续也可以不连续 D部分地址必须是连续的3设有一个不带头结点的单向循环链表,结点的指针域为 next,指针 p 指向尾结点,现要使 p指向第一个结点,可用语句_。 【p=p-next; 】4在双向链表中,每个结点有两个指针域,一个指
9、向_,另一个指向_。【结点的直接后继 结点的直接前驱】5以下说法中不正确的是( ) 。 【B】A双向循环链表中每个结点需要包含两个指针域B已知单向链表中任一结点的指针就能访问到链表中每个结点C顺序存储的线性链表是可以随机访问的D单向循环链表中尾结点的指针域中存放的是头指针6以下表中可以随机访问的是( ) 。 【D】A单向链表 B双向链表 C单向循环链表 D顺序表6 / 402.4 链表指针题基本图形:1在一个单链表中,p、q 分别指向表中两个相邻的结点,且 q 所指结点是 p 所指结点的直接后继,现要删除 q 所指结点,可用的语句是( ) 。 【C】Ap=q-next Bp-next=q Cp
10、-next=qnext Dq-next=NULL2在双向链表中,每个结点有两个指针域,一个指向结点的直接后继,另一个指向_。【结点的直接前驱】3设有一个头指针为 head 的单向循环链表,p 指向链表中的结点,若 p-next=_,则 p所指结点为尾结点。 【 head 】4设有一个头指针为 head 的单向链表,p 指向表中某一个结点,且有 p-next=NULL,通过操作_,就可使该单向链表构造成单向循环链表。 【p-next=head;】5带头结点的单向链表的头指针为 head,该链表为空的判定条件是( )的值为真。 【C】Ahead = = NULL Bhead-next= =head
11、Chead-next= = NULL Dhead = =head-next6双向循环链表结点的数据类型为: 【B】struct node int data;struct node *next; /*指向直接后继*/struct node *prior;;设 p 指向表中某一结点,要显示 p 所指结点的直接前驱结点的数据元素,可用操作( ) 。Aprintf(“%d”,p-next-data); Bprintf(“%d”,p-prior-data);Cprintf(“%d”,p-prior-next); Dprintf(“%d”,p-data);7要在一个带头结点的单向循环链表中删除头结点,得到
12、一个新的不带头结点的单向循环链表,若结点的指针域为 next,头指针为 head,尾指针为 p,则可执行 head=head- next; _。7 / 40【p-next=head ;】8设有一个头指针为 head 的单向链表,p 指向表中某一个结点,且有 p-next= =NULL,通过操作_,就可使该单向链表构造成单向循环链表。 【p-next=head;】9双向循环链表中,p 指向表中某结点,则通过 p 可以访问到 p 所指结点的直接后继结点和直接前驱结点,这种说法是_的(回答正确或不正确) 。 【正确】10设有一个单向链表,结点的指针域为 next,头指针为 head,p 指向尾结点,
13、为了使该单向链表改为单向循环链表,可用语句_。 【p-next=head;】11设有一个单向循环链表,结点的指针域为 next,头指针为 head,指针 p 指向表中某结点,若逻辑表达式_的结果为真,则 p 所指结点为尾结点。 【p-next= =head;】12设有一个单向循环链表,头指针为 head,链表中结点的指针域为 next,p 指向尾结点的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作_。 【p-next=head;】13要在一个单向链表中 p 所指向的结点之后插入一个 s 所指向的新结点,若链表中结点的指针域为 next,可执行_和 p-next=s;的操作。
14、 【s-next= p-next;】14要在一个单向链表中删除 p 所指向的结点,已知 q 指向 p 所指结点的直接前驱结点,若链表中结点的指针域为 next,则可执行_。 【q-next= p-next;】2.5 链表编程题1 编程题 以下是用头插法建立带头结点且有 n 个结点的单向链表的程序,要求结点中的数据域从前向后依次为 n,n-1,1,完成程序中空格部分。NODE *create2(n) NODE *head , *p, *q;int i;p=(NODE*)malloc(sizeof(NODE);p-next=NULL;head=(1 ) ;(2) ;for(i=1; idata=i
15、;if(i= =1)p-next=NULL;elsep-next= (4) ;q-next= (5) ;8 / 40return(head);下面答案: (1)p(2 ) q=p(3 ) (NODE*)malloc(sizeof(NODE)(4 ) q-next(5 ) p2 编程题 以下函数在 head 为头指针的具有头结点的单向链表中删除第 i 个结点,struct node int data;struct node *next;typedef struct node NODEint delete(NODE *head,int i )NODE *p,*q;int j;q=head;j=0;
16、while(q!=NULL)j+;if(q=NULL)return(0);p= _(3)_; _(4)_=p-next;free(_(5)_);return(1);下面答案:(1)jnext(3 ) q-next(4 ) q-next(5 ) p9 / 403. 栈和队列3.1 栈的概念题1栈的插入删除操作在( )进行。 【B】A栈底 B栈顶 C任意位置 D指定位置 2以下说法正确的是( ) 。 【C】A栈的特点是先进先出,队列的特点是先进后出 B栈和队列的特点都是先进后出C栈的特点是先进后出,队列的特点是先进先出 D栈和队列的特点都是先进先出3栈和队列的相同点是( ) 。 【D】A都是后进先
17、出 B都是后进后出C逻辑结构与线性表不同 D逻辑结构与线性表相同,都是操作规则受到限制的线性表3.2 进栈出栈题1元素 3,6,9 按顺序依次进栈,则该栈的不可能输出序列是( ) (进栈出栈可以交替进行) 。A9,3,6 B9,6,3 【A】C6,3,9 D3,9,62元素 2,4,6,8 按顺序依次进栈,则该栈的不可能输出序列是( ) (进栈出栈可以交替进行) 。 【D】A8,6,4,2 B2,4,6,8 C4,2,8,6 D8,6,2,43一个栈的进栈序列是 5,6,7,8,则栈的不可能的出栈序列是( ) (进出栈操作可以交替进行) 【A】A5,8,6,7 B7,6,8,5C7,6,5,8
18、 D8,7,6,54. 一个栈的进栈序列是 efgh,则栈的不可能的出栈序列是( ) (进出栈操作可以交替进行) 。 【D】Ahgfe Bgfeh Cfgeh Dehfg10 / 403.3 链栈指针题1从一个栈顶指针为 h 的链栈中删除一个结点时,用 x 保存被删结点的值,可执行 x=h-data;和_。(结点的指针域为 next) 【h=h-next;】2向一个栈顶指针为 h 的链栈中插入一个 s 所指结点时,可执行_和 h=s;。 【s-next=h;】3从一个栈顶指针为 h 的链栈中删除一个结点时,用 x 保存被删结点的值,可执行_和h=h-next;。(结点的指针域为 next) 【
19、x=h-data;】4设有一个非空的链栈,栈顶指针为 hs,要进行出栈操作,用 x 保存出栈结点的值,栈结点的指针域为 next,数据域为 data,则可执行 x= _;和 hs= _; 【hs-data; hs-next;】5设 top 是一个链栈的栈顶指针,栈中每个结点由一个数据域 data 和指针域 next 组成,设用 x接收栈顶元素,则出栈操作为( ) 。 【A】Ax=top-data;top=top-next; Btop=top-next;x=top-data; Cx=top- next;top=top- data; Dtop-next =top; x=top-data;6设 to
20、p 是一个链栈的栈顶指针,栈中每个结点由一个数据域 data 和指针域 next 组成,设用 x接收栈顶元素,则取栈顶元素的操作为( ) 。 【C】Atop-data= x; Btop=top-next; Cx=top-data; Dx=top-data; top= top-next;11C 12C 13D 14B 15A7设有一个链栈,栈顶指针为 hs,现有一个 s 所指向的结点要入栈,则可执行操作 s- next=hs; _。 【hs=s;】8设有一个非空的链栈,栈顶指针为 hs,要进行出栈操作,用 x 保存出栈结点的值,栈结点的指针域为 next,则可执行 x=hs-data; _。 【
21、hs=hs-next;】9设有一个链栈,栈顶指针为 hs,现有一个 s 所指向的结点要入栈,则可执行操作_ 和hs=s;【s-next=hs;】11 / 403.4 链栈编程题1 编程题 以下函数为链栈的进栈操作, x 是要进栈的结点的数据域,top 为栈顶指针struct node ElemType data;struct node *next;struct node *top ;void Push(ElemType x) struct node *p;p=(struct node*)malloc(_(1)_); p-data=x; _(2)_; _(3)_; 下面答案: (1)sizeof
22、 (struct node)(2 ) p-next=top(3 ) top=p3.5 队列概念题1 队列的删除操作在( )进行。 【A】A队头 B队尾 C队头或队尾 D在任意指定位置2以下说法正确的是( ) 。 【C】A队列是后进先出 B栈的特点是后进后出C栈的删除和插入操作都只能在栈顶进行D队列的删除和插入操作都只能在队头进行3以下说法不正确的是( ) 。 【C】A栈的特点是后进先出 B队列的特点是先进先出C栈的删除操作在栈底进行,插入操作在栈顶进行D队列的插入操作在队尾进行,删除操作在队头进行4在队列的顺序存储结构中,当插入一个新的队列元素时, 指针的值增 1,当删除一个元素队列时, 指针
23、的值增 1。 【尾 头】3.6 链队指针题1在一个链队中,假设 f 和 r 分别为队头和队尾指针,则删除一个结点的运算为( ) 。 【D】12 / 40Ar=f-next; Br=r-next; Cf=r-next; Df=f-next;2在一个链队中,设 f 和 r 分别为队头和队尾指针,则插入 s 所指结点的操作为_和 r=s; (结点的指针域为 next) 【r-next=s;】3在一个链队中,f 和 r 分别为队头和队尾指针,队结点的指针域为 next,s 指向一个要入队的结点,则入队操作为_;_; 【r-next=s;r=s;】4在一个链队中,f 和 r 分别为队头和队尾指针,队结点
24、的指针域为 next,则插入一个 s 所指结点的操作为_;r=s; 【r-next=s】5栈和队列的操作特点分别是_和 _。 【先进后出(后进先出) 先进先出 (后进后出) 】6在一个不带头结点的非空链队中,f 和 r 分别为队头和队尾指针,队结点的数据域为 data,指针域为 next,若要进行出队操作,并用变量 x 存放出队元素的数据值,则相关操作为_; _。【x=f-data; f=f-next;】7综合题(1)设 head1 和 p1 分别是不带头结点的单向链表 A 的头指针和尾指针,head2 和 p2分别是不带头结点的单向链表 B 的头指针和尾指针,若要把 B 链表接到 A 链表之
25、后,得到一个以head1 为头指针的单向循环链表,写出其中两个关键的赋值语句(不用完整程序,结点的链域为 next) 。(2)单向链表的链域为 next,设指针 p 指向单向链表中的某个结点,指针 s 指向一个要插入链表的新结点,现要把 s 所指结点插入 p 所指结点之后,某学生采用以下语句:p-next=s; s-next=p-next;这样做正确吗?若正确则回答正确,若不正确则说明应如何改写下面答案:(1)p1-next= head2;p2-next= head1;(2)不对,s-next= p-next;p-next=s;3.7 链队编程题1 编程题 以下函数为链队列的入队操作, x 为
26、要入队的结点的数据域的值,front 、rear 分别是链队列的队头、队尾指针struct node ElemType data;struct node *next;struct node *front,*rear;void InQueue(ElemType x) struct node *p;p= (struct node*) _(1)_; p-data=x; p-next=NULL; 13 / 40_(2)_; rear= _(3)_; 下面答案: (1) malloc(sizeof (struct node)(2 ) rear-next=p(3 ) p2 编程题 以下函数为链队列的出队操
27、作(链队列带有头结点) ,出队结点的数据域的值由 x 返回,front、rear 分别是链队列的队头、队尾指针struct node ElemType data;struct node *next;struct node *front,*rear;ElemType OutQueue()ElemType x;if(_(1)_) printf(“队列下溢错误! n“);exit(1); else struct node *p=front-next; x=p-data; front-next= _(2)_; if(p-next=NULL) rear=front; free(p); _(3)_; 下面
28、答案: (1)front= =rear(2 ) p-next(3 ) return(x)3.8 循环队列题1循环队列的队头指针为 f,队尾指针为 r,当_ _时表明队列为空。 【r= =f】2循环队列的最大存储空间为 MaxSize=6,采用少用一个元素空间以有效地判断栈空或栈满,若队头指针 front=4,当队尾指针 rear= _时队满,队列中共有_个元素。 【3;5】3循环队列的最大存储空间为 MaxSize=8,采用少用一个元素空间以有效的判断栈空或栈满,若队头指针 front=4,则当队尾指针 rear= _时,队列为空,当 rear= _时,队列有14 / 406 个元素。 【4
29、;2 】4循环队列的引入,目的是为了克服_ 。 【假上溢】5循环队列的最大存储空间为 MaxSize,队头指针为 f,队尾指针为 r,当_时表明队列已满。 【(r+1 ) % MaxSize = f 】4. 串4.1 串的基本概念性质:“”双引号内的字符串是以0 表示结束的。要多占一个字节。1在 C 语言中,顺序存储长度为 3 的字符串,需要占用( )个字节。 【】A3 B4 C6 D122在 C 语言中,利用数组 a 存放字符串“Hello” ,以下语句中正确的是( ) 。 【A 】Achar a10= “Hello”; Bchar a10; a=“Hello”;C char a10= He
30、llo; Dchar a10=H,e,l,l,o;3两个串相等的充分必要条件是_。 【串长度相等且对应位置的字符相等】4串的两种最基本的存储方式是_和 _。 【顺序存储 链式存储】5 A在存储时占_个字节。 “A”在存储时占 _个字节。 【1;2】6. 顺序存储字符串“ABCD”需要占用_个字节。 【5】4.2 串函数性质StrCmp 函数有三个结果:第一个字符串大于第二个字符串,结果:1第一个字符串等于第二个字符串,结果:0第一个字符串小于第二个字符串,结果:-1对应位置比较,根据 ASCII 码进行比较。数字编码最小,其次大写字母,其后是小写字母。1串函数 StrCmp(“d” , “D”
31、)的值为( ) 。 【B】A0 B1 C-1 D32串函数 StrCmp(“abA”,”aba”)的值为( ) 。 【D】15 / 40A1 B0 C “abAaba” D-14.5 串的编程题1程序段 int count=0; char *s=” ABCD”;while(*s!=0)s+;count+;执行后 count= _ _ 【4 】2 char *p; 【B】p=StrCat(“ABD”,”ABC”);Printf(“%s”,p);的显示结果为( ) 。A-1 BABDABC CAB D13程序段 char *s=”aBcD”;n=0;while(*s!=0) if(*sa(2) ;
32、(3) ;下面答案: (1)Postorder(BT-left)(2 ) Postorder(BT-right)(3 ) printf(“%c”,BT-data)3 编程题 以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为 left 和 right,数据域 data 为字符型,BT 指向根结点) 。23 / 40void Inorder (struct BTreeNode *BT) if(BT!=NULL)(1) ;(2) ;(3) ;下面答案: (1) Inorder(BT-left)(2 ) printf(“%c”,BT-data)(3 ) Inor
33、der(BT-right)6.6 哈夫曼树1设一棵哈夫曼树共有 n 个叶结点,则该树有( )个非叶结点。 【A】An-1 Bn Cn+1 D2n2一棵哈夫曼树有 12 个叶子结点(终端结点) ,该树总共有( )个结点。 【C】A22 B21 C23 D243 ( 1)以给定权重值 1,2,12 ,13,20,25 为叶结点,建立一棵哈夫曼树(2)若哈夫曼树有 n 个非叶子结点,则树中共有多少结点。对给定的一组权重值建立的棵哈夫曼树是否一定唯一下面答案6.7 树的遍历反过来做的题1 综合题 (1)已知某二叉树的后序遍历序列是 debca,中序遍历序列是 dbeac,试画出该二叉树(2)若上述二叉
34、树的各个结点的字符分别代表不同的整数(其中没有相等的) ,并恰好使该树成24 / 40为一棵二叉排序树,试给出 a、b、c、d、e 的大小关系(3)给出该树的前序遍历序列下面答案:2 综合题 (1)已知某二叉树的先序遍历序列是 aecdb,中序遍历序列是 eadcb,试画出该二叉树(2)给出上述二叉树的后序遍历序列(3)若上述二叉树的各个结点的字符分别是 1,2,3 ,4,5 ,并恰好使该树成为一棵二叉排序树,试问 a、b、c、d、e 的值各为多少?下面答案:7. 图7.1 图的基本概念P124:全部顶点的度数为所有边数的 2 倍,或者说,边数为全部顶点的度数的一半。1在一个无向图中,所有顶点
35、的度数之和等于边数的( )倍。 【D】A3 B2.5 C1.5 D22已知一个图的边数为 m,则该图的所有顶点的度数之和为( ) 。 【A】A2m Bm C2m+1 Dm/225 / 403已知一个图的所有顶点的度数之和为 m,则该图的边数为( ) 。 【D 】A2m Bm C2m+1 Dm/24以下说法不正确的是( ) 。 【D 】A连通图 G 一定存在生成树B连通图 G 的生成树中一定包含 G 的所有顶点C连通图 G 的生成树中不一定包含 G 的所有边D连通图 G 的生成树可以是不连通的5以下说法不正确的是( ) 。 【A】A连通图 G 的生成树一定是唯一的B连通图 G 一定存在生成树C连
36、通图 G 的生成树中一定要包含 G 的所有顶点D连通图 G 的生成树一定是连通而且不包含回路7.2 图的遍历1根据搜索方法的不同,图的遍历有_、 _ 两种方法 【深度优先 广度优先】2图的深度优先搜索和广度优先搜索序列不一定是唯一的。此断言是_的。(回答正确或不正确) 【正确】3已知如图 1 所示的一个图,若从顶点 a 出发,按广度优先搜索法进行遍历,则可能得到的一种顶点序列为( ) 。 【C】Aabcedf Baebcfd Cabcefd Dacfdeb4已知如图 1 所示的一个图,若从顶点 V1出发,按广度优先进行遍历,则可能得到的一种顶点序列为( ) 。 【C】AV 1V2V3V6V7V
37、4V5V8 BV 1V2V3V4V5V8V6V7CV 1V2V3V4V5V6V7V8 DV 1V2V3V4V8V5V6V726 / 407.3 图的最小生成树应用克鲁斯卡尔算法构造最小生成树的过程应用克鲁斯卡尔算法构造最小生成树的过程27 / 407.5 图的连通性1以下说法正确的是( ) 。 【D 】A连通图 G 的生成树中不一定包含 G 的所有顶点B连通图 G 的生成树中一定要包含 G 的所有边C连通图 G 的生成树一定是唯一的D连通图 G 一定存在生成树8. 查找8.1 顺序查找1对长度为 n 的线性表进行顺序查找,在等概率情况下,平均查找长度为( ) 。 【B】An B (n+1)/2
38、 C2n Dn-12采用顺序查找法对长度为 n 的线性表进行查找(不采用表尾设监视哨的方法) ,最坏的情况下要进行( )次元素间的比较。 【B】An+2 Bn Cn-1 Dn/28.2 折半查找1在有序表2,4,7,14,34,43,47,64,75,80,90,97,120中,用折半查找法查找值 80时,经( )次比较后查找成功。 【】A2 B3 C4 D52有一个长度为 10 的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为( A ) 。A29/10 B31/10 C26/10 D29/93在有序表1,3,8,13 , 33,42,46,63,76,78 , 86
39、,97 ,100 中,用折半查找值 86 时,经( )次比较后查找成功。 【D】A6 B3 C8 D44用折半查找法,对长度为 12 的有序的线性表进行查找,最坏情况下要进行( )次元素间的比较 【A】A4 B3 C5 D65 综合题 设有序表为(13,19,25,36,48,51 ,63,84 ,91,116,135,200) ,元素的下标依次为 1,2,12。 (1)说出有哪几个元素需要经过 4 次元素间的比较才能成功查到(2 )画出对上述有序表进行折半查找所对应的判定树(树结点用下标表示)(3 )设查找元素 5,需要进行多少次元素间的比较才能确定不能查到下面答案:28 / 406折半查找
40、只适用于_存储的有序表 。 【顺序存储结构】7有序表为1,2,4,6 ,10,18,20,32,用课本中折半查找算法查找值 18,经( )次比较后成功查到。 【B】A3 B2 C4 D58.3 二叉排序树1二叉树为二叉排序的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法是_的。( 回答正确或不正确) 【不正确】2 综合题 (1)对给定数列7,16,4,8,20,9,6,18,5,依次取数列中的数据,构造一棵二叉排序树。(2 )对一个给定的查找值 ,简述针对二叉排序树进行查找的算法步骤,在上述二叉树中查找元素 20 共要进行多少次元素的比较?下面答案:29 / 403
41、 综合题(1)“一棵二叉树若它的根结点的值大于左子树所有结点的值,小于右子树所有结点的值,则该树一定是二叉排序树” 。该说法是否正确,若认为正确,则回答正确,若认为不正确则说明理由?(2)设有查找表7,16,4,8,20,9,6,18,5,依次取表中数据构造一棵二叉排序树 . 对上述二叉树给出后序遍历的结果.下面答案:4二叉树排序中任一棵子树都是二叉排序树,这种说法是_ 的。(回答正确或不正确) 【正确】5 综合题(1 )设有一个整数序列40 ,28,6 ,72 ,100,3,54依次取出序列中的数,构造一棵二叉排序树(2)对上述二叉排序树,在等概率条件下,求成功查找的平均查找长度下面答案:6
42、 综合题(1 )给定数列8,17,5 ,9,21,10,7,19,6,依次取序列中的数构造一棵二叉排序树 (2 )对上述二叉树给出中序遍历得到的序列。30 / 40下面答案:7 综合题(1 )设有一个整数序列50 ,38,16,82,110,13,64,依次取出序列中的数,构造一棵二叉排序树(2)利用上述二叉排序树,为了查找 110,经多少次元素间的比较能成功查到,为了查找15,经多少次元素间的比较可知道查找失败下面答案:8.4 二叉判定树解析:写判定树最重要是每次找子树对应的顶点1 综合题 设查找表为(16,15,20,53,64,7),(1)用冒泡法对该表进行排序(要求升序排列) ,写出每一趟的排序过程,通常对 n 个元素进行冒泡排序要进行多少趟冒泡?第 j 趟要进行多少次元素间的比较?(2)在排序后的有序表的基础上,画出对其进行折半查找所对应的判定树.(要求以数据元素作为树结点)(3)求在等概率条件下, 对上述有序表成功查找的平均查找长度.2 综合题(1 )画出对长度为 10 的有序表进行折半查找的判定树(以序号 1,2 ,10 表示树结点) (2)对上述序列进行折半查找,求等概率条件下,成功查找的平均查找长度