数据结构期末练习题.docx

上传人:b****8 文档编号:8833471 上传时间:2023-02-02 格式:DOCX 页数:11 大小:54.22KB
下载 相关 举报
数据结构期末练习题.docx_第1页
第1页 / 共11页
数据结构期末练习题.docx_第2页
第2页 / 共11页
数据结构期末练习题.docx_第3页
第3页 / 共11页
数据结构期末练习题.docx_第4页
第4页 / 共11页
数据结构期末练习题.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构期末练习题.docx

《数据结构期末练习题.docx》由会员分享,可在线阅读,更多相关《数据结构期末练习题.docx(11页珍藏版)》请在冰豆网上搜索。

数据结构期末练习题.docx

数据结构期末练习题

1.数据的不可分割的基本单位是(A)。

A.元素  B.结点  C.数据类型  D.数据项

2.计算机处理数据的最小单位是(D)。

A.元素  B.结点  C.数据类型  D.数据项

3.算法是指(C)。

 

A.计算方法         B.排序方法

C.解决问题的有限运算步骤  D.查找方法

4.顺序存储结构中数据元素之间的逻辑关系是由(C)表示的

A线性结构B非线性结构C存储位置D指针

5.单循环链表的主要优点是(B)。

A不再需要头指针了B从表中任一结点出发都能扫描到整个链表;

C已知某个结点的位置后,能够容易找到它的直接前趋;

D在进行插入、删除操作时,能更好地保证链表不断开。

6.

此题的解决步骤是如果出现一个三元素顺序是a、b、c,且a>c>b,则为不可能序列

一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是(C)。

A54321B45321C43512D12345

7.常对数组进行的两种基本操作是(B)

A.建立和删除B.索引和修改C.插入和修改D.插入和索引

8.算法分析的两个主要方面是(A)。

A空间性能和时间性能B正确性和简明性C可读性和文档性D数据复杂性和程序复杂性

在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个(B)结构。

(1)s->next=p->next;

(2)p->next=s;(3)s=p->next;分别代表什么含义

1)把p的下一个节点接到s的下一个节点上2)把s接到p的下一个节点上3)把p的一下个节点赋值给s

当深度(高度)为h时,结点数n满足:

可知,所以其深度h为向下取整+1

取出一个点作为一个无向图,其余点作为另一个无向图,则其点连线最多,使用的点最少,,共需9个点

键盘中输入并初始化字符串

Scannersc=newScanner;

StringBuffers=newStringBuffer());

2.定义一个变量charch;

定义一个变量inti;

3.加密过程

对字符串中每个字符的ASCII值+1

for(i=0;i<();i++)

*

{

ch=(i);

ch=(char)((int)(ch)+1);

(i,ch);

}

4.输出加密之后的结果

"加密之后的字符串是:

"+s);

5.解密过程

对加密串中每个字符的ASCII值执行-1操作

for(i=0;i<();i++)

%

{

ch=(i);

ch=(char)((int)(ch)-1);

(i,ch);

}

6.输出加密之后的结果

"解密之后的字符串是:

"+s);

1.写出利用栈,将非负的十进制整数M转化为基于N的N进制数的算法。

1.定义变量

intm,n,e,i;

|

定义栈

SeqStacks=newSeqStack();

2.从键盘获取非负的十进制整数

"请输入要转换的十进制正数:

");

Scannersc=newScanner;

m=();

3.获取转化为基于N的N进制数

"请输入要转换的数制:

");

n=();

4.用M除N,得到商数和余数,将余数放入栈中;

;

当商数不为0,继续用商数除N,得到新的商数和余数,余数入栈。

当商数为0,循环结束。

while(m!

=0)

{

e=m%n;

(e);

m=m/n;

}

5.输出转化结果,若N为16时则按照如下规则输出结果

"转化结果为:

");

^

while()!

=true)

{

i=();

if(n==16)

{

if(i==10)'A'+"");

elseif(i==11)'B'+"");

