数据结构习题解答

合集下载

数据结构习题和答案

数据结构习题和答案

习题课填空1、对于一棵二叉树,若一个结点的编号为i,则它的左孩子结点的编号为,双亲结点的编号为。

2、向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。

3、在一棵二叉树中,若双分支结点数为5个,单分支结点数为6个,则叶子结点数为个。

4、为了实现折半查找,线性表必须采用方法存储。

顺序5、一种抽象数据类型包括数据对象和。

6、在以L为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为空的条件分别为__________和_______。

7、数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。

8、队列的插入操作在进行,删除操作在进行。

9、二叉搜索树的中序遍历得到的结点序列为____ ____。

10、在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。

11、栈的特点是。

12、在单链表中,除了首元结点外,任一结点的存储位置由。

13、在一个具有n个顶点的无向图中,要连通所有顶点则至少需要条边。

14、深度为k(设根的层数为1)的完全二叉树至少有个结点,至多有个结点。

15、一棵深度为6的满二叉树有个分支结点和个叶子结点。

16、一个算法的效率可分为效率和效率。

17、队列的特点是。

18、一棵深度为5的满二叉树中的结点数为个。

19、在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。

简答题1、已知一组元素为(38,26,62,94,35,50,28,55),画出按元素排列顺序输入生成的一棵二叉搜索树。

答:2、假设有二维数组A[0..5,0..7],每个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置(基地址)为1000,计算:(1)末尾元素A57的第一个字节地址为;(2)若按列存储时,元素A47的第一个字节地址为。

(3) 数组A的体积(存储量);(4) 若按行存储时,元素A14的第一个字节地址为。

数据结构复习习题和答案(DOC)

数据结构复习习题和答案(DOC)

第一章绪论一、单项选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和操作等的学科。

① A.操作对象 B.计算方法 C·逻辑存储 D.数据映象② A.结构 B.关系 C.运算. D.算法2.数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

① A.算法 B.数据元素 C.数据操作 D.逻辑结构② A.操作 B.映象 C、存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构4·算法分析的目的是①,算法分析的两个主要方面是②。

① A. 找出数据结构的合理性 B.研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性5.计算机算法指的是①,它必具备输入、输出和②等五个特性。

① A. 计算方法 B.排序方法 C. 解决问题的有限运算序列 D.调度方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性 D.易读性、稳定性和安全性6. 线性表的逻辑顺序与存储顺序总是一致的,这种说法()。

A. 正确 B.不正确7. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A. 必须是连续的 B.部分地址必须是连续的C. 一定是不连续的D. 连续或不连续都可以8.数据结构通常是研究数据的()及它们之间的相互联系。

A.存储和逻辑结构 B.存储和抽象C.理想与抽象 D.理想与逻辑9.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为()。

A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构11.非线性结构是数据元素之间存在一种()。

数据结构第三章习题答案解析

数据结构第三章习题答案解析

第三章习题1.按图3.1(b)所示铁道(两侧铁道均为单向行驶道)进行车厢调度,回答:⑴如进站的车厢序列为123,则可能得到的出站车厢序列是什么?⑵如进站的车厢序列为123456,能否得到435612和135426的出站序列,并说明原因。

(即写出以“S”表示进栈、以“X”表示出栈的栈操作序列)。

2.设队列中有A、B、C、D、E这5个元素,其中队首元素为A。

如果对这个队列重复执行下列4步操作:(1)输出队首元素;(2)把队首元素值插入到队尾;(3)删除队首元素;(4)再次删除队首元素。

直到队列成为空队列为止,得到输出序列:(1)A、C、E、C、C (2) A、C、E(3) A、C、E、C、C、C (4) A、C、E、C3.给出栈的两种存储结构形式名称,在这两种栈的存储结构中如何判别栈空与栈满?4.按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯例,画出对下列算术表达式求值时操作数栈和运算符栈的变化过程:A-B*C/D+E↑F5.试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如‘序列1& 序列2’模式的字符序列。

其中序列1和序列2中都不含字符’&’,且序列2是序列1的逆序列。

例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。

6.假设表达式由单字母变量和双目四则运算算符构成。

试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰式。

7.假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列和出队列的算法。

8.要求循环队列不损失一个空间全部都能得到利用, 设置一个标志域tag , 以tag为0或1来区分头尾指针相同时的队列状态的空与满,请编写与此结构相应的入队与出队算法。

