修改后的习题.docx
- 文档编号:23619764
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:54
- 大小:85.04KB
修改后的习题.docx
《修改后的习题.docx》由会员分享,可在线阅读,更多相关《修改后的习题.docx(54页珍藏版)》请在冰豆网上搜索。
修改后的习题
数据结构习题
习题一
一、选择题
1、数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
A.结构B.关系C.运算D.算法
2、在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.逻辑结构和存储结构
3、线性表的逻辑顺序和存储顺序总是一致的,这种说法()。
A.正确B.不正确C.无法确定D.以上答案都不对
4、算法分析的目的是()。
A.找出算法的合理性B.研究算法的输人与输出关系
C.分析算法的有效性以求改进D.分析算法的易懂性
二、填空题
1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
例如,数学中所用到的整数和实数,文本编辑所用到的字符串等。
2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
3、________是数据不可分割的最小单元,是具有独立含义的最小标识单位。
例如构成一个数据元素的字段、域、属性等都可称之为________。
4、简而言之,数据结构是数据之间的________,即数据的________。
5、数据的逻辑结构是指数据之间的________。
逻辑结构是从________上描述数据,它与具体存储无关,是独立于计算机的。
因此逻辑结构可以看作是从具体问题抽象出来的______________。
6、数据的________指数据元素及其关系在计算机存储器内的表示。
_________是逻辑结构在计算机里的实现,也称之为映像。
7、__________是指对数据施加的操作。
它定义在数据的逻辑结构之上,每种逻辑结构都有一个____________。
常用的有:
查找、排序、插人、删除、更新等操作。
8、数据逻辑结构可以分为四种基本的类型,_______结构中的元素除了仅仅只是同属于一个_________________,不存在什么关系。
9、数据逻辑结构的四种基本类型中,________中的元素是一种一对一的关系,这种结构的特征是:
若结构是非空集,则有且只有一个开始结点和一个终端结点,并且所有结点最多只能有一个直接前驱和一个直接后继。
10、数据逻辑结构的四种基本类型中,____________中的元素是一种一对多的关系。
11、图型结构或图状结构是一种________的关系。
在这种逻辑结构中,所有结点均可以有多个前驱和多个后继。
12、有时也可将树型结构、集合和图型结构称为__________,这样数据的逻辑结构就可以分为__________和________两大类。
13、____________方式是指逻辑上相邻的结点被存储到物理上也相邻的存储单元中。
这种存储结构只存储结点的数值,不存储结点之间的关系,结点之间的关系是通过存储单元的相邻关系隐含的表示出来的。
14、_______方式是种存储方法,不要求逻辑上相邻的结点在物理上也相邻,即数据元素可以存储在任意的位置上。
15、索引存储方式又可以分为______和________。
若每个结点在索引表中都有一个索引项,则该种索引存储方式称为__________;若一组结点在索引表中只对应一个索引项,则索引存储方式称为________。
在一中,索引项的地址指示结点所在的位置,而一中,索引项的地址指示一组结点的起始位置。
16、_________方式是利用结点关键字的值直接计算出该结点存储单元地址,然后将结点按某种方式存人该地址的一种方法。
17、所谓算法(Algorithm)是对特定问题求解方法和步骤的一种描述,它是指令的一组__________,其中每个指令表示一个或多个操作。
18、算法的_______性是指算法必须能够在执行有限个步骤之后结束,并且每个步骤都必须在有穷的时间内完成。
19、算法的________性是指算法中的每一个步骤必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。
并且,在任何条件下,算法只能有惟一的一条执行路径,即只要输人是相同的就只能得到____________的输出结果。
20、算法的____________性又称为算法的能行性,是指算法中描述的操作是可以通过已经实现的基本运算执行_________次来实现,即算法的__________应该能够被计算机执行。
21、判断一个算法的好坏主要以下几个标准:
________、________、________、_________。
22、算法分析是对一种算法所消耗的计算机资源的估算,其中包括计算机_________的长短和___________________的大小。
23、空间复杂度(SPaceComPlexity)也是度量一个算法好坏的标准,它所描述的是算法在运行过程中所占用_____________的大小。
三、判断题
1、顺序存储方式只能用于存储线性结构。
()
2、数据元素是数据的最小单位。
()
3、算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言描述,则算法实际上就是程序了。
()
4、数据结构是带有结构的数据元素的集合。
()
5、数据的逻辑结构是指各元素之间的逻辑关系,是用户根据需要而建立的。
()6、数据结构、数据元素、数据项在计算机中的映像分别称为存储结构、结点、数据域。
()
7、数据的物理结构是指数据在计算机中实际的存储形式。
()
8、具有存取任一元素的时间相等这一特点的存储结构称为随机存取结构。
()
四、综合题
1、用大O形式表示下面算法的时间复杂度:
for(i=0;i<m;i十十)
for(j=0;j<n;j++)
A[i][j]=i*j;
2、写出下面算法的时间复杂度:
i=0;
s=0;
while(s<n)
{i++;
s+=i;
}
3、写出以下算法的时间复杂度:
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 for(k=0;k<n;k++) c[i][j]+=a[i][k]*b[k][j]; 4、写出下面算法的时间复杂度: i=1; while(i<=n) i=i*3; 5、求下面函数中各条语句的频度和算法的时间复杂度: prime(intn) { inti=2; while((n%i)! =0&&i<sqrt(n)) i++; if(i>sqrt(n)) printf(”%disaprimenumber.\n”,n); else printf(”%disnotaprimenumber.\n”,n);} 习题二 一、选择题 1.在一个长度为n的顺序表中删除第i个元素(0<i A.n-iB.n-i+1C.n-i+1D.i+1 2.从一个具有n个元素的线性表中查找其值等于x的结点时,在查找成功的情况下,需平均比较()个元素结点。 A.n/2B.nC.(n-1)/2D.(n+1)/2 3.对一个具有n个元素的线性表,建立其单链表的时间复杂度为()。 A.O(n)B.O (1)C.O(n2)D.O(long2n) 4.线性表采用链式存储时,其地址()。 A.必须是连续的B.一定是不连续的 C.部分地址必须连续D.连续与否均可以 5.在一个具有n个结点的有序单链表中插人一个新的结点,使得链表仍然有序,该算法的时间复杂度是()。 A.O(long2n)B.O(l)C.O(n2)D.O(n) 6.线性表是()。 A.一个有限序列,可以为空B.一个有限序列,不可以为空 C.一个无限序列,可以为空D.一个无限序列,不可以为空 7.在一个长度为n的顺序表中,向第i个元素(0一1<n+1)之前捕人一个新元素时,需要向后移动()个元素。 A.n-iB.n-i+1C.n-i-1D.i+1 8.如果某链表中最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。 A.单链表B.双向链表C.单循环链表D.顺序表 9.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是()。 A.98B.100C.102D.106 10.下列排序方法中,某一趟结束后未必能选出一个元素放在其最终位置上的是()。 A.堆排序B.冒泡排序C.直接插人排序D.快速排序 11.对线性表进行二分查找时,要求线性表必须()。 A.以顺序方法存储 B.以链接方法存储 C.以顺序方法存储,且结点接关键字有序排列 D.以链接方法存储,且结点接关键字有序排列 12.在顺序存储的线性表(a1……an)中,删除任意一个结点所需移动结点的平均移动次数为() A.nB.n/2C.(n-1)/2D.(n+l)/2 13.在线性表的下列存储结构中,读取元素花费的时间最少的是()。 A.单链表B.双链表C.循环链表D.顺序表 14.若某链表中最常用的操作为在最后一个结点之后插入一个结点和删除最后一个结点,则采用()存储方式最节省时间。 A.双链表B.单链表C.单循环链表D.带头结点的双循环链表 二、填空题 1.线性表(LinearList)是最简单、最常用的一种数据结构。 线性表中的元素存在着__________的相互关系。 2.线性表中有且仅有一个开始结点,表中有且仅有一个终端结点,除开始结点外,其他每个元素有巨仅有一个__________,除终端结点外,其他每个元素有且仅有一个______。 3.线性表是n(n>=0)个数据元素的________。 其中n为数据元素的个数,定义为线性表的__________。 当n为零时的表称为_________。 4.所谓顺序表(SequentialLISt)是线性表的__________,它是将线性表中的结点按其____________依次存放在内存中一组连续的存储单元中,使线性表中相邻的结点存放在____________的存储单元中。 5.单链表不要求逻辑上相邻的存储单元在物理上也一定要相邻。 它是分配一些_______的存储单元来存储线性表中的数据元素,这些存储单元可以分散在内存中的_________的位置上,它们在物理上可以是一片连续的存储单元,也可以是__________的。 因此在表示线性表这种数据结构时,必须在存储线性表元素的同时,也存储线性表的。 6.线性表的链式存储结构的每一个结点(Node)需要包括两个部分: 一部分用来存放元素的数据信息,称为结点的_________;另一部分用来存放元素的指向直接后继元素的指针(即直接后继元素的地址信息),称为________或____________。 7.线性链表的逻辑关系是通过每个结点指针域中的指针来表示的。 其逻辑顺序和物理存储顺序不再一致,而是一种_________存储结构,又称为__________。 8.如果将单链表最后一个结点的指针域改为存放链表中的头结点的地址值,这样就构成了______________。 9.为了能够快速地查找到线性表元素的直接前驱,可在每一个元素的结点中再增加一个指向其前驱的指针域,这样就构成了___________。 10.双向链表某结点的指针P,它所指向结点的后继的前驱与前驱的后继都是p_______。 11.在单链表中,删除指针P所指结点的后继结点的语句是____________。 12.在双循环链表中,删除指针P所指结点的语句序列是P->prior->next=p->next及__________。 13.单链表是___________的链接存储表示。 14.可以使用___________表示树形结构。 15.向一个长度为n的向量的第i个元素(l≤i≤n+1)之前插人一个元素时,需向后移动__________个元素。 16.删除一个长度为n的向量的第i个元素(l≤i≤n)时,需向前移动_______个元素。 17.在单链表中,在指针P所指结点的后面插人一个结点S的语句序列是__________。 18.在双循环链表中,在指针P所指结点前插人指针S所指的结点,需执行语句_______。 19.取出广义表A=((x,(a,b,c,d))中原子c的函数是_________。 20.在一个具有n个结点的有序单链表中插人一个新结点并使之仍然有序的时间复杂度为_______________。 21.写出带头结点的双向循环链表L为空表的条件________________。 22.线性表、栈和队列都是_________________结构。 23.向栈中插人元素的操作是先移动栈_____________针,再存人元素。 三、判断题 1.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。 () 2.在具有头结点的链式存储结构中,头指针指向链表中的第一个数据结点。 () 3.顺序存储的线性表不可以随机存取。 () 4.单链表不是一种随机存储结构。 () 5.顺序存储结构线性表的插入和删除运算所移动元素的个数与该元素的位置无关。 () 6.顺序存储结构是动态存储结构,链式存储结构是静态存储结构。 () 7.线性表的长度是线性表所占用的存储空间的大小。 () 8.双循环链表中,任意一结点的后继指针均指向其逻辑后继。 () 9.线性表的惟一存储形式是链表。 () 四、综合题 1.编写一个将带头结点单链表逆置的算法。 2.ha和hb分别是两个按升序排列的、带头结点的单链表的头指针,设计一个算法,把这两个单链表合并成一个按升序排列的单链表,并用hC指向它的头结点。 3.有一个带头结点的单链表,头指针为head,编写一个算法count.list()计算所有数据域为X的结点的个数(不包括头结点)。 4.在一个带头结点的单链表中,头指针为head,它的数据域的类型为整型,而且按由小到大的顺序排列,编写一个算法insertx_list(),在该链表中插人值为x的元素,并使该链表仍然有序。 5.在一个带头结点的单链表中,head为其头指针,p指向链表中的某一个结点,编写算法swapin.list(),实现p所指向的结点和p的后继结点相互交换。 6.有一个带头结点的单链表,所有元素值以非递减有序排列,head为其头指针,编写算法deldy.list()将该链表中多余元素值相同的结点删除。 7.在带头结点的单链表中,设计算法dellistmaxmin,删除所有数据域大于min,而小于max的元素。 8.设计一个将双链表逆置的算法invert.dblinklist(),其中头指针为head,结点数据域为data,两个指针域分别为prior和next。 习题三 一、选择题 l.一个栈的序列是: a,b,c,d,e,则栈的不可能输出的序列是()。 A.a,b,c,d,eB.d,e,c,b,aC.d,c,e,a,bD.e,d,c,b,a 2.若一个栈的输人序列是1,2,3,…,n,输出序列的第一个元素是n,则第k个输出元素是()。 A.kB.n-k-1C.n-k+1D.不确定 3.判定一个栈S(最多有n个元素)为空的条件是()。 A.S->top! =0B.S->top==0C.S->top! =nD.S->top==n 4.判定一个栈S(最多有n个元素)为满的条件是()。 A.S->top! =0B.S->top==0C.S->top! =nD.S->top==n 5.向一个栈顶指针为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; 6.向一个带头结点、栈顶指针为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; 7.判定一个队列Q(最多有n个元素)为空的条件是()。 A.Q->rear-Q->front==nB.Q->rear-Q->front+1==n C.Q->rear==Q->frontD.Q->rear+1==Q->front 8.判定一个队列Q(最多有n个元素)为满的条件是()。 A.Q->rear-Q->front==nB.Q->rear-Q->front+1==n C.Q->rear==Q->frontD.Q->rear+1==Q->front 9.判定一个循环队列Q(最多有n个元素)为空的条件是()。 A.Q->rear==Q->frontB.Q->rear==Q->front+l C.Q->front==(Q->rear+1)%nD.Q->front==(Q->rear-1)%n 10.判定一个循环队列Q(最多有n个元素)为满的条件是()。 A.Q->rear==Q->frontB.Q->rear==Q->front+l C.Q->front==(Q->rear+1)%nD.Q->front==(Q->rear-1)%n 11.在一个链队列中,假定front和rear分别为头指针和尾指针,则插入一个结点*S的操作是()。 A.front=front->nextB.S->next=rear;rear=S C.rear->next=S;rear=SD.S->next=front;front=S 12.在一个链队列中,假定front和rear分别为头指针和尾指针,删除一个结点的操作是()。 A.front=front->nextB.rear=rear->next C.rear->next=frontD.front->next=rear 13.栈与队列都是()。 A.链式存储的线性结构B.链式存储的非线性结构 C.限制存取点的线性结构D.限制存取点的非线性结构 14.若进栈序列为l,2,3,4,则()不可能是一个出栈序列。 A.3,2,4,1B.l,2,3,4C.4,2,3,1D.4,3,2,l 15.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写人该缓冲区,而打印机则从该缓冲区中取走数据打印。 该缓冲区应该是一个()结构。 A.堆栈B.队列C.数组D.线性表 二、填空回 1.栈(stack)是限定在________一端进行插人或删除操作的线性表。 在栈中,允许插人和删除操作的一端称为__________,而另一端称为_________。 不含元素的栈称为_______。 2.在栈的运算中,栈的插人操作称为________或________,栈的删除操作称为_________或__________。 3.根据栈的定义,每一次进栈的元素都在原___________之上,并成为新的__________;每一次出栈的元素总是当前的_____________,因此最后进栈的元素总是__________,所以栈也称为___________线性表,简称为____________表。 4.栈是一种操作受到限制的线性表,是一种特殊的线性表,因此栈也有__________和_________________两种存储结构,分别称为______________和____________。 5.当栈满的时候,再进行人栈操作就会产生____________,这种情况的溢出称为___________;当栈空的时候,如果再进行出栈操作,也会_____________,这种情况下的溢出称为__________________。 6.栈的链式存储结构简称为____________,是一种__________________。 7.人们日常计算用到的表达式都被称为____________,这是由于这种算术表达式的运算符被置于两个操作数中间。 8.计算机中通常使用___________,这是一种将运算符置于两个操作数后面的算术表达式。 这种表达式是由波兰科学家谢维奇提出的,因此又称为__________________。 9.队列(Queue)也是一种___________,但它与栈不同,队列中所有的插人均限定在表的一端进行,而所有的删除则限定在表的另一端进行。 允许插人的一端称为_________,允许删除的一端称为_______________。 10.队列的特点是_________,因此队列又被称为_______________.的线性表,或称为_________________表。 11.队列的_________又称为__________,是用一组地址连续的存储单元依次存放队列中的元素。 12.由于队列中的元素经常变化,对于队列的删除和插人分别在队头和队尾进行,因此需要设置两个指针分别指向__________和__________,这两个指针又称为__________和_____________。 13.循环顺序队列(CircularSequenceQueue)经常简称为___________,它是将存储顺序队列的存储区域看成是一个首尾相连的一个环,即将队首和队尾元素连接起来形成一个环形表。 首尾相连的状态是通过数学上的_________________来实现的。 14.在算法或程序中,当一个函数直接调用自己或通过一系列语句间接调用自己的时候,则称这个函数为,也称为____________。 函数直接调用自己,则称为__________;当一个函数通过另一个函数来调用自己则称为_________________。 15.在循环队列中规定: 当Q->rear==Q->front的时候循环队列为___________,当(Q->rear+1)%MAXSIZE=front的时候循环队列为____________________。 16.用链表方式表示的队列称为____________________。 17.已知栈的输人序列为1,2,3,…,n,输出序列为a1,a2,…,an,符合a2==n的输出序列共有__________________。 18.一个栈的输人序列是12345,则栈的输出序列为43512是________(填是否可能)。 19.一个栈的输人序列是12345,则栈的输出序列为12345是_________(填是否可能)。 20.设sq[1..maxsize]为一个顺序存储的栈,变量top指示栈顶元素的位置,则作入栈操作的条件是______________。 21.设sq[1..maxsize]为一个顺序存储的栈,变量top指示栈顶元素的位置,如果把栈顶元素弹出并送到X中,则需执行语句______________。 22.栈的特性是__________________。 23.对栈进行退栈时的操作是先取出元素,后移动_________。 24.设s[1..ma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 修改 习题