数据结构第1阶段练习题
数据结构1-10章习题

第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。
A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。
A.顺序队列 B. 链表 C. 有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
数据结构第一章参考答案

习题11.填空题(1)(___________)是指数据之间的相互关系,即数据的组织形式。
通常人们认为它包含三个方面的内容,分别为数据的(___________)、(___________)及其运算。
答案:数据结构逻辑结构存储结构(2)(___________)是数据的基本单位,在计算机程序中通常作为一个整体进行处理。
答案:数据元素(3)数据元素之间的不同逻辑关系代表不同的逻辑结构,常见的逻辑结构有(___________)、(___________)、(___________)和(___________)。
答案:集合线形结构树结构图结构(4)数据的存储结构考虑的是如何在计算机中存储各个数据元素,并且同时兼顾数据元素间的逻辑关系。
基本的存储结构通常有两大类:(___________)和(___________)。
答案:顺序存储结构链式存储结构(5)通常一个问题可以有多种不同的算法,但每个算法必须满足5个准则:输入、输出、(___________)、(___________)和(___________)。
答案:有穷性确定性可行性(6)通常通过衡量算法的(___________)复杂度和(___________)复杂度来判定一个算法的好坏。
答案:时间空间(7)常见时间复杂性的量级有:常数阶O(___________)、对数阶O(___________)、线性阶O(___________)、线性对数阶O(___________)、平方阶O(___________)、和指数阶O(___________)。
通常认为,当问题规模较大时,具有(___________)量级的算法是不可计算的。
答案:1 log n n n log n n2 2n指数(8)STL提供的标准容器有顺序容器、(___________)和(___________)。
答案:排序容器哈希容器(9)算法可认为是STL的精髓,所有算法都是采用(___________)的形式提供的。
数据结构阶段测验

线性数据结构测验一、 选择题 (每题4分,共40分)1、线性表是具有n个( )的有限序列(n≥0)。
A.数据对象 B.字符 C.数据元素 D.数据项2、线性表的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( )的存储结构。
A.随机存取 B.顺序存取 C.索引存取 D.散列存取3、将一个递归算法改为对应的非递归算法时,通常需要使用( )。
A.栈 B.队列 C.循环队列 D.优先队列4、在一个链队列中,假设f和r分别为队首和队尾指针,则插入s所指结点的操作是( )。
A.f‐>next=s;f=s; B.r‐>next=s;r=s; C.s‐>next=r;r=s; D.s‐>next=f;f=s;5、串的长度是指( )A.串中所含不同字母的个数 B.串中所含字符的个数C.串中所含不同字符的个数 D.串中所含非空格字符的个数6、若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2))) 其结果为( )A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###G12347、常对数组进行的两种基本操作是( )A.建立与删除 B.索引和修改 C.查找和修改 D.查找与索引8、设有一8×8下三角矩阵A[8][8],采用按行压缩存储的方式存放在一维数组B[ ]中,则数组B[ ]的容量至少需要( )个元素空间。
A.32 B.36 C.16 D.649、 假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为( )。
数据结构第1章习题兼解答

1. 填空(1)()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素(2)()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
(3)从逻辑关系上讲,数据结构主要分为()、()、()和()。
【解答】集合,线性结构,树结构,图结构(4)数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系(5)算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性(6)在一般情况下,一个算法的时间复杂度是()的函数。
【解答】问题规模(7)设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
A 树B 图C 线性表D 集合【解答】B【分析】将丈夫、妻子和子女分别作为数据元素,根据题意画出逻辑结构图。
⑶算法指的是()。
数据结构第一章答案