9.简述以下算法的功能(其中栈和队列的元素类型均为int):(1)void proc_1(Stack S){ int i, n, A[255];n=0;while(!EmptyStack(S)){n++; Pop(&S, &A[n]);}for(i=1; i<=n; i++)Push(&S, A[i]);}(2)void proc_2(Stack S, int e) { Stack T; int d;InitStack(&T);while(!EmptyStack(S)){ Pop(&S, &d);if (d!=e) Push( &T, d);}while(!EmptyStack(T)){ Pop(&T, &d);Push( &S, d);}}(3)void proc_3(Queue *Q){ Stack S; int d;InitStack(&S);while(!EmptyQueue(*Q)){DeleteQueue(Q, &d);Push( &S, d);}while(!EmptyStack(S)){ Pop(&S, &d);EnterQueue(Q,d)}}实习题1.回文判断。

数据结构习题与答案

数据结构习题与答案

第1 章绪论课后习题讲解1. 填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。

【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。

⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。

【解答】集合,线性结构,树结构,图结构⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。

【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸算法具有五个特性,分别是()、()、()、()、()。

【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。

【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是()的函数。

【解答】问题规模⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。

【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。

2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。

A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。

则表示该遗产继承关系的最合适的数据结构应该是()。

数据结构习题及参考答案

数据结构习题及参考答案

数据结构习题及参考答案部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑数据结构习题及参考答案一、判断下列叙述的对错。

<1)线性表的逻辑顺序与物理顺序总是一致的。

<2)线性表的顺序存储表示优于链式存储表示。

<3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

<4)二维数组是其数组元素为线性表的线性表。

<5)每种数据结构都应具备三种基本运算:插入、删除和搜索。

