数据结构期末复习题含答案.docx
- 文档编号:26700961
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:19
- 大小:39.19KB
数据结构期末复习题含答案.docx
《数据结构期末复习题含答案.docx》由会员分享,可在线阅读,更多相关《数据结构期末复习题含答案.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构期末复习题含答案
一、选择题/填空题:
以基本概念基本性质为主
数据元素的逻辑结构、物理结构;
算法的时间复杂度、空间复杂度的概念;时间复杂度的简单计算
(如i=1;While(i<=n)i=i*2;
如fact(intn){if(n<=1)return1;elsereturn(n*fact(n-1));});
线性表采用顺序存储结构时,任意元素ai的存储地址的计算;
栈的概念(栈顶、栈底)、性质(LIFO);
队列的概念(队头、队尾)、性质(FIFO)、循环队列的特点(队列为空、满的条件);
后缀表达式计算(836*+235*+4-/);中缀、后缀表达式的相互转换((8+3*6)/(2+3*5-4));
树与二叉树的相关术语(根、兄弟、祖先、深度等);
二叉树的性质及扩展应用(对500个元素利用折半查找法进行查找时,其最大比较次数,n个结点的k叉树,可能达到的最大深度、最小深度,等);
二叉树的遍历;
图与网的基本概念;
图的遍历;最小生成树、最短路径、关键路径的概念;
各种排序方法的比较(在待排序的元素序列基本有序的前提下,效率最高的排序方法,最不提倡使用的排序方法,排序方法中平均查找长度最小的方法,等);
各种查找方法的比较(如果要求一个线性表既能快速的查找,又能适应动态变化的要求,可以采用的查找方法,等)。
二、选择填空题
以单链表的插入、删除操作为主:
已知L是无表头结点的单链表,且P既不是首结点,也不是尾结点,请在下列语句中选择适当的语句序列填空。
①P->next=S;
②P->next=P->next->next;
③P->next=S->next;
④S->next=P->next;
⑤S->next=L;
⑥S->next=NULL;
⑦Q=P;
⑧While(P->next!
=Q)P=P->next;
⑨While(P->next!
=NULL)P=P->next;
⑩P=P->next;
⑾P=L;
⑿L=S;
⒀L=P;
a、在P结点后插入S结点41
b、在P结点前插入S结点711841
c、在表首插入S结点512
d、在表尾插入S结点916
已知L是带表头结点的非空单链表,且P既不是首结点,也不是尾结点,请在下列语句中选择适当的语句序列填空。
①P=P->next;
②P->next=P;
③P->next=P->next->next;
④P=P->next->next;
⑤While(P!
=NULL)P=P->next;
⑥While(Q->next!
=NULL){P=Q;Q=Q->next;}
⑦While(P->next!
=Q)P=P->next;
⑧While(P->next->next!
=Q)P=P->next;
⑨While(P->next->next!
=NULL)P=P->next;
⑩Q=P;
⑾Q=P->next;
⑿P=L;
⒀L=L->next;
⒁Free(Q);
e、删除P结点的直接后继11314
f、删除P结点的直接前趋1012811314
g、删除P结点10127314
h、删除首结点12101314
i、删除尾结点11614
三、补充算法/算法设计
单链表的插入、删除算法;双链表的插入、删除算法;顺序栈的插入、删除算法;利用栈进行数制转换的算法;二叉树遍历的算法;折半查找的算法;插入排序、起泡排序、快速排序算法。
单链表的插入、删除算法
voidListInsert_Sq(SqList&L,inti,ElemTypee)
{//在L中第i个位置之前插入新的数据元素e
if(i<1||i>L.length+1)ErrorMessage(“ierror”);
if(L.length>=L.listsize)incrememt(L);
q=&(L.elem[i-1]);//q为插入位置
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(P+1)=*P;
*q=e;
++L.length;
}//ListInsert_Sq
voidListDelete_Sq(SqLisst&L,inti,ElemType&e)
{//删除L的第i个数据元素,并用e返回其值
if(i<1||i>L.length)ErrorMessage(“ierror”);
p=&(L.elem[i-1]);//p为删除元素位置
e=*p;
q=L.elem+L.length-1;//表尾元素的位置
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length;
returnOK;
}//ListDelete_Sq
双链表的插入、删除算法
StatusListInsert_DuL(DuLinkList&L,inti,ElemTypee)
{//在带头节点的双向链表L中第i个位置之前插入元素e
if(!
(p=GetElem_DuL(L,i)))
returnERROR;
s=new(DuLNode);
s->data=e;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
returnOK;
}
StatusListDelete_DuL(DuLinkList&L,inti,ElemType&e)
{//删除带头节点的双向链表L的第i个元素、
if(!
(p=GetElem_DuL(L,i)))
returnERROR;
e=p->data;
p->prior->next=p->next;
p->next->prior=p->prior;
deletep;
returnOK;
}
顺序栈的插入、删除算法
voidPush_Sq(SqStack&S,SElemTypee)
{//将新元素e压入栈中作为新的栈顶元素
if(S.top==S.stacksize)incrementStacksize(S);//若栈已满,则重新分配存储空间,并追加S.incrementsize个元素空间。
S.elem[++S.top]=e;
}//Push_Sq
boolPop_Sq(SqStack&S,SElemType&e)
{//若栈不空,则用e返回栈顶元素,并返回TRUE,否则,返回FALSE
if(S.top==-1)returnFALSE;
e=S.elem[S.top--];
returnTRUE;
}//Pop_Sq
利用栈进行数制转换的算法
Voidconversion(intN)
{//
InitStack(S);
While(N)
{push(S,N%8);N=N/8;}//while
While(!
StackEmpty)
{Pop(S,e);cout< }//conversion ;二叉树遍历的算法 选择题 1.算法分析的目的是①C,算法分析的两个主要方面是②A。 ①A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进D.分析算法的易懂性和文档性 ②A.空间复杂性和时间复杂性B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 2.计算机算法指的是①C,它必具备输入、输出和②B等五个特性。 ①A.计算方法B.排序方法 C.解决问题的有限运算序列D.调度方法 ②A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性 C.确定性、有穷性和稳定性D.易读性、稳定性和安全性 3.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是_B__。 A.110B.108C.100D.120 4.线性表的顺序存储结构是一种_A__的存储结构,而链式存储结构是一种__C_的存储结构。 A.随机存取B.索引存取C.顺序存取D.散列存取 5.线性表的逻辑顺序与存储顺序总是一致的,这种说法__B_。 A.正确B.不正确 6.线性表若采用链式存储结构时,要求内存中可用存储单元的地址_D__。 A.必须是连续的B.部分地址必须是连续的 C.一定是不连续的D.连续或不连续都可以 7.在以下的叙述中,正确的是_C_。 A.线性表的顺序存储结构优于链表存储结构 B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况 C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况 D.线性表的链表存储结构优于顺序存储结构 8.每种数据结构都具备三个基本运算: 插入、删除和查找,这种说法__B_。 A.正确B.不正确 9.不带头结点的单链表head为空的判定条件是__A__。 A.head==NULLB.head->next==NULL C.head->next==headD.head! =NULL 10.带头结点的单链表head为空的判定条件是__B__。 A.head==NULLB.head->next==NULL C.head->next==headD.head! =NULL 11.非空的循环单链表head的尾结点(由p所指向)满足_C___。 A.p->next==NULLB.p==NULL C.p->next==headD.p==head 12.在双向循环链表的p所指结点之后插入s所指结点的操作是_D___。 A.p->right=s;s->left=p;p->right->left=s;s->right=p->right; B.p->right=s;p->right->left=s;s->left=p;s->right=p->right; C.s->left=p;s->right=p->right;p->right=s;p->right->left=s; D.s->left=p;s->right=p->right;p->right->left=s;p->right=s; 13.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行__C__。 A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p; C.q->next=s;s->next=p;D.p->next=s;s->next=q; 14.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行_B___。 A.s->next=p;p->next=s;B.s->next=p->next;p->next=s; C.s->next=p->next;p=s;C.p->next=s;s->next=p; 15.在一个单链表中,若删除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; 16.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较_D___个结点。 A.nB.n/2C.(n-1)/2D.(n+1)/2 17.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是__B__。 A.O (1)B.O(n)C.O(n2)D.O(nlog2n) 18.一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是_C___。 A.edcbaB.decbaC.dceabD.abcde 19.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为___C_。 A.iB.n=iC.n-i+1D.不确定 20.向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行__C__。 (不带空的头结点) A.HS—>next=s; B.s—>next=HS—>next;HS—>next=s; C.s—>next=HS;HS=s; D.s—>next=HS;HS=HS—>next; 21.从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行__D__。 (不带空的头结点) A.x=HS;HS=HS—>next;B.x=HS—>data; C.HS=HS—>next;x=HS—>data;D.x=HS—>data;HS=HS—>next; 22.一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是_B___。 A.4,3,2,1B.1,2,3,4 C.1,4,3,2D.3,2,4,1 23.判定一个循环队列QU(最多元素为m0)为空的条件是C__。 A.rear-front==m0B.rear-front-1==m0 C.front==rearD.front==rear+1 24.判定一个循环队列QU(最多元素为m0,m0==Maxsize-1)为满队列的条件是_A__。 A.((rear-front)+Maxsize)%Maxsize==m0 B.rear-front-1==m0C.front==rearD.front==rear+1 25.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是_A___。 A.(rear-front+m)%mB.rear-front+1 C.rear-front-1D.rear-front 26.栈和队列的共同点是_C___。 A.都是先进后出B.都是先进先出 C.只允许在端点处插入和删除元素D.没有共同点 27.设有两个串p和q,求q在p中首次出现的位置的运算称作_B___。 A.连接B.模式匹配 C.求子串D.求串长 28.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是_D___。 A.BCDEFB.BCDEFG C.BCPQRSTD.BCDEFEF 29.设串的长度为n,则它的子串个数为C。 A.nB.n(n+1)C.n(n+1)/2D.n(n+1)/2+1 30.二维数组A中,每个元素的长度为3个字节,行下标i从0到7,列下标j从0到9,从首地址SA开始连续存放在存储器内,存放该数组至少需要的字节数是_C___。 A.80B.100C.240D.270 31.二维数组A中,每个元素A的长度为3个字节,行下标i从0到7,列下标j从0到9,从首地址SA开始连续存放在存储器内,该数组按行存放时,数组元素A[7][4]的起始地址为_C___。 A.SA+141B.SA+144C.SA+222D.SA+225 32.二维数组A中,每个元素A的长度为3个字节,行下标i从0到7,列下标j从0到9,从首地址SA开始连续存放在存储器内,该数组按列存放时,元素A[4][7]的起始地址为_B___。 A.SA+141B.SA+180C.SA+222D.SA+225 33.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为B个。 A.15B.16C.17D.47 34.按照二叉树的定义,具有3个不同数据结点的不同的二叉树有_C___种。 A.5B.6C.30D.32 35.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为__B__。 A.2hB.2h-1C.2h+1D.h+1 36.对一个满二叉树,m个树叶,n个结点,深度为h,则__D__。 A.n=h+mB.h+m=2nC.m=h-1D.n=2h-1 37.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序_A___。 A.不发生改变B.发生改变C.不能确定D.以上都不对 38.如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为__C__。 A.uwvtsB.vwutsC.wuvtsD.wutsv 39.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法__A__。 A.正确B.错误 40.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是_D___。 A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca 41.在一非空二叉树的中序遍历序列中,根结点的右边A____。 A.只有右子树上的所有结点B.只有右子树上的部分结点 C.只有左子树上的部分结点D.只有左子树上的所有结点 42.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。 这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。 结论__A__是正确的。 A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同 B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同 D.以上都不对 43.树最适合用来表示__C__。 A.有序数据元素B.无序数据元素 C.元素之间具有分支层次关系的数据D.元素之间无联系的数据 44.关键路径是事件结点网络中A。 A.从源点到汇点的最长路径B.从源点到汇点的最短路径 C.最长的回路D.最短的回路 45.下面不正确的说法是A。 (1)在AOE网中,减小一个关键活动上的权值后,整个工期也就相应减小; (2)AOE网工程工期为关键活动上的权之和; (3)在关键路径上的活动都是关键活动,而关键活动也必在关键路径上。 A. (1)B. (2)C.(3)D. (1)、 (2) 46.对于一个有向图,若一个顶点的入度为k1,、出度为k2,则对应逆邻接表中该顶点单链表中的结点数为A。 A.k1B.k2C.k1-k2D.k1+k2 47.顺序查找法适合于存储结构为_B___的线性表。 A.散列存储B.顺序存储或链接存储 C.压缩存储D.索引存储 48.对线性表进行二分查找时,要求线性表必须_C___。 A.以顺序方式存储B.以链接方式存储 C.以顺序方式存储,且结点按关键字有序排序 D.以链接方式存储,且结点按关键字有序排序 49.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为_C___. A.nB.n/2C.(n+1)/2D.(n-1)/2 50.采用二分查找方法查找长度为n的线性表时,每个元素的平均查找长度为___D_。 A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n) 51.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当二分查找值82为的结点时,_C___次比较后查找成功。 A.1B.2C.4D.8 52.设哈希表长m=14,哈希函数H(key)=key%11。 表中已有4个结点: addr(15)=4;addr(38)=5;addr(61)=6;addr(84)=7 如用二次探测再散列处理冲突,关键字为49的结点的地址是_D___。 A.8B.3C.5D.9 53.有一个长度为12的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为___B_。 A.35/12B.37/12C.39/12D.43/12 54.对于静态表的顺序查找法,若在表头设置岗哨,则正确的查找方式为C。 A.从第0个元素往后查找该数据元素 B.从第1个元素往后查找该数据元素 C.从第n个元素往开始前查找该数据元素 D.与查找顺序无关 55.对于查找表的查找过程中,若被查找的数据元素不存在,则把该数据元素插入到集合中。 这种方式主要适合于B。 A.静态查找表B.动态查找表 C.静态查找表与动态查找表D两种表都不适合 53.散列表的平均查找长度A。 A.与处理冲突方法有关而与表的长度无关 B.与处理冲突方法无关而与表的长度有关 C.与处理冲突方法有关而与表的长度有关 D.与处理冲突方法无关而与表的长度无关 57.在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是_D___。 A.希尔排序B.起泡排序C.插入排序D.选择排序 58.设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用_C___排序法。 A.起泡排序B.快速排序C.堆排序D.基数排序 59.在待排序的元素序列基本有序的前提下,效率最高的排序方法是__A_。 A.插入排序B.选择排序C.快速排序D.归并排序 60.一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为_B___。 A.79,46,56,38,40,80B.84,79,56,38,40,46, C.84,79,56,46,40,38D.84,56,79,40,46,38 61.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为_C__。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 复习题 答案