当前位置:文档之家› 数据结构题库汇总

数据结构题库汇总

数据结构习题习题一一、选择题1、算法分析的两个主要方面是:()A.正确性和简明性B.时间复杂度和空间复杂度C.数据复杂性和程序复杂性D.可读性和文档性2、在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.逻辑结构和存储结构3、计算机算法具备输入、输出和()等5个特性:A.有穷性、确定性和稳定性B.可行性、可移植性和可扩充性 C.有穷性、确定性和可行性D.易读性、稳定性和安全性4、算法分析的目的是()。

A.找出算法的合理性 B.研究算法的输人与输出关系C.分析算法的有效性以求改进 D.分析算法的易懂性二、填空题1、数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的和运算等的学科。

2、线性结构中元素之间存在的关系,树形结构中元素之间存在的关系,图形结构中元素之间存在的关系。

3、________是数据不可分割的最小单元,是具有独立含义的最小标识单位。

例如构成一个数据元素的字段、域、属性等都可称之为________。

4、数据的________指数据元素及其关系在计算机存储器内的表示。

_________是逻辑结构在计算机里的实现,也称之为映像。

5、所谓算法(Algorithm)是对特定问题求解方法和步骤的一种描述,它是指令的一组__________,其中每个指令表示一个或多个操作。

三、问答题1、用大O形式写出下面算法的时间复杂度:i=0;s=0;while(s<n){ i++;s+=i; }2、写出以下算法的时间复杂度:for(i=0; i<m; i++)for(j=0 ; j<t; j++)c[i][j]=0;for(i=0;i<m;i++)for(j=o; j<t; j++)for(k=0;k<n;k++)c[i][j]+=a[i][k]*b[k][j];习题二一、选择题1.在一个长度为n的顺序表中删除第i个元素(0<i<n)时,需要向前移动( )个元素。

A.n-i B.n-i+1 C.n-i+1 D.i+12.从一个具有n个元素的线性表中查找其值等于x的结点时,在查找成功的情况下,需平均比较( )个元素结点。

A.n/2 B.n C.(n-1)/2 D.(n +1)/2 3.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则下列存储方式最节省运算时间的是():A.带头结点的双循环链表B.双链表C.给出表头指针的单循环链表D.单链表4.如果最常用的操作是取第i个结点及其前驱结点,那么下列存储方式最节省时间的是():A.单链表B.单循环链表C.顺序表D.双链表5.若某线性表最常用的操作是在最后一个结点之后插入一个结点或者删除最后一个结点,则下列存储方式最节省运算时间的是:()A.仅有尾指针的单循环链表B.双链表C.仅有头结点的单循环链表D.单链表6.线性表是( )。

A.一个有限序列,可以为空 B.一个有限序列,不可以为空C.一个无限序列,可以为空 D.一个无限序列,不可以为空7.在一个长度为n的顺序表中,向第i个元素(0一1<n+1)之前捕人一个新元素时,需要向后移动( )个元素。

A.n-i B.n-i+1 C.n-i-1 D.i+18.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是()。

A.98 B.100 C.102 D.1069. 在以下叙述中,正确的是:()A.线性表的线性存储结构优于链式存储结构B.栈的操作方式是先进先出C.队列的操作方式是先进后出D.二维数组是其数据元素为线性表的线性表二、填空题1.线性表是具有n个的有限序列。

2.在单链表中,要删除某一个指定的结点,必须找到该结点的结点。

3.向一个长度为n的顺序表中的第i个数据元素(1≤i≤n)之前插入一个元素时,需要向后移动个数据元素。

4.在双向链表中,每个结点都具有两个指针域,一个指向,另一个指向。

5.线性表中有且仅有一个开始结点,表中有且仅有一个终端结点,除开始结点外,其他每个元素有巨仅有一个__________,除终端结点外,其他每个元素有且仅有一个______。

6.线性表的链式存储结构的每一个结点(Node)需要包括两个部分:一部分用来存放元素的数据信息,称为结点的_________;另一部分用来存放元素的指向直接后继元素的指针(即直接后继元素的地址信息),称为________或____________。

7.写出带头结点的双向循环链表L为空表的条件________________。

三、问答题1.对链表设置头结点的作用是什么?(至少说出两条好处)2.在单链表、双链表中,如果仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?3.如果频繁地对一个线性表进行插入和删除操作,那么该线性表应该采用何种存储结构?为什么?四、程序设计题1.有一个带头结点的单链表(不同结点的数据域值可能相同),其头指针为head,编写一个函数计算数据域值为x的结点个数。

2.设计一个算法,删除一个递增的单链表(允许出现值域重复的结点)中多余的元素值相同的结点。

3.设计一个删除单链表L中值为m的结点的直接前驱结点操作的算法。