elseif(i==12)'C'+"");

elseif(i==13)'D'+"");

elseif(i==14)'E'+"");

:

elseif(i==15)'F'+"");

else"");

}

else"");

}

}

}

2.写出利用栈和队列,判断一个字符串是否是回文串的算法。

1.取出字符串中的一个字符,分别入栈和入队列。

!

booleanpal(Stringstr)

{

for(i=0;i<();i++)

{

ch=(i);

(ch);(ch);

}

2.重复第1步,直到字符串结束。

3.栈顶元素出栈,队头元素出队列,两者比较是否相等

 如果不相等,则该字符串不是回文串

%

 如果相等,重复第3步,直到栈为空或者队列为空。

while()==false)

{

ch1=();ch2=();

if(ch1!

=ch2)returnfalse;

}

4.如果栈为空或者队列为空,则该字符串是回文串。

if()==true)returntrue;

3.写出求n!

的递归算法。

intfun(intn){

if(n==1||n==0)

return1;

else

returnn*fun(n-1);

}

4.写出求2个正整数m*n的递归算法。

intmul(intm,intn){

if(m==0||n==0)return0;

[

elseif(m==1)returnn;

elsereturnn+mul(m-1,n);

}

5.写出递归算法求数组中最大值、最小值和平均值。

求数组中的最大值

1.定义递归函数

intmax(intA[],intn)

2.判断n是否为1

若n为1则返回结果A[0]跳转至3

若n不为1则执行递归体并跳转至2

if(n==1)returnA[0];

else

return(max(A,n-1)>A[n-1]max(A,n-1):

A[n-1]);

3.结束算法

求数组中的最小值

1.定义递归函数

intmin(intA[],intn)

2.判断n是否为1

若n为1则返回结果A[0]跳转至3

若n不为1则执行递归体并跳转至2

&

if(n==1)returnA[0];

else

return(min(A,n-1)

A[n-1]);

3.结束算法

求数组平均值

1.定义递归函数

doubleavg(intA[],intn)

2.判断n是否为1

若n为1则返回结果A[0]跳转至3

若n不为1则执行递归体并跳转至2

if(n==1)returnA[0];

elsereturn((A[n-1]+avg(A,n-1)*(n-1))/n);

3.结束算法

6.写出判断字符串是否是回文串的递归算法。

1.定义递归函数

booleanpalindrome(StringBuffers)

2.判断s的长度是否为0或为1

若s的长度为0或为1则返回结果true并跳转至3

若s的头尾不相等则返回false并跳转至3

;

若s的头尾相等则判断原来的字符串去掉头尾字符之后剩余的部分并跳转至2

if()==0||()==1)

returntrue;

else

{

if(0)!

=()-1))

returnfalse;

elsereturnpalindrome(newStringBuffer(1,()-1)));

}

3.结束算法输出字符串是否为回文串

7.《

8.写出实现字符串的逆转操作的递归算法。

1.定义递归函数

StringreverseString(Strings)

2.判断字符串是否为空串,或者字符串中只有一个字符,若是跳转至4

if())returns;

3.将字符串头尾字符交换;并交换字符串去掉头尾字符之后的字串后跳转至2。

returnreverseString

(1))+(0);

4.结束算法并输出s

三.问答题

1.]

2.什么是数据结构

数据的结构指的是数据元素之间存在的关系,一个数据结构是由n(n≥0)个数据元素组成的有限集合,数据元素之间具有某种特定的关系。

数据结构概念包括三个方面:

数据的逻辑结构、数据的存储结构和对数据的操作。

3.什么是逻辑结构数据的逻辑结构分为几类

数据的逻辑结构就是来表示数据之间的逻辑关系的。

逻辑结构有四种基本类型:

集合结构、线性结构、树状结构和图状结构

4.什么是存储结构数据的存储结构有哪些

数据的逻辑结构在计算机中的表示。

主要分顺序存储结构和链式存储结构两种。