二、设单链表中结点的结构为typedef struct node { file://链表结点定义ElemType data; file://数据struct node * Link; file://结点后继指针} ListNode;<1)已知指针p所指结点不是尾结点,若在*p之后插入结点* s,则应执行下列哪一个操作?A. s->link = p; p->link = s;B. s->link = p->link; p->link = s;C. s->link = p->link; p = s;D. p->link = s; s->link = p;<2)非空的循环单链表first的尾结点<由p所指向)满足:A. p->link == NULL;B. p == NULL;C. p->link == first;D. p == first;三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?b5E2RGbCAP四、一棵具有n个结点的理想平衡二叉树<即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示<注意n可能为0)?p1 EanqFDPw五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。

2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。

3.6.循环队列的引入,目的是为了克服假溢出。

4.2.长度为0的字符串称为空串。

4.5.组成串的数据元素只能是字符。

4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。

7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。

7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。

8.8.直接定址法法构造的哈希函数肯定不会发生冲突。

9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。

1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。

1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。

1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。

1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。

1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。

2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。

2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

数据结构(C语言版)习题解答

数据结构(C语言版)习题解答

数据结构(C语⾔版)习题解答1.3设n是正整数。

试写出下列程序段中⽤记号“△”标注的语句的频度:(2) i=1; k=0;do {△k+=10*i;i++;}while(i<=n-1)当n=1时,执⾏1;当n>=2时,执⾏n-1次;(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);当n=2时,执⾏2次;当n!=2时,执⾏1次;(4) i=1; j=0;while(i+j≤n) {△if(i}执⾏n次;(5) x=n; y=0; //n是不⼩于1的常数while(x>=(y+1)*(y+1)){△y++;}执⾏向下取整)(6) x=91; y=100;while ( y>0 )△if(x>100) { x-=10; y--; }else x++ ;}If语句执⾏100次(7) for( i=0; ifor( j=i; jfor( k=j; k△x+=2;过程:n1n1i0j in(n1)(n2) (n j)6--==++ -=∑∑第⼆章2.3 已知顺序表La中数据元素按⾮递减有序排列。

试写⼀个算法,将元素x插到La的合适位置上,保持该表的有序性。

思路:先判断线性表的存储空间是否满,若满返回Error;否则从后向前先移动数据,找到合适的位置插⼊。

Status Insert_SqList(SqList &La,int x)//把x 插⼊递增有序表La 中{if(La.length==La.listsize) return ERROR;for(i=La.length-1;La.elem[i]>x&&i>=0;i--)La.elem[i+1]=La.elem[i];La.elem[i+1]=x;La.length++;return OK;}//Insert_SqList2.5 试写⼀个算法,实现顺序表的就地逆置,即在原表的存储空间将线性表(a1,a2, ..., an-1,an)逆置为(an,an-1, ..., a2,a1//思路就是两个指⽰变量i,j同时分别从顺序表的开始和结尾处相向改变void reverse(SqList &A)//顺序表的就地逆置{ElemType p;for(i=1,j=A.length;i{//A.elem[i]<->A.elem[j];p=A.elem[i];A.elem[i[=A.elem[j];A.elem[j]=p;}}//reverse2.7 已知线性表L采⽤顺序存储结构存放,对两种不同情况分别写出算法,删除L中多余的元素,使得L中没有重复元素:(1)L中数据元素⽆序排列;(2)L中数据元素⾮递减有序排列。

数据结构(大专)第一章习题解答

数据结构(大专)第一章习题解答

数据结构(大专)第一章习题解答第一章绪论1.2 设计二次多项式ax2+bx+c的一种抽象数据类型,假定起名为QUAdratic,该类型的数据部分为三个系数项a、b和c,操作部分为:1.初始化数据成员a、b和c(假定用记录类型Quadratic定义数据成员),每个数据成员的默认值为0。

Qiadratic InitQuadratic(float aa=0, float bb=0, float cc=0);解:Quadratic InitQuadratic(float aa, float bb, float cc){Quadratic q;q·a=aa;q·b=bb;q·c=cc;return q;}2.做两个多项式加法,即使对应的系数相加,并返回相加结果。

解:Quadratic Add(Quadratic q1,Quadratic q2);{Quadratic q;q·a=q1·a+q2·a;q·b=q1·b+q2·b;q·c=q1·c+q2·c;retirn q;}3.据给定x的值计算多项式的值。

float Eval(Quadratic q,float x);解:float Eval(Quadratic q, float x){return(q·a*x*x+q·b*x+q·c);}4.计算方程ax2+bx+c=0的两个实数根,对于有实根、无实根和不是二次方程(即a= =0)这三种情况都要返回不同的整数值,以便调用函数做不同的处理。

int Root(Quadratic q, float& r1, float& r2);解:int Root (Quadratic q, float& r1, float& r2){if(q·a= =0) return –1;float x =q·b*q·b –4*q·a*q·c;if(x﹥=0){r1=(float) (-q·b+sqrt(x))/ (2*q·a);r2=(float) (-q·b-sqrt(x))/ (2*q·a);return 1;}elsereturn 0;}5.按照ax **2+bx+c的格式(x2用x **2表示)输出二次多项式,在输出时在注意去掉系数为0的项,并且当b和c的值为负时,其前不能出现加号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构(Java版)(第2版)习题解答叶核亚编著目录第0章 Java程序设计基础........................................... 错误!未定义书签。

【习】实验哥德巴赫猜想。

.....................................错误!未定义书签。

【习】实验杨辉三角形。

.......................................错误!未定义书签。

【习】实验金额的中文大写形式。

...............................错误!未定义书签。

【习】实验下标和相等的数字方阵。

.............................错误!未定义书签。

【习】实验找出一个二维数组的鞍点.............................错误!未定义书签。

【习】实验复数类。

...........................................错误!未定义书签。

【习】实验图形接口与实现图形接口的类.........................错误!未定义书签。

第1章绪论 ...................................................... 错误!未定义书签。

【习】实验判断数组元素是否已按升序排序。

.....................错误!未定义书签。

【习】实验用递归算法求两个整数的最大公因数。

.................错误!未定义书签。

第2章线性表..................................................... 错误!未定义书签。

【习】习2-5 图的数据结构声明。

................................错误!未定义书签。

【习】习2-6 如果在遍历单链表时,将p=语句写成=p,结果会怎样?..错误!未定义书签。

【习】实验由指定数组中的多个对象构造单链表。

.................错误!未定义书签。

【习】实验单链表的查找、包含、删除操作详见。

.................错误!未定义书签。

【习】实验单链表的替换操作。

.................................错误!未定义书签。

【习】实验首尾相接地连接两条单链表。

.........................错误!未定义书签。

【习】实验复制单链表。

.......................................错误!未定义书签。

【习】实验单链表构造、复制、比较等操作的递归方法。

...........错误!未定义书签。

【习】建立按升序排序的单链表(不带头结点)。

...................错误!未定义书签。

【习】实验带头结点的循环双链表类,实现线性表接口。

...........错误!未定义书签。

【习】实验建立按升序排序的循环双链表。

.......................错误!未定义书签。

第3章栈和队列................................................... 错误!未定义书签。

【习】习3-5 栈和队列有何异同?................................错误!未定义书签。

【习】能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么?....................................................................错误!未定义书签。

【习】能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)?为什么?............................................................错误!未定义书签。

【习】能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么?....................................................................错误!未定义书签。

第4章串 ........................................................ 错误!未定义书签。

【习】实验找出两个字符串中所有共同的字符。

...................错误!未定义书签。

【习】习4-9(1) 已知目标串为"abbaba"、模式串为"aba",画出其KMP算法的匹配过程,并给出比较次数。

......................................................错误!未定义书签。

【习】习4-9(2) 已知target="ababaab"、pattern="aab",求模式串的next数组,画出其KMP 算法的匹配过程,并给出比较次数。

....................................错误!未定义书签。

第5章数组和广义表............................................... 错误!未定义书签。

【习】求一个矩阵的转置矩阵。

...................................错误!未定义书签。

第6章树和二叉树................................................. 错误!未定义书签。

【习】画出3个结点的各种形态的树和二叉树。

......................错误!未定义书签。

【习】找出分别满足下面条件的所有二叉树。

.......................错误!未定义书签。

【习】输出叶子结点。

...........................................错误!未定义书签。

【习】求一棵二叉树的叶子结点个数。

.............................错误!未定义书签。

【习】判断两棵二叉树是否相等。

.................................错误!未定义书签。

【习】复制一棵二叉树。

.........................................错误!未定义书签。

【习】二叉树的替换操作。

.......................................错误!未定义书签。

【习】后根次序遍历中序线索二叉树。

.............................错误!未定义书签。

第7章图 ........................................................ 错误!未定义书签。

第8章查找 ...................................................... 错误!未定义书签。

【习】实验顺序表的查找、删除、替换、比较操作。

...............错误!未定义书签。

【习】实验单链表的全部替换操作。

.............................错误!未定义书签。

【习】实验单链表的全部删除操作。

.............................错误!未定义书签。

【习】折半查找的递归算法。

.....................................错误!未定义书签。

【习】二叉排序树查找的递归算法。

...............................错误!未定义书签。

【习】二叉排序树插入结点的非递归算法。

.........................错误!未定义书签。

【习】判断一棵二叉树是否为二叉排序树。

.........................错误!未定义书签。

第9章排序 ...................................................... 错误!未定义书签。

【习】判断一个数据序列是否为最小堆序列。

.......................错误!未定义书签。

【习】归并两条排序的单链表。

...................................错误!未定义书签。

【习】说明二叉排序树与堆的差别。

...............................错误!未定义书签。

图下标和相等的数字方阵算法描述.................................错误!未定义书签。

图 =p将改变结点间的链接关系.....................................错误!未定义书签。

图目标串"abbaba"和模式串"aba"的KMP算法模式匹配过程.............错误!未定义书签。

图目标串"ababaab"和模式串"aab"的KMP算法模式匹配过程............错误!未定义书签。

图 3个结点树和二叉树的形态......................................错误!未定义书签。

图单支二叉树...................................................错误!未定义书签。

图归并两条排序的单链表.........................................错误!未定义书签。

表模式串"aab"的next数组........................................错误!未定义书签。

第0章 Java程序设计基础【习0.1】实验哥德巴赫猜想。

【习0.2】实验杨辉三角形。

【习0.3】实验金额的中文大写形式。

【习0.4】实验下标和相等的数字方阵。

输出下列方阵(当n=4时)。

1 2 6 7 或 1 3 4 103 5 8 13 2 5 9 114 9 12 14 6 8 12 1510 11 15 16 7 13 14 16采用二维数组实现。

二维数组中,每一条斜线上各元素下标和相等,如图所示。

图0.1 下标和相等的数字方阵算法描述程序如下。

public class Upmat{public static void main(String args[]){表0.1 int n=4; ength; j++) 8.2.18.2.1ength, ;for (int i=0; i< i++)for (int j=0; j<[i].length; j++) [j][i]=[i][j];return trans;}第6章树和二叉树【习6.1】画出3个结点的各种形态的树和二叉树。

相关文档
最新文档