4.设计一个算法,将一个不带头结点的单链表L(至少有一个结点)逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。

5.在一个带头结点的单链表中,头指针为head,它的数据域的类型为整型,而且按由小到大的顺序排列,编写一个算法insertx_list(),在该链表中插人值为x的元素,并使该链表仍然有序。

习题三一、选择题l.一个栈的序列是:a,b,c,d,e,则栈的不可能输出的序列是()。

A.a,b,c,d,e B.d,e,c,b,a C.d,c,e,a,b D.e,d,c,b,a 2.判定一个栈S(最多元素为MaxSize)为栈满的条件是:()A.S—﹥top!= -1 B.S—﹥top==-1C.S—﹥top==MaxSize-1 D.S—﹥top!=MaxSize-13.若一进栈序列为1,2,3…,n,其出栈序列为P1,P2,P3,…P n,如果P n=n,则P i (1≤i<n)的值为:()A.i B.n-i+1 C.不确定D.n-i4.在一个链队中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算是()A.r->next=s;r=s;B.r->next=s;f=s;C.s->next=r;r=s;D.s->next=f;f=s;5.若用一个大小为8的一维数组来实现循环队列,且当前front和rear的值分别为4和1,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别是():A.3和5 B.5和3 C.2和6 D.6和26.判断一个循环队列Q(最多元素为MaxSize)为空的条件是:()A.Q->front==Q->rear B.Q->front==(Q->rear +1)%MaxSizeC.Q->front!=Q->rear D.Q->front!=(Q->rear +1)%MaxSize7.向一个带头结点、栈顶指针为top的链栈中插人一个*S结点的时候,应当执行语句()。

A.top->next=S; B.S->next=top;top=S;C.S->next=top->next;top->next=S; D.S->next=top;top=S->next;8.在一个链队列中,假定front和rear分别为头指针和尾指针,则插入一个结点*S 的操作是()。

A.front=front->next B.S->next=rear;rear=SC.rear->next=S;rear=S D.S->next=front;front=S9.栈与队列都是()。

A.链式存储的线性结构 B.链式存储的非线性结构C.限制存取点的线性结构 D.限制存取点的非线性结构10.若进栈序列为l,2,3,4,则()不可能是一个出栈序列。

A.3,2,4,1 B.l,2,3,4 C.4,2,3,1 D.4,3,2,l11.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写人该缓冲区,而打印机则从该缓冲区中取走数据打印。

该缓冲区应该是一个()结构。

A.堆栈 B.队列 C.数组 D.线性表二、填空题1.栈和队列的共同点是。

2.通常元素进栈的操作是。

3.栈(stack)是限定在________一端进行插人或删除操作的线性表。

在栈中,允许插人和删除操作的一端称为__________,而另一端称为_________。

不含元素的栈称为_______。

4.队列(Queue)也是一种___________,但它与栈不同,队列中所有的插人均限定在表的一端进行,而所有的删除则限定在表的另一端进行。

允许插人的一端称为_________,允许删除的一端称为_______________。

5.队列中允许进行删除的一端称为_______________;允许进行插入的一端称为_________。

三、问答题1.设有一个数列的输入顺序为abcdef,若采用栈结构,并以I和O分别表示进栈和出栈操作,试问下列输出序列是否是合法序列?如是,请用进栈和出栈操作表示其合法序列。

(1)能否得到输出顺序为cbefda的序列?(2)能否得到输出顺序为aedfbc154623的序列?2.设输入元素为4、5、6、B、A,入栈次序为456BA,元素经过栈后到达输出序列,当所有元素均到达输出序列后,有哪些序列可以作为高级语言的变量名?3.假设Q[0…10]是一个线性队列,初始状态为front=rear=0,画出做完下列操作后队列的头尾指针的状态变化情况,若不能入队,请指出其元素,并说明理由。

(1)d,e,b,g,h入队(2)d,e出队(3)i,j,k,l,m入队(4)b 出队(5)n,o,p入队4.设有4个元素A、B、C和D进栈,给出它们所有可能的出栈秩序。

四、程序设计题1.假设表达式中有三种括号:圆括号“()”、方括号“[ ]”和花括号“{ }”用C语言编写程序判断读人的表达式中不同括号是否正确配对,假定读人的表达式以”#”结束。

一、选择项4.设有两个串求串S2在S1,那么求串S2在S1求串n在串m中首次出现的位置的运算称为:()A.求子串B.求串长C.模式匹配 D.串连接4.设有串S=‘Computer’,则其子串的数目是()。

A.36 B.37 C.8 D.94.下列是C语言中“ASDF567HJKL”子串的是:()A.ASDF B.DF56 C.“F567HJ”D.“DFHJ”5.空串与空格串()。

相关主题