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.简述顺序查找算法和折半查找算法的优缺点和各自的适用范围。
顺序查找的效率很低,但是对于待查的结构没有任何要求,而且算法非常简单,当待查表中的记录个数较少时,采用顺序查找较好.
折半查找法的平均查找长度小,查找速度快,但是它要求表中的记录是有序的,且只能用于顺序存储结构。
若表中的记录经常变化,为保持表的有序性,需要不断进行调整,这在一定程度上要降低查找效率。
因此,对于不常变动的有序表,采用折半查找是比较理想的。