习题一1.1有下列几种用二元组表示的数据结构,试画出它们分别对应的图形表示(当出现多个关系时,对每个关系画出相应的结构图),并指出它们分别属于何种结构。
1.A=(K,R) 其中K={a1,a2,a3,…,a n}R={}2.B=(K,R),其中K={a,b,c,d,e,f,g,h}R={<a,b>,<b,c>,<c,d>,<d,e>,<e,f>,<f,g>,<g,h>}3.C=(K,R),其中K={a,b,c,d,e,f,g,h}R={<d,b>,<d,g>,<b,a>,<b,c>,<g,e>,<g,h>,<e,f>}4.D=(K,R),其中K={1,2,3,4,5,6}R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)} 5.E=(K,R),其中K={48,25,64,57,82,36,75,43}R={r1,r2,r3}r1={<48,25>,<25,64>,<64,57>,<57,82>,<82,36>,<36,75>,<75,43>}r2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>,<36,43>}r3={<25,36>,<36,43>,<43,48>,<48,57>,<57,64>,<64,75>,<75,82>} 解:⑴是集合结构;⑵是线性结构;⑶⑷是树型结构;⑸散列结构1.2用C语言函数编写下列每一个算法,并分别求出它们的时间复杂度。
数据结构第一章考试题库(含答案)

数据结构第一章考试题库(含答案)数据结构第一章考试题库(含答案)一、选择题1. 以下哪种数据结构是先进先出(FIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:B2. 在队列中,元素的插入操作称为什么?A. EnqueueB. DequeueC. PushD. Pop答案:A3. 哪种数据结构是一种不允许重复元素的集合?A. 栈B. 队列C. 链表D. 集合答案:D4. 以下哪种数据结构是后进先出(LIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:A5. 使用链表实现的栈或队列的时间复杂度是多少?A. O(1)B. O(n)C. O(log n)D. O(n^2)答案:A二、填空题1. 广度优先搜索(BFS)使用的数据结构是______。
答案:队列2. 深度优先搜索(DFS)使用的数据结构是______。
答案:栈3. 在二叉树中,每个节点最多有几个子节点?答案:24. 快速排序使用的分治策略是将数组分成几个子数组进行排序?答案:25. 哈希表的平均查找时间复杂度是多少?答案:O(1)三、简答题1. 请简要解释栈和队列的区别。
答案:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,只能在队尾插入,在队头删除。
2. 请解释什么是链表。
答案:链表是一种动态数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
与数组不同,链表的节点在内存中可以不连续存储,通过指针来链接每个节点。
3. 请简述快速排序的思想和算法步骤。
答案:快速排序使用分治的思想,首先选择一个元素作为基准值,然后将数组划分为两个子数组,小于基准值的元素放在左侧,大于基准值的元素放在右侧。
然后对左右子数组递归地进行快速排序,直到排序完成。
4. 请解释什么是哈希表及其应用场景。
答案:哈希表是一种基于哈希函数进行查找的数据结构,通过将关键字映射到哈希表中的位置来实现高效的查找。
《数据结构》第1阶段在线作业

一、单项选择题答题要求 :每题只有一个正确的选项。
1(5.0 分)0最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队空 的条件是( ) A) (rear+1) % n = front B) rear = front C) rear+1 = front D) (rear-l) % n = front 参考答案: B收起解析 解析:无2(5.0 分)0以下判断不正确的是( ) A) 顺序存储的线性表可随机存取。
B) 同一线性表中的数据元素应具有相同的特性。
C) 顺序存储方式的优点是存储密度大,插入、删除操效率高。
D) 在线性表的链式存储结构中,逻辑上相邻的数据元素在物理位置上不一定相 邻。
参考答案: C收起解析解析:无3(5.0 分)0以下说法错误的是( ) A) 散列法存储的基本思想是由关键码的值决定数据的存储地址。
B) 散列表的结点中只包含数据元素自身的信息,不包含任何指针。
C) 装填因子是散列法的一个重要参数,它反映散列表的装填程度。
D) 散列表的查找效率主要取决于散列表造表时选取的散列函数和处理冲突的 方法。
参考答案: B收起解析解析:无4(5.0 分)0一维数组和线性表的区别为( ) A) 前者长度固定,后者长度可变 B) 两者长度均固定 C) 前者长度可变,后者长度固定 D) 两者长度均可变 参考答案: A收起解析 解析:无5(5.0 分)0在具有 n 个结点的二叉树(二叉链表表示)中,值为空的链域数为 () A) n-1 B) 2n-1 C) n1 D) 2n 1 参考答案: B收起解析 解析:无6(5.0 分)5.0已知广义表 LS=((a,b,c),(d,e,f)),运用 head 和 tail 函数取出 LS 中元素 e 的运算是( ) A) head(tail(LS)) B) tail(head(LS)) C) head(tail(head(tail(LS)))) D) head(tail(tail(head(LS)))) 参考答案: C收起解析解析:无7(5.0 分)5.0以下说法错误的是( ) A) 对循环链表来说,从表中任一结点出发都能通过前后操作而扫描整个循环链 表。
数据结构1-4章习题答案

