数据结构前6章基本练习题网络161162.docx
- 文档编号:3778139
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:13
- 大小:34.76KB
数据结构前6章基本练习题网络161162.docx
《数据结构前6章基本练习题网络161162.docx》由会员分享,可在线阅读,更多相关《数据结构前6章基本练习题网络161162.docx(13页珍藏版)》请在冰豆网上搜索。
数据结构前6章基本练习题网络161162
数据结构基本概念练习题
1、选择练习题
1)执行下面程序段时,执行S语句的次数为-------
for(intI=1;I<=n;I++)
for(intj=1;j<=I;j++)
S;
(A)n^2(B)n^2/2(C)n(n+1)(D)n(n+1)/2
答案:
D
2)算法是指令的有限序列,其中每一条指令表示一个或多个操作。
下列______不属于算法的五个特性之一。
(A)有一或多个输出(B)有零或多个输入(C)有穷性(D)通俗易懂性
答案:
DD
3)若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
(A)顺序表(B)双链表(C)带头结点的双循环链表(D)单循环链表
答案:
A
4)下面的叙述正确的是()
(A)线性表在链式存储时,查找第i个元素的时间同i的值成正比;
(B)线性表在链式存储时,查找第i个元素的时间同i的值无关;
(C)线性表在顺序存储时,查找第i个元素的时间同i的值成正比;
(D)以上说法都不对.
答案:
A
5)若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
(A)单链表 (B)顺序表(C)单向循环链表(D)双链表
答案:
B
6)在双向链表指针p指向的结点前插入一个指针q指向的结点操作是()。
(A)p->prior=q;q->next=p;p->prior->next=q;q->prior=q;
(B)p->prior=q;p->prior->next=q;q->next=p;q->Prior=p->prior;
(C)q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;
(D)q->prior=p->prior;q->next=q;p->prior=q;p->prior=q;
答案:
C
7)设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
(A)线性表的顺序存储结构(B)队列(C)线性表的链式存储结构(D)栈
答案:
D
8)若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是()。
(A)top=top+1;V[top]=x(B)V[top]=x;top=top+1(C)top=top-1;V[top]=x
(D)V[top]=x;top=top-1
答案:
C
9)若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
()
(A)1和5(B)2和4(C)4和2(D)5和1
答案:
B
10)设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。
(A)fedcba(B)bcafed(C)dcefba(D)cabdef
答案:
D
11)假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。
(A)808(B)818(C)1010(D)1020
答案:
B
12)数组A[0..4,-1..-3,5..7]中含有元素的个数()。
(A)55(B)45(C)36(D)16
答案:
B
13)A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。
(A)i(i-1)/2+j(B)j(j-1)/2+i(C)i(j-i)/2+1(D)j(i-1)/2+1
答案:
B
14)对稀疏矩阵进行压缩存储目的是()。
(A)便于进行矩阵运算(B)便于输入和输出(C)节省存储空间(D)降低运算的时间复杂度
答案:
C
15)对广义表L=(a,())执行操作tail(L)的结果是()
(A)()(B)(())(C)a(D)(a)
答案:
B
16)具有10个叶结点的二叉树中至少有()个度为2的结点
(A)8(B)9(C)10(D)11
答案:
B
17)当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将数据存放在一维数组A[l..n]中时,数组中第i个结点的左孩子为()
(A)A[2i](2i<=N)(B)A[2i+1](2i+1<=n)(C)A[i/2](D)无法确定
答案:
D
18)二叉树的先序遍历和中序遍历如下:
先序遍历:
EFHIGJK;中序遍历:
HFIEJKG。
该二叉树根的右子树的根是()
(A)E(B)F(C)G(D)H
答案:
C
19)由3个结点可以构造出多少种不同的二叉树?
()
(A)2(B)3(C)4(D)5
答案:
D
20)n个结点的线索二叉树上含有的线索数为()
(A)2n(B)n-l(C)n+l(D)n
答案:
C
21)数据结构的定义为(d,R),其中d是 的集合。
B
(A)算法(B)数据元素(C)数据操作(D)逻辑结构
22)基本的逻辑结构包括( D)。
(A)树型结构、图状结构、线性结构和非线性结构
(B)集合结构、线性结构、树型结构和非线性结构
(C)集合结构、树型结构、图状结构和非线性结构
(D)集合结构、线性结构、树型结构和图状结构
23)数据结构是一门研究计算机中 对象及其关系的学科。
B
(A)数值预算(B)非数值运算(C)集合(D)非集合
23)下面程序段的时间复杂度为(C)。
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
A[i,j]=i*j;
注:
m的平方表示为m^2
(A)O(m^2)(B)O(n^2)(C)O(m*n)(D)O(m+n)
24)数据的运算定义在数据的逻辑结构上,只有确定了( C ),才能具体实现这些运算。
(A)数据对象(B)逻辑结构(C)存储结构(D)数据操作
25)下面程序段执行的时间复杂度为( C )。
for(i=1;i<=n;i++)
for(j=1;j<=i;j++) s++;
(A)O(n)(B)O(lgn)(C)O(n^2)(D)O(n^3)
26)对于顺序表的优缺点,以下说法错误的是( C )。
(A)无需为表示结点间的逻辑关系而增加额外的存储空间
(B)可以方便地随机存取表中的任一结点
(C)插入和删除运算较方便
(D)容易造成一部分空间长期闲置而得不到充分利用
27)对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是(B)。
(A)head==NULL(B)head->next==NULL(C)head->next==head(D)head!
=NULL
28一个顺序表第一个元素的存储地址是100,每个元素的存储长度为4,则第5个元素的地址是( B )。
(A)110(B)116(C)100(D)120
29)当对线性表的操作是以插入操作和删除操作为主时或当线性表的长度不能确定或表长变化很大时,应选择( B )作为线性表的存储结构。
(A)顺序表(B)链表(C)栈(D)队列
30)设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(D)最节省时间。
(A)单链表(B)单循环链表(C)带尾指针的单循环链表(D)带头结点的双循环链表
31)在双向链表指针p指向的结点前插入一个指针q指向的结点操作是(C)。
(A)p->prior=q;q->next=p;p->prior->next=q;q->prior=q;
(B)p->prior=q;p->prior->next=q;q->next=p;q->Prior=p->prior;
(C)q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;
(D)q->prior=p->prior;q->next=q;p->prior=q;p->prior=q;
32)在一个单链表中,若删除P结点的后继结点,则__A___
(A)p->next=p->next->next;
(B)p=p->next;p->next=p->next->next;
(C)p->next=p->next;
(D)p=p->next->next;
33)若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用(B)存储方式最节省时间。
(A)单链表 (B)顺序表(C)单向循环链表(D)双链表
34)一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是(B)。
(A)不确定(B)n-i+1(C)i(D)n-i
35)设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是(C)。
(A)XYZ(B)YZX(C)ZXY(D)ZYX
36)用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时(D)。
(A)仅修改队头指针
(B)仅修改队尾指针
(C)队头、队尾指针都要修改
(D)队头,队尾指针都可能要修改
37)串的长度是指(B)
(A)串中所含不同字母的个数(B)串中所含字符的个数
(C)串中所含不同字符的个数(D)串中所含非空格字符的个数
38)二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。
若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素(B)的起始地址相同。
设每个字符占一个字节。
(A)A[8,5](B)A[3,10](C)A[5,8](D)A[0,9]
39)对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( C)次序的遍历实现编号。
(A)先序(B)中序(C)后序(D)从根开始按层次遍历
40)在中国,孔氏家族是影响最大的家族。
据历史记载,其家族发展到今天已至少有76代。
如果按照我国当前最多二胎化的生育政策,试问第75代孔氏家族的人口最多可以达到().
(A)274(B)276(C)275(D)273
41)在第40)题的题设上,试问孔家繁衍到76代时,孔氏家族在中国的总人口至多可以达到().
(A)276-1(B)275-1(C)277-1(D)276
2、判断练习题
1)数据元素之间的关系可以概括为四类基本结构:
集合结构、线性结构、树形结构、图形结构。
(Yes)
2)线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
(No)
3)抽象数据类型ADT的定义包括三部分:
对象、关系、操作。
(Y)
4)顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
(N)
5)线性表的逻辑顺序与物理顺序总是一致的。
(N)
6)两个栈共用静态存储空间,对头使用也存在空间溢出问题。
(Y)
7)栈和队列都是顺序存取的线性表,但它们对存取位置的限制不同。
(Y)
8)数组不适合作为任何二叉树的存储结构。
(N)
9)一棵树中的叶子数一定等于与其对应的二叉树的叶子数。
(N)
10)树形结构中元素之间存在一个对多个的关系。
(Y)
11)数据元素是数据的最小单位。
(N)
12)循环链表不是线性表.(N)
13)线性表的逻辑顺序与物理顺序总是一致的。
(N)
14)两个栈共用静态存储空间,对头使用也存在空间溢出问题。
(Y)
15)不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。
(Y)
16)稀疏矩阵压缩存储后,必会失去随机存取功能。
(Y)
17)广义表的取表尾运算,其结果通常是个表,但有时也可是个单元素值。
(N)
18)数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。
(N)
19)已知一棵树的先序序列和后序序列,一定能构造出该树。
(N)
20)将一棵树t转换为孩子—兄弟链表表示的二叉树h,则t的后根序遍历是h的前序遍历。
(N)
21)二叉树与树的二叉链表存储结构形态一样,而且左右指针的含义也一样。
(N)
22)完全二叉树的顺序存储结构比二叉链表存储结构的结点访问效率要高。
(Y)
23)非空树的二叉链表存储结构(即孩子兄弟存储结构)的右指针一定非空。
(N)
24)在串的顺序存储结构上实施传的连接和插入算法时,是不考虑溢出问题。
(N)
25)串是操作受限的线性结构。
(N)
26)栈是数据元素受限的线性结构(N)
27)队列是仅限制在线性表的一端进行进队(插入)和出队(删除)的线性表。
(N)
28)线性表链式存储结构中的任何一个元素都是可以随机访问的。
(N)
29)在单链表中要删除第i个结点,必须先要找到其前驱结点,即第i-1个结点才能实施删除操作。
(Y)
30)稀疏矩阵的链式存储结构,一般使用三元组表来实施存储。
(N)
3、填空练习题
1)在长度为N的顺序表中插入一个元素,需要平均移动()个元素。
答案:
n/2
2)设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是().3
3)空格串的长度为串中所包含空格字符的个数,空串的长度为()0
4)广义表L=((a,b)),其长度为()。
1
5)在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶节点个数是()。
82
6)一棵具有n个叶子结点的哈夫曼树中,结点总数为()。
2n-1
7)深度为h(空二叉树的深度为0)的二叉树,最少有()个结点。
h
8)已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是()。
111
9)若一棵完全二叉树有768个节点,则该二叉树中叶子节点的个数是()384
10)已知深度为7的完全二叉树的第7层有10个叶子结点,则第6层有()个叶子结点。
27
11)具有3个结点的二叉树有()种。
5
12)在长度为400的顺序表中,在第100个元素前插入一个元素,需要移动( )个元素。
301
13)设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是( ). 3
14)设s='helloworld',串中第一个字符位置为1。
SubString(sub1,s,4,3)操作后,sub1的值为()。
(答案不要带引号)low
15)已知二维数组A[0…20][0…10]采用以行序为主的存储方式,每个元素占4个存储单元,并且A[0][0]的存储地址是1016,则A[10][5]的存储地址是()。
1476
16)将一个10阶的下三角矩阵A按列优先顺序压缩存储在一维数组C中,则C的大小应为()。
55
17)哈夫曼树是一个没有度为结点的二叉树。
1
18)已知一棵二叉树的先序序列为ABDFCE,中序序列为DFBACE,则后序序列为()。
FDBECA
19)采用二叉链表存放30个结点的二叉树,空链域的个数为()。
31
20)HEAD[((a,b),(c,d))]=.(a,b)
21)TAIL[HEAD[((a,b),(c,d))]]=.(b)
数据结构解答应用与算法练习题
一、解答与应用题
1.给出下列图1所示二叉树的中序遍历序列,并对其中序遍历线索化,最后将其转换为森林;对图2所示树分别进行先序和后序遍历,并将其转换为二叉树。
图1二叉树
图2树
2.若一报文系统所采用的字符集为{A,B,E,F,S,T},各字符的使用频度分别为:
0.19,0.11,0.09,0.25,0.18,0.15。
拟以这些字符构建一报文系统,要求完成:
1)画出构造好的Huffman编码树(构造过程可不画,只画最终构造好的的Huffman树;要求:
在构造Huffman树的过程中,当用两棵子树构造一棵新树时,根结点权值小者作为左子树);
2)画出所构造Huffman树的静态三叉链表存储结构;
3)写出报文字符集中各字符对应的Huffman编码;
4)若接收的某报文编码串为:
01101011111011001000,请将其翻译成对应的报文原文。
3.假设一棵二叉树的先序遍历序列为EBADCFHGIKJ,中序遍历序列为ABCDEFGHIJK,画出其对应的二叉树。
(举一反三:
由先序遍历序列和后序遍历序列可画出其对应的树)。
4.分别画出广义表A=(a,b,(c,d))的两种存储结构图(头尾链表和扩展线性链表)
5.已知一个带有表头结点的单链表,结点结构包括两个域,数据域data,指针域link,
假设该链表只给出了头指针list。
在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。
若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。
要求:
(1)描述算法的基本设计思想
(2)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C或C++或JAVA语言实现),关键之处请给出简要注释。
(3)说明你所设计算法的时间复杂度和空间复杂度
答案:
(1)算法基本思想如下:
从头至尾遍历单链表,并用指针P指向当前节点的前K个节点。
当遍历到链表的最后一个节点时,指针P所指向的节点即为所查找的节点。
(2)算法描述:
IntLocateElement(linklistlist,intk)
{ P1=list->link;
P=list;
i=1;
while(P1)
{ P1=P1->link;
i++;
if(i>k) p=p->next;//如果i>k,则p也往后移
}
if(p==list)return0; //说明链表没有k个结点
else
{
printf(“%d\n“,p->data);
return1;
}
}
(3)时间复杂度O(n),空间复杂度O
(1)
6、分别写出判别顺序栈和链栈栈空与栈满的C语言语句;分别写出判循环队列和链队列队空与队满的C语言语句。
二、算法
1、中序遍历二叉树的递归算法
voidInOrder(BiTreeroot)
//中序遍历二叉树(假设二叉树结点数据元素类型为字符型),root为指向二叉树//(或某一子树)根结点的指针
{
if(root!
=NULL)
{
InOrder(root->LChild);//中序遍历左子树
(1)//访问或输出根结点
(2)//中序遍历右子树
}
}
答案:
Visit(root->data);或printf("%c",root->data);
InOrder(root->RChild);
2、在带头结点的单链表中,删除一个结点的算法
intDelList(LinkListL,inti,ElemType*e)
/*在带头结点的单链表L中删除第i个元素,并将删除的元素保存到变量*e中*/
{Node*pre,*r;
intk;
pre=L;
k=0;
while(pre->next!
=NULL&&k { (1); k=k+1; }/*查找第i-1个结点*/ if(! (pre->next))/*即while循环是因为p->next=NULL或i<1而跳出的,而是因为没有找到合法的前驱位置,说明删除位置i不合法。 */ { printf("删除结点的位置i不合理! "); returnERROR; } (2); (3);/*修改指针,删除结点r*/ (4); (5); printf("成功删除结点! "); returnOK; } 答案: (1)pre=pre->next; (2)r=pre->next; (3)pre->next=pre->next->next; (4)*e=r->data; (5)free(r); 3、intStrIndex(SStrings,intpos,SStringt) /*求从主串s的下标pos起,串t第一次出现的位置,成功返回位置序号,不成功返回-1*/ { inti,j; if(t.len==0) return(0); i=pos; j=0; while(i (1)____) if( (2)) { i++; j++; } else { i=(3); j=0; } if(j>=t.len) return(i-j); else return(-1); } 答案: (1)j (2)s.ch[i]==t.ch[j] (3)i-j+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 基本 练习题 网络 161162