




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构习题答案第一节 概 论一、选择题1要求同一逻辑结构的所有数据元素具有相同的特性,这意味着( )。A数据元素具有同一的特点 B不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 C每个数据元素都一样 D数据元素所包含的数据项的个数要相等2数据结构是一门研究非数值计算的程序设计问题中计算机的( (1) )以及它们之间的( (2) )和运算的学科。(1) A操作对象 B计算方法 C物理存储 D数据映像(2) A结构 B关系 C运算 D算法3数据结构被形式地定义为(D,R),其中D是( (1) )的有限集合,R是D上( (2) )的有限集合。 (1) A算法 B数据元素 C数据操
2、作 D逻辑结构 (2)A操作 B映像 C存储 D关系4在数据结构中,从逻辑上可以把数据结构分为( )。A动态结构和静态结构 B紧凑结构和非紧凑结构 C线性结构和非线性结构 D内部结构和外部结构5线性表的顺序存储结构是一种( )的存储结构。A随机存取 B顺序存取 C索引存取 DHash存取6算法分析的目的是( )。A找出数据结构的合理性 B研究算法中的输入和输出的关系 C分析算法的效率以求改进 D分析算法的易懂性和文档性7计算机算法指的是( (1) ),它必须具备输入、输出和( (2) )等五个特征。 (1) A计算方法 B排序方法 C解决某一问题的有限运算序列 D调度方法 (2) A可行性、可
3、移植性和可扩充性 B可行性、确定性和有穷性 C确定性,有穷性和稳定性 D易读性、稳定性和安全性8线性表若采用链表存储结构,要求内存中可用存储单元的地址( )。A必须是连续的 B部分必须是连续的 C一定是不连续的 D连续不连续都可以9在以下的叙述中,正确的是( )。A线性表的线性存储结构优于链式存储结构 B二维数组是它的每个数据元素为一个线性表的线性表 C栈的操作方式是先进先出 D队列的操作方式是先进后出10根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式,其中解释错误的是( )。A集合中任何两个结点之间都有逻辑关系但组织形式松散 B线性结构中结点按逻辑关系依次
4、排列形成一条“锁链” C树形结构具有分支、层次特性,其形态有点像自然界中的树 D图状结构中的各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接11以下说法正确的是( )。A数据元素是数据的最小单位 B数据项是数据的基本单位 C数据结构是带有结构的各数据项的集合 D数据结构是带有结构的数据元素的集合二、判断题1数据元素是数据的最小单位。2数据结构是带有结构的数据元素的集合。3数据结构、数据元素、数据项在计算机中的映像分别称为存储结构、结点、数据域。4数据项是数据的基本单位。5数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要建立的。6数据的物理结构是数据在计算机中实际的存储形式。7算法
5、和程序没有区别,所以在数据结构中二者是通用的。8顺序存储结构属于静态结构,链式存储结构属于动态结构。三、填空题1所谓数据的逻辑结构指的是数据元素之间的_。2,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容_ 、 、 _。3数据的逻辑结构包括_ _、_ _、_ _和_ _四种类型。4在线性结构中,开始结点_ _前驱结点,其余每个结点有且只有_ _个前驱结点。5在树形结构中,根结点只有_ _,其余每个结点有且只有_ _前驱结点;叶结点没有_ _结点,其余每个结点的后继结点可以有_ _·6在图形结构中,每个结点的前驱结点和后继结点可以有_ _。7算法的五个重要
6、特性是_ _、_ _、_ _、_ _、_ _。8下列程序段的时间复杂度是_ _。 for (i=1;i<=n;i+) Ai,i=0;9下列程序段的时间复杂度是_ _。 S=0; for(i=1;i<=n;i+) for(j=1;j<=n;j+) s=s+Bi,j; sum=s;10存储结构是逻辑结构的_ _实现。11从数据结构的观点看,通常所说的“数据”应分成三个不同的层次,即_ _、_ _和_ _。12根据需要,数据元素又被称为_ _、_ _、_ _或_ _。13通常,存储结点之间可以有_ _、_ _、_ _、_ _四种关联方式,称为四种基本存储方式。14通常从_ _、_
7、_、_ _、_ _等几方面评价算法(包括程序)的质量。15一个算法的时空性能是指该算法的_ _和_ _,前者是算法包含的_ _,后者是算法需要的_ _。16在一般情况下,一个算法的时间复杂度是_ _的函数。17常见时间复杂度的量级有:常数阶O(_ _)、对数阶O(_ _)、线性阶O(_ _)、平方阶O(_ _)和指数阶O(_ _)。通常认为,具有指数阶量级的算法是_ _的。18数据结构的基本任务是数据结构的_ _和_ _。19数据对象是性质相同的_ _的集合。20抽象数据类型是指一个_ _以及定义在该模型上的一组操作。四、应用题1分析下列程序段的时间复杂度。 i=1; WHILE (i<
8、=n) i=i*2; _ _2叙述算法的定义及其重要特性。3简述下列术语:数据,数据元素,数据结构,数据对象。4逻辑结构与存储结构是什么关系?5将数量级210,n,n2,n3,nlog2n,log2n,2n,n!,(23)n,n23按增长率进行排列。6设有数据逻辑结构为:D=k1,k2,k3,k9,R=<k1,k3>,<k1,k8>,<k2,k3>,<k2,k4>,<k2,k5>,<k3,k9>,<k5,k6>,<k8,k9>,<k9,k7>,<k4,k6>,画出这个逻辑结构
9、的图示,并确定相对于关系R,哪些结点是开始结点,哪些结点是终端结点?7设有如图1.1所示的逻辑结构图,给出它的逻辑结构,并说出它是什么类型的逻辑结构。8分析下列程序的时间复杂度(设n为正整数)。 (1)int rec(int n) if(n=1)return(1); else return(n*rec(n-1); (2)x=91;y=100; While (y>0) if(x>10) y-; (3)i=1;j=0; while(i+j<=n) if(i>j)j+; else i+; (4)x=n;y=0;while(x>=(y+1)*(y+1) y+;答: 9设n
10、为正数。试确定下列各程序段中前面加记号的语句的频度: (1)i=1;k=0; while(i<=n-1) k+=10*i; i+; ) (2) k=0; for(i=1;i<=n;i+) for(j=i;j<=n:j+) k+;答:第二节 线性表一、选择题1线性结构中的一个结点代表一个( )。 A数据元素 B数据项 C数据 D数据结构2线性表L=(a1,a2,ai,an),下列说法正确的是( )。 A每个元素都有一个直接前驱和直接后继 B线性表中至少要有一个元素 C表中诸元素的排列顺序必须是由小到大或由大到小的 D除第一个元素和最后一个元素外其余每个元素都有一个且仅有一个直接
11、前驱和直接后继3顺序表是线性表的( )。 A链式存储结构 B顺序存储结构 C索引存储结构 D散列存储结构4对于顺序表,以下说法错误的是( )。 A顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址 B顺序表的所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列 C顺序表的特点是:逻辑结构中相邻的结点在存储结构中仍相邻 D顺序表的特点是:逻辑上相邻的元素,存储在物理位置也相邻的单元中5对顺序表上的插入、删除算法的时间复杂度分析来说,通常以( )为标准操作。 A条件判断 B结点移动 C算术表达式 D赋值语句6对于顺序表的优缺点,以下说法错误的是( )。 A无需为表示结点间的逻辑
12、关系而增加额外的存储空间 B可以方便地随机存取表中的任一结点 C插入和删除操作较方便 D由于顺序表要求占用连续的空间,存储分配只能预先进行(静态分配)7在含有n个结点的顺序存储的线性表中,在任一结点前插入一个结点所需移动结点的平均次数为( )。 An Bn/2 C(n-1)/2 D(n+1)/28在含有n个结点的顺序存储的线性表中,删除一个结点所需移动结点的平均次数为( )。 An Bn/2 C(n-1)/2 D(n+1)/29带头结点的单链表为空的条件是( )。Ahead=NULL Bhead->next=NULL Chead->next=head Dhead!=NULL10非空
13、单循环链表head的尾结点*p满足( )。 Ap->next=NULL Bp=NULL Cp->next=head Dp=head11在双循环链表的*p结点之后插入*s结点的操作是( )。 Ap->next=s;s->prior=p;p->next->prior=s;s->next=p->next; Bp->next=s;p->next->prior=s;s->prior=p:s->next=p->next; Cs->prior=p;s->next=p->next;p->next=s;p
14、->next->prior=s; Ds->prior=p;s->next=p->next;p->next->pror=s;p->next=s;12. 在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入结点*s,则执行( )。 As->next=p->next;p->next=s; Bp->next=s->next;s->next=p; Cq->next=s; s->next=p; Dp->next=s; s->next=q;13. 在一个单链表中,若*p结点不是最后
15、结点。在*p之后插入结点*s,则执行( )。 As->next=p;p->next=s; Bs->next=p->next;p->next=s; Cs->next=p->next; p=s; Dp->next=s; s->next=p;14. 若某线性表中最常用的操作是取第i个元素和找第i个元素的前驱元素,则采用( )存储方式最节省时间。 A顺序表 B. 单链表 C双链表 D单循环链表15设rear是指向非空带头结点的单循环链表的尾指针,则删除表头结点的操作可表示为( )。 Ap=rear;rear=rear->next; free(
16、p) Brear=rear->next;free(rear); Crear=rear->next->next; free(rear); Dp=rear->next->next;rear->next->next=p->next;free(p);16在一个单链表中,若删除*p结点的后继结点,则执行( )。 Aq=p->next;p->next=q->next;free(q); Bp=p->next;p->next=p->next->next;free(p); Cp->next=p->next;fr
17、ee(p->next); Dp=p->next->next;free(p->next);17设指针p指向双链表的某一结点,则双链表结构的对称性可用( )式来刻画。 Ap->prior->next->=p->next->next Bp->prior->prior=p->next->prior Cp->prior->next->=p->next->prior Dp->next->next=p->prior->prior18在循环链表中,将头指针改设为尾指针rear后,
18、其头结点和尾结点的存储位置分别是( )。 Arear和rear->next->next Brear->next和rear Crear->next->next和rear Drear和rear->next19循环链表的主要优点是( )。 A不再需要头指针了 B已知某个结点的位置后,容易找到它的直接前驱 C在进行插入、删除操作时,能更好地保证链表不断开 D从表中任一结点出发都能扫描到整个链表20在线性表的下列存储结构中,读取元素花费时间最少的是( )。 A单链表 B双链表 C循环链表 D顺序表二、判断题1顺序存储的线性表可以随机存取。2顺序存储的线性表的插入和删除
19、操作不需要付出很大的代价,因为平均每次操作只有近一半的元素需要移动。3线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。4在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻。5在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。6在单链表中,可以从头结点开始查找任何一个元素。7线性表的链式存储结构优于顺序存储结构。8在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。9在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。10顺序存储方式只能用于存储线性结构
20、。三、填空题1为了便于讨论,有时将含n(n>0)个结点的线性结构表示成(a1,a2,an),其中每个ai代表一个_结点_。a1称为_ _结点,an称为_ _结点,i称为ai在线性表中的_ _。对任意一对相邻结点ai、ai+1(1i<n),ai称为ai+1的直接_ _,ai+1称为ai的直接_ _。2线性结构的基本特征是:若至少含有一个结点,则除起始结点没有直接_ _外,其他结点有且仅有一个直接_ _;除终端结点没有直接_ _外,其他结点有且仅有一个直接_ _。3所有结点按一对一的邻接关系构成的整体就是_ _结构。4线性表的逻辑结构是_ _结构,其所含结点的个数称为线性表的_ _。5
21、在单链表中,删除p所指结点的直接后继的操作是_ _;p->next=q->next;free(q); 6非空的单循环链表head的尾结点(由指针p所指)满足_ _ _。7rear是指向非空带头结点的单循环链表的尾指针,则删除起始结点的操作可表示为_ _;q=p->next;p->next=q->next;free(q);_。8对于一个具有n个结点的单链表,在p所指结点后插入一个结点的时间复杂度为_ _,在给定值为x的结点后插入新结点的时间复杂度为_ _。9单链表表示法的基本思想是用_ _表示结点间的逻辑关系。10在顺序表中插入或删除一个元素,平均需要移动_ _元素
22、,具体移动的元素个数与_ _有关。11在一个长度为n的向量的第i(1in+1)个元素之前插入一个元素时,需向后移动_ _个元素。12在一个长度为n的向量中删除第i(1in)个元素时,需向前移动_ _个元素。13在双链表中,每个结点有两个指针域,一个指向_ _,另一个指向_ _。14在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head=_ _。15设head指向单链表的表头,p指向单链表的表尾结点,则执行p->next=head后,该单链表构成_ _。16在单链表中,若p和s是两个指针,且满足p->next与s相同,则语句p->n
23、ext=s->next的作用是_ _s指向的结点。17设r指向单循环链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是_ _ ;r->next=s;r=s;18在单链表中,指针p所指结点为最后一个结点的条件是_ _ _。19在双循环链表中,若要在指p所指结点前插入s所指的结点,则需执行下列语句:s->next=p; s->prior=p->prior;_ _ _=s;p->prior=s;20在单链表中,若要在p所指结点之前插入s所指的结点,可进行下列操作: s->next=_ _ _ _; p->next=s; tem
24、p=p->data; p->data=_ _; s->data=_ _ _;四、应用题1描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。答: 2何时选用顺序表,何时选用链表作为线性表的存储结构为宜?答: 3在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?答: 4为什么在单循环链表中设置尾指针比设置头指针更好?答: 5双链表和单循环链表中,若仅知道指针p指向某个结点,不知道头指针,能否将结点*p 从相应的链表中删除?若可以,其时间复杂度各为多少?答: 6下列算法的功能是什么? LinkList *testl(LinkList
25、 *L) /L是无头结点的单链表 LinkList *q,*p; if(L&&L->next) q=L; L=L->next; p=L; while(p->next) p=p->next; p->next=q; q->next=NULL;return L;答: 7如果有n个线性表同时共存,并且在处理过程中各表的长度会发生动态变化,线性表的总长度也会自动地改变。在此情况下,应选择哪一种存储结构?为什么?答: 8若线性表的总数基本稳定,且很少进行插入、删除操作,但要求以最快的方式存取线性表的元素,应该用哪种存储结构?为什么?答:五、算法设计题假设
26、算法中用到的顺序表和链表结构如下:#define maxsize 100;Typedef struct node1 datatype datamaxsize; int length SeqList;Typedef struct node2 datatype data; struct node2 *next LinkedList ;1试用顺序表作为存储结构,实现将线性表(a0,a1,a2,an-1)就地逆置的操作,所谓“就地”是指辅助空间为O(1)。答:(1)顺序表的就地逆置 (2)链表的就地逆置 2设顺序表L是一个递增(允许有相同的值)有序表,试写一算法将x插入L中,并使L仍为一个有序表。答:
27、 3.设单链表L是一个递减有序表,试写一个算法将x插入其中后仍保持L的有序性。答:4. 试写出在不带头结点的单链表的第i个元素之前插入一个元素的算法。答:5设A、B是两个线性表,其表中元素递增有序,长度分别为m和n。试写一算法分别以顺序存储和链式存储将A和B归并成一个仍按元素值递增有序的线性表C。答:6设指针la和lb分别指向两个不带头结点的单链表的首结点,设计从表la中删除第i个元素起共len个元素,并将这些元素插入到lb中第j个结点之前的算法。7单链表L是一个递减有序表,试写一高效算法,删除表中值大于min且小于max的结点(若表中有这样的结点),同时释放被删结点空间,这里min和max是
28、两个给定的参数。8编写一个算法将一个头结点指针为pa的单链表A分解成两个单链表A和B,其头结点指针分别为pa和pb,使得A链表中含有原链表A中序号为奇数的元素,而B链表中含有原链表A中序号为偶数的元素,且保持原来的相对顺序。9假设以两个元素值递增有序排列的线性表A、B分别表示两个集合,要求另辟空间构造一个线性表C,其元素为两集合的交集,且表C中的元素值也递增有序排列。用顺序表实现并写出C的算法。11假设在长度大于1的单循环链表中,既无头结点也无头指针。s为指向链表中某个结点的指针,试编写算法删除结点*s的直接前驱结点。12计算带头结点的循环链表的结点个数。13已知由单链表表示的线性表中,含有三
29、类字符的数据元素(如:字母字符、数字字符和其他字符),试编写算法构造三个以循环链表表示的线性表,使得每个表中只含有同一类的字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。14、己知A、B和C为三个递增有序的线性表,现要求对A表进行如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法(注:题中未特别指明同一表中的元素值各不相同)。15双循环链表中,设计满足下列条件的算法。 (1)在值为x的结点之前插入值为y的结点。(2)删除值为x的结点。16设有一个双循环链表,其中有一结点的指针为p,编写算法将p与其右边的一个结点进行交换。17设有一个双链
30、表,每个结点中除有prior、data和next三个域外,还有一个可访问频度域freq,在链表启用之前,其初始值均为0。每当链表进行一次LocateNode(L,x)操作时令元素值为x的结点中freq域的值加l,并调整表中结点的次序,使其按访问频度的递减次序排列,以便使频繁访问的结点总是靠近表头。试写一符合上述要求的LocateNode操作的算法。18给出用单链表存储多项式的结构,并编写一个按指数值递增次序输入所产生的多项式链表的过程。19根据上题的多项式链表结构,编写一个过程实现两个多项式相加的运算。20约瑟夫环问题:任给正整数n、k,按下述方法可得排列1,2,n的一个置换:将数字l,2,n
31、环形排列,按顺时针方向从1开始计数;计满k时输出该位置上的数字(并从环中删去该数字),然后从下一个数字开始继续计数,直到环中所有数字均被输出为止。例如,n=10、k=3时,输出的置换是3,6,9,2,7,1,8,5,10。分别以数组和以不带头结点的、已知尾指针的单循环链表为存储结构解决上述问题。第三节 栈和队列一、选择题1设有一顺序栈s,元素s1,s2,s3,s4,s5,s6依次入栈,如果6个元素出栈的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是( )。 A2 B3 C5 D62若一个栈的输入序列是a、b、c,则通过入栈、出栈操作可能得到a、b、c的不同排列个数为( )。 A
32、4 B5 C6 D73设有一顺序栈已经含有3个元素,如图3-1所示,元素a4正等待入栈。以下序列中不可能出现的出栈序列是( )。 Aa3,a1,a4,a2 Ba3,a2,a4,a1 Ca3,a4,a2,a1 Da4,a3,a2,a14和顺序栈相比,链栈有一个比较明显的优势是( )。 A通常不会出现栈满的情况 B通常不会出现栈空的情况 C插入操作更容易实现 D删除操作更容易实现5若一个栈的输入序列是1,2,3,4,n,输出序列的第一个元素是n,则第i个输出元素是( )。 A不确定 Bn-i Cn-i+1 Dn-i-16以下说法正确的是( )。 A因链栈本身没有容量限制,故在用户内存空间的范围内不
33、会出现栈满情况 B因顺序栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况 C对于链栈而言,在栈满状态下,如果再进行入栈操作,则会发生“上溢” D对于顺序栈而言,在栈满状态下,如果再进行入栈操作,则会发生“下溢”7顺序队列的入队操作应为( sq.rear初值为-1 )。 Asq.rear=sq.rear+1;sq.datasq.rear=x; Bsq.datasq.rear=x;sq.rear=sq.rear+1; Csq.rear=(sq.rear+1)maxsize;sq.datasq.rear+1=x; Dsq.datasq.rear=x;sq.rear=x; sq.rear=
34、(sq.rear+1)maxslze;8循环队列的入队操作应为(sq.rear初值为-1 )。 Asqrear=sqrear+1;sqdatasqrear=x Bsqdatasqrear=x;sqrear=sqrear+l; Csqrear=(sqrear+1)maxsize;sqdatasqrear=x; Dsqdatasqrear=x;sqrear=(sqrear+1)maxsize;9顺序队列的出队操作为(sq. front初值为-1 )。 Asqfront=(sqfront+1)maxsize; Bsqfront=sqfront+1; Csqrear=(sqrear+1)maxsize
35、; Dsqrear=sqrear+1;10循环队列的出队操作为(sq. front初值为-1 )。 Asqfront=(sqfront+1)maxsize; Bsqfront=sqfront+1; Csqrear=(sqrear+1)maxsize; Dsqrear=sqrear+l;11循环队列的队满条件为( )。 A(sqrear+1)maxsize=(sqfront+1)maxsize; B(sqrear+1)maxsize=sqfront+1; C(sqrear+1)maxsize=sqfront; Dsqrear=sqfront;12循环队列的队空条件为( )。 A(sqrear+1
36、)maxsize=(sqfront+1)maxsize; B(sqrear+1)maxsize=sqfront+1; C(sqrear+1)maxsize=sqfront; Dsqrear=sqfront;13如果以链表作为栈的存储结构,则出栈操作时( )。 A必须判别栈是否满 B判别栈元素的类型 C必须判别栈是否空 D对栈不做任何判别14,向一个栈顶指针为Top的链栈中插入一个s所指结点时,其操作步骤为( )。 ATop->next=s; Bs->next=Top->next;Top->next=s; Cs->next=Top;Top=s; Ds->nex
37、t=Top;Top=Top->next;15从栈顶指针为Top的链栈中删除一个结点,并将被删结点的值保存到x中,其操作步骤为( )。 Ax=Top->data;Top=Top->next; BTop=Top->next;x=Top->data; Cx=Top;Top=Top->next; Dx=Top->data;16在一个链队中,苕f、r分别为队头、队尾指针,则插入s所指结点的操作为( )。 Af->next=s;f=s; Br->next=s;r=s; Cs->next=r;r=s; Ds->next=f;f=s;17一个栈
38、的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )。 Ae,d,c,b,a Bd,e,c,b,a Cd,c,e,a,b Da,b,c,d,e18一个队列的入队序列是1,2,3,4,则队列可能的输出序列是( )。 A4,3,2,1 *B1,2,3,4 C1,4,3,2 D3,2,4,119设计一个判别表达式中左,右括号是否配对出现的算法,采用( )数据结构最佳。 A线性表的顺序存储结构 B栈 C队列 D线性表的链式存储结构二、判断题1在顺序栈栈满情况下,不能再入栈,否则会产生“上溢”。2与顺序栈相比,链栈的一个优点是插入和删除操作更加方便。3若一个栈的输入序列为1,2,3,n,其输出
39、序列的第一个元素为n,则其输出序列的每个元素ai一定满足ai=i+1(i=1,2,n)。4在链队中,即使不设置尾指针也能进行入队操作。5在对链队(带头指针)做出队操作时,不会改变front指针的值。6循环队列中元素个数为rear-front。7一个栈的输入序列是1,2,3,4,则在栈的输出序列中可以得到4,3,1,28一个栈的输入序列是1,2,3,4,则在栈的输出序列中可以得到1,2,3,4。9若以链表作为栈的存储结构,则入栈需要判断栈是否满10若以链表作为栈的存储结构,则出栈需要判断栈是否空。三、填空题1向一个栈顶指针为Top的链栈中插入一个s所指的结点时,其进行的操作是_ _;Top =s
40、;_。2从栈顶指针为Top的链栈中删除一个结点,并将结点保存在x中,进行的操作是_ _ _;Top=Top->next。3在具有n个单元的循环队列中,队满时共有_n-1_个元素。4假设以S和X分别表示入栈和出栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到的输出序列为_ _。5设有数组Am作为循环队列的存储空间,front为队头指针,rear为队尾指针,则元素x执行入队操作的语句是_ _; Arear=x。6在一个链队中,如果f、r分别为队头、队尾指针,则插入s所指结点的操作是_ _。7栈的逻辑特点是_ _,队列的逻辑特点是_ _,二者的共同特点是_
41、_。8_ _可以作为实现递归函数调用的一种数据结构。9在队列中,新插入的结点只能添加到_ _。10链队在一定范围内不会出现_ _的情况。当lqfront=lqrear时,队中无元素,此时_ _。11设一个链栈的栈顶指针为ls,栈中结点的格式为data:next,栈空的条件是_ _;如果栈不为空,则出栈操作为p=ls; _ _;free(p)。12对带有头结点的链队lq,判定队列中只有一个数据元素的条件是_ _。 13设有一个空栈,现在输入序列为1,2,3,4,5,经过push,push,pop,push,pop,push后,栈顶指针所指元素是_ _。14设用一维数组An来表示一个栈,令A0为栈
42、底。用整型变量t来指示当前栈顶的位置,At为栈顶元素。往栈中压入一个新元素时,变量t的值_ _,从栈中弹出一个元素时,变量t的值_ _。设空栈时,输入序列a,b,c经过push,pop,push,push,pop操作后,从栈中弹出的元素是_ _。四、应用题2设有字符串为3*-y-a/y2,试利用栈写出将其转换为3y-*ay2/-的操作过程。假定用X代表扫描该字符串过程中顺序取一个字符入栈的操作,用S代表从栈中取出一个字符加入到新字符串尾的出栈操作。例如,ABC变为BCA的操作步骤为XXSXSS。答: 3设有一个输入序列a,b,c,d,元素经过一个栈到达输出序列,而且元素一旦离开输入序列就不能再
43、回到输入序列,试问经过这个栈后可以得到多少种输出序列?答: 4按照运算符优先法,画出对下面算术表达式求值时,操作数栈和运算符栈的变化过程:9-2*4+(8+1)/3。答:5链栈中为何不设置头结点?答: 第四节 数组一、选择题1数组通常具有的两种基本操作是( )。 A建立和删除 B索引和修改 C查找和修改 D查找和索引2二维数组A11,6采用行序为主序方式存储,每个数据元素占4个存储单元,且A0,0的存储地址是1000,则A8,4的存储地址是( )。 A1208 B1212 C1368 D13643对矩阵压缩存储是为了( )。 A方便运算 B节省空间 C方便存储 D提高运算速度4稀疏矩阵的压缩存
44、储方法通常有两种,即( )。 A二元数组和三元数组 B三元组和散列 C三元组和十字链表 D散列和十字链表二、判断题 1数组是同类型值的集合。 2数组是一组连续的内存单元。 3数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。 4插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。 5使用三元组表示稀疏矩阵的元素,有时并不能节省存储空间。三、填空题 1二维数组A10, 20采用列序为主序方式存储,每个元素占一个存储单元,并且A1,1的存储地址是200,则A6,12的地址是_ _。 2有一个10阶对称矩阵A采用压缩存储方式(以行序为主序方式)存储其下三
45、角元素,且第一个元素A0,0的存储地址为1,则A4,5的地址是_ _,A8,3的地址是_ _。 3下三角矩阵AN,N的下三角元素已压缩到一维数组SN(N+1)2中,若按行序为主序存储,则Ai,j对应的S中的存储位置是_ _ _。四、应用题1假设有二维数组A6,8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始地址(基地址)为1000,计算:(1)数组A的容量。(2)按行优先方式存储时,元素A1,4的地址。(3)按列优先方式存储时,元素A4,7的地址。答: 2设有三对角矩阵An,n,将其三条对角线上的元素逐行存放于数组B3n-3中,使得Bk=Ai,j,求: (1)用i,j表示k的下
46、标变换公式。 (2)用k表示i,j的下标变换公式。答: 3画出图5-2所示的稀疏矩阵A的三元组表和十字链表。答:4用三元组表表示图5-3所示的稀疏矩阵的转置矩阵。答:第五节 树(树根结点的高度为1)一、选择题1以下说法错误的是( )。 A树形结构的特点是一个结点可以有多个直接前驱 B线性结构中的一个结点至多只有一个直接后继 C二叉树与树是两种不同的数据结构 D树(及一切树形结构)是一种“分支层次结构2以下说法错误的是( )。 A二叉树可以是空集 B二叉树的任一结点都有两棵子树 C二叉树与树具有相同的树形结构 D、二叉树中任一结点的两棵子树有次序之分3以下说法错误的是( )。 A完全二叉树上结点
47、之间的父子关系可由它们编号之间的关系来表达 B在三叉链表上,二叉树的求双亲操作很容易实现 C在二叉链表上,求根以及求左、右孩子等操作很容易实现 D在二叉链表上,求双亲操作的时间性能很好4以下说法错误的是( )。 A一般在哈夫曼树中,权值越大的叶子离根结点越近 B哈夫曼树中没有度数为1的分支结点 C若初始森林中共有n棵二叉树,最终求得的哈夫曼树共有2n-1个结点 D若初始森林中共有n棵二叉树,进行2n-1次合并后才能剩下一棵最终的哈夫曼树5深度为6的二叉树最多有( )个结点。 A64 B63 C32 D316将含有41个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对
48、结点编号,那么编号为21的双亲结点编号为( )。 A10 B11 C41 D207任何一棵二叉树的叶结点在其前序、中序、后序遍历序列中的相对位置( )。 A肯定发生变化 B有时发生变化 C肯定不发生变化 D无法确定8设二叉树有n个结点,则其深度为( )。 An-1 Bn Clog2n+1 D无法确定9设深度为k的二叉树上只有度为0和度为2的结点,则这类二叉树上所含结点总数最少( )个。 Ak+l B2k C2k-1 D2k+110下列说法正确的是( )。 A树的前序遍历序列与其对应的二叉树的前序遍历序列相同 B树的前序遍历序列与其对应的二叉树的后序遍历序列相同 C树的后序遍历序列与其对应的二叉
49、树的前序遍历序列相同 D树的后序遍历序列与其对应的二叉树的后序遍历序列相同11下列说法中正确的是( )。 A任何一棵二叉树中至少有一个结点的度为2 B任何一棵二叉树中每个结点的度都为2 C任何一棵二叉树中的每个结点的度肯定等于2 D任何一棵二叉树中的每个结点的度都可以小于212一棵二叉树满足下列条件:对任意结点,若存在左、右子树,则其值都小于它的左子树上所有结点的值,而大于右子树上所有结点的值。现采用( )遍历方式就可以得到这棵二叉树所有结点的递减序列。 A前序 B中序 C后序 D层次13设森林T中有4棵树,结点个数分别是n1、n2、n3、n4,当把森林T转换成一棵二叉树后,根结点的右子树上有
50、( )个结点。 An1-1 Bn1 Cn1+n2+n3 D n2+n3+n414对含有( )个结点的非空二叉树,采用任何一种遍历方式,其结点访问序列均相同。 A0 B1 C2 D不存在这样的二叉树15如图6-1所示的二叉树的中序遍历序列是( )。 Aabcdgef Bdfebagc Cdbaefcg Ddefbagc16已知某二叉树的后序遍历序列是deacb,中序遍历序列是deabc,它的前序遍历序列是( )。 Aacbed Bbaedc Cdceab Dcedba17如果T1是由有序树转化而来的二叉树,那么T中结点的前序就是T1中结点的( )。 A前序 B中序 C后序 D层次序18某二叉树的前序遍历的结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是( )。 Abdgcefha Bgdbecfha Cbdgechfa Dgdbehfca19在图6-2中的二叉树中,( )不是完全二叉树。20树最适合用来表示( )。 A有序数据元素 B无序数据元素 C元素之间具有分支层次关系的数据 D元素之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《数理统计》第8章 正态总体均值的假设检验
- 异地采集指纹办理流程
- 中医诊断学培训课件
- 维修电工高级试题含答案(附解析)
- 计算机基础模拟考试题与参考答案解析
- 为老年人提供必要的医疗和健康服务确保他们得到及时治疗和关怀
- 2024年5月配电线路工专业试题+参考答案解析
- 5月1+x无损检测模拟试题与答案(附解析)
- 种子种苗遗传改良方法考核试卷
- 如何培养自律的孩子家庭教育
- 公路工程质量试题及答案
- 中央贸促会面试题及答案
- 产业链购销合同
- 出口美国合同范本
- 2025-2030中国香紫苏醇市场发展形势及未来投资风险预警研究报告
- 2024年市场营销师品牌宣传技巧试题及答案
- 教育机构与旅行社合作合同新规定
- 脑-肠轴与肠道菌群互作-深度研究
- 体重管理培训课件
- 住院糖尿病血糖管理课件
- 人教版八年级英语下册导学案(全册 共10个单元)
评论
0/150
提交评论