数据结构1-4章习题答案一、名词解释抽象数据类型、数据结构、数据结构的逻辑结构、数据结构的物理结构、算法、算法评价、时间复杂度、大O表示法、线性表、栈、队列、广义表、稀疏矩阵二、填空1、抽象数据类型是由一组数据结构和在该组数据结构上的一组操作所组成。
2、在定义某种数据结构时,其数据域的数据类型可分为简单类型和结构体类型两种,为增强其通用性,应将其再定义为通用数据类型。
3、如果将线性数据结构关系描述为1:1,那么树型和图型数据结构应分别为1:N、M:N5、算法应具备以下5个特性:有穷性、正确性、可行性、输入和输出。
6、在分析各种算法的时间复杂度时,一般只讨论相应的数量级,用f(n)表示,请问其中n的含义是处理问题的样本量7、对于一个以顺序实现的循环队列Q[m],队首、队尾指针分别为f 和r,其盘空的条件是f=r,盘满的条件是(r+1)%m=f8、循环链表的主要优点是最大限度的利用空间9、链表对于数据元素的插入和删除不需要移动结点,只需改变相关结点的指针域的值。
10、在一个链式栈中,若栈顶指针等于NULL,则为空栈11、主程序第一次调用递归函数被称为外部调用,递归函数自己调用自己被称为内部调用,它们都需要利用栈保存调用后的返回地址地址。
12、某算法在求解一个10阶方程组时,运算次数是500,求解一个30阶方程组时,运算次数是4500,则该算法的时间复杂度为O(N2)三、选择题1、对一个线性表的存取操作很少,而插入和删除操作较多时应采用B存储结构。
A.顺序存储B.链式存储C.索引存储D.散列式存储2、对一个线性表的随机存取操作较多时,应采用B存储结构。
A.静态顺序存储B.动态顺序存储C.动态链接存储D.静态链接存储3、对一个顺序存储结构的栈,栈满的判断条件是(D)A.S.top==-1B.S.top==0C.S.top==Ma某SizeD.S.top==Ma某Size-14、若循环队列有n个顺序存储单元,front、rear分别为队首和队尾指针则判断队满的条件是(C)A.(front+1)%n==rearB.(front-1)%n==rearC.(rear+1)%n==frontD.(rear-1)%n==front5、下列是顺序存储线性表排序的算法voidSort(Lit&L){}问:此算法的时间复杂性为:BA.O(n)B.(n2)C.(n某i)D.(n某j) inti,j;ElemType某;for(i=1;i某=L.lit[i];for(j=i-1;j>=0;j--)if(某L.lit[j+1]=L.lit[j];elebreak;L.lit[j+1]=某;四、简答题1、简述线性表的顺序存储和链接存储实现的异同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一阶段练习题
考试科目:《数据结构》第一章至第四章(总分100分)
______________学习中心(教学点)批次:层次:
专业:学号:身份证号:
姓名:得分:
一、选择题(每题3分,共30分)
1、在树形结构中,数据元素间存在()的关系。
A、一对一B、一对多C、多对多D、除同属一个集合外别无关系
2、下列说法中错误的是()。
A、数据对象是数据的子集
B、数据元素间关系在计算机中的映象即为数据的存储结构
C、非顺序映象的特点是借助指示元素存储地址的指针来表示数据元素间逻辑关系
D、抽象数据类型指一个数学模型及定义在该模型上的一组操作
3、下列不属算法特性的是()。
A、有穷性B、确定性C、零或多个输入D、健壮性
4、在长为n的顺序表中删除一个数据元素,平均需移动()个数据元素。
A、n B、n-1 C、n/2 D、(n-1)/2
5、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A、顺序表B、双链表C、带头结点的双向循环链表D、单循环链表
6、在一个可存放n个数据元素的顺序栈中,假设以高地址端为栈底,以top为栈顶指针,当向栈中压入一个数据元素时,top的变化是()。
A、不变B、top=n C、top++ D、top--
7、设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是()。
A、rear=front->next B、rear=rear->next C、front=front->next D、front=rear->next 8、判定一个栈顶指针为S且不带头结点的链栈为空栈的条件是()。
A、S B、S->next C、S->next==NULL D、!S
9、设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则判定该队中只有一个结点的条件是()。
A、front->next B、rear->next C、front==rear D、front!=rear
10、串的长度是指()。
A、串中所含不同字母的个数
B、串中所含字符的个数
C、串中所含不同字符的个数
D、串中所含非空格字符的个数
二、(10分)
设n为正整数,试确定如下程序段中语句“x++;”的频度。
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
for (k=1;k<=n;k++)
x++;
三、(15分)
设单链表L如图所示:
画出执行如下程序段后,各指针变量及单链表L的示意图。
p=L;
for(i=1;i<=3;i++){
q=(LinkList)malloc(sizeof(LNode));
q->data=i*3;
q->next=p->next;
p->next=q;
}
四、(10分)
设元素的入栈次序为a、b、c、d,且在入栈的过程中允许出栈,试写出所有不可能得到的出栈序列。
五、(15分)
设a='data structure',b='computer',c='demo',试求:
⑴ StrLength(a)的返回值;
⑵执行StrInsert(b,4,c)后串b的值;
⑶ Index(a,'u',10)的返回值;
⑷执行Replace(a,'structure',b)后串a的值;
⑸执行SubString(s,b,3,3)后串s的值。
六、(20分)
已知单链表L中含有三类字符的数据元素,即字母字符、数字字符和其他字符,试编写算法将L分割为三个循环链表,其中每个循环链表只含一类字符。
答案
一、选择题
1、B
2、B
3、D
4、D
5、A
6、D
7、C
8、D
9、C
10、B
二、设n为正整数,试确定如下程序段中语句“x++;”的频度。
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
for (k=1;k<=n;k++)
x++;
答:
2)1
(2
n
n
三、设单链表L如图所示:
画出执行如下程序段后,各指针变量及单链表L的示意图。
p=L;
for(i=1;i<=3;i++){
q=(LinkList)malloc(sizeof(LNode));
q->data=i*3;
q->next=p->next;
p->next=q;
}
答:
四、设元素的入栈次序为a、b、c、d,且在入栈的过程中允许出栈,试写出所有不可能得到的出栈序列。
答:
dabc dacb dbac dbca dcab cadb cabd cdab bdac adbc
五、设a='data structure',b='computer',c='demo',试求:
⑴ StrLength(a)的返回值;
⑵执行StrInsert(b,4,c)后串b的值;
⑶ Index(a,'u',10)的返回值;
⑷执行Replace(a,'structure',b)后串a的值;
⑸执行SubString(s,b,3,3)后串s的值。
答:
⑴14
⑵'comdemoputer'
⑶12
⑷'data computer'
⑸'mpu'
六、已知单链表L中含有三类字符的数据元素,即字母字符、数字字符和其他字符,试编写算法将L分割为三个循环链表,其中每个循环链表只含一类字符。
答:
void partition(LinkList &L,LinkList &LC,LinkList &LN,LinkList &LO){
//L带头结点,LC为含字母字符的循环链表,LN为含数字字符的循环链表,
//LO为含其他字符的循环链表
InitCL(LC);
InitCL(LN);
InitCL(LO); //对三个循环链表进行初始化
p=L->next;//p指向第一个结点
while (p){
q=p;
p=p->next;//q指向当前待处理结点,p指向剩余链表
if (q->data>=’A’ && q->data<=’Z’|| q->data>=’a’ && q->data<=’z’){ q->next=LC->next;
LC->next=q;
}//字母字符入循环链表LC
else if (q->data>=’0’ && q->data<=’9’){
q->next=LN->next;
LN->next=q;
}//数字字符入循环链表LN
else {
q->next=LO->next;
LO->next=q;
}//其他字符入循环链表LO
}//while
free(L);//释放单链表L的头结点
}//partition
void InitCL(LinkList &L){
//对循环链表进行初始化
L=(LinkList)malloc(sizeof(LNode));
if (!L) exit(OVERFLOW);
L->next=L;
}。