5.顺序存储结构和链式存储结构的优缺点顺序表中的数据元素是如何存储的链表中的数据元素是如何存储的在什么情况下使用顺序表和链表比较好

链式存储结构:

;

(1)占用额外的空间以存储指针(浪费空间)

(2)存取某个元素速度慢

(3)插入元素和删除元素速度快

(4)没有空间限制,存储元素的个数无上限,基本只与内存空间大小有关.

顺序存储结构:

(1)空间利用率高

(2)存取某个元素速度快

(3)插入元素和删除元素存在元素移动,速度慢,耗时

(4)有空间限制,当需要存取的元素个数可能多于顺序表的元素个数时,会出现"溢出"问题.当元素个数远少于预先分配的空间时,空间浪费巨大.

顺序存储占用物理地址连续的一块空间来存储元素,元素之间的关系就是相邻元素间的关系;链式存储占用的物理地址可连续可不连续,所以要找到某个元素的后继必须用指针来指示。

#

以查找为主用顺序表,以插入为主用链表。

6.什么是算法算法的五大特性是什么怎么描述算法

1.有穷性,算法是执行时候运行的有穷性,程序只是一段实现算法的代码

2.确定性,算法对于特定的输入有特定的输出,程序提供了确定算法结果的平台

3.可行性,算法需要考虑设计的可能,程序则具体是实现算法上的设计

4.输入,算法有输入,算法的输入依靠程序的平台提供

5.输出,算法的输出也靠代码的支持。

可以用伪代码,用自然语言也可以

描述算法的方法有多种,常用的有自然语言、结构化流程图、伪代码和PAD图等,其中最普遍的是流程图。

7.栈是什么请描述栈的操作特性,并画图说明。

:

栈是一种特殊的线性表,其插入和删除操作只允许在线性表的一段进行。

允许操作的一段称为栈顶,不允许操作的一段称为栈底。

操作特性为:

后进先出

8.队列是什么队列的操作特性

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

先进先出

9.请阐述栈和队列的异同点。

栈是限定只能在表的一端进行插入和删除操作的线性表。

队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。

从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。

但它们是完全不同的数据类型。

除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。

栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。

和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。

.

10.什么是递归递归的两个基本要素是什么请阐述递归程序和非递归程序的优缺点。

序和非递归程序的优缺点。

递归:

就是一个函数直接或间接的调用函数本身,这就是递归。

递归的两个基本要素:

递归体和递归出口。

递归程序和非递归程序优缺点

递归程序:

1.结构清晰过程简洁明了,程序体较小

2.堆栈占用内存较大,递归算法的运行效率较低。

非递归:

1.过程更加有条理

2.程序体较大

11.请阐述线性结构和树状结构的异同点。

同:

都是逻辑结构

异:

线性结构是一对一的结构,是最简单的结构.它只有一个没有前驱、只有后继的结点,叫着首结点;只有一个没有后继、只有前驱的结点,叫着尾结点;其余的结点都只有一个直接前驱和一个直接后继.

  树形结构是一对多的结构,是比较复杂的非线性结构.它只有一个没有前驱、只有后继的结点,叫着根结点;可有多个没有后继、只有前驱的结点,叫着叶子结点;其余的结点都只有一个直接前驱和多个直接后继.

12.二叉树的五种形态

个结点空二叉树

个结点,根结点

3.由根结点和左子树组成,根的右子树为空

4.由根结点和右子树组成,根的左子树为空

5.由根结点,左子树右子树组成

13.简述顺序查找算法和折半查找算法的优缺点和各自的适用范围。

顺序查找的效率很低,但是对于待查的结构没有任何要求,而且算法非常简单,当待查表中的记录个数较少时,采用顺序查找较好.

折半查找法的平均查找长度小,查找速度快,但是它要求表中的记录是有序的,且只能用于顺序存储结构。

若表中的记录经常变化,为保持表的有序性,需要不断进行调整,这在一定程度上要降低查找效率。

因此,对于不常变动的有序表,采用折半查找是比较理想的。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1