算法简答

1、顺序表有什么特点和优点?

特点:
(1)存储单元连续;
(2)利用数据元素的存储位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构与存储结构(物理结构)一致;
(3)随机存储结构;
(4) 存储的密度大。
优点:
(1)不需要为表示元素间的逻辑关系而增加额外的存储空间
(2)在顺序表中可以方便的随机存取任意元素

2、链表有什么特点和优点?

优点:
(1)插入和删除的效率高,只需要改变指针的指向就可以进行插入和删除。
(2)内存利用率高,不会浪费内存,可以使用内存中细小的不连续的空间,只有在需要的时候才去创建空间。
(3)大小不固定,拓展很灵活。
特点:
链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起,每个结点包括两个部分:一个是存储数据元素 的数据域,另一个是存储下一个结点地址的 指针。如果要访问链表中一个元素,需要从第一个元素始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以。

3、上述的这些操作在顺序存储结构上如何实现?

1)线性表的插入:线性表的插入是指在表的第i个位置,插入一个新元素,使长度为n的线性表变成长度为n+1的线性表。
如果在第i个位置插入,就必须把第i个元素到第n个元素之间共n-i+1个元素依次向后移动一个位置,再将新元素插入到第i个位置,线性表的长度变为n+1。
2)线性表的删除:线性表的删除是指将表的第i个元素删去,使长度为n的线性表变为长度为n-1的线性表,将第i个元素以后的所有元素依次向前移动一个位置,并将线性表的长度减一。
3)线性表的查找:
(1)按值查找:从第一个元素开始,依次将表中的所有元素都与该元素相比,若值相等,则查找成功,返回该元素在表中的序号;若该元素的值与表中所有元素都不相等,则查找失败,返回“-1”。
(2)按序号查找:在线性表L中查找第i个数据元素,首先需要判断给定的序号i是否合法,即1<=i<=listlength(L),i合法则返回线性表中的第i个元素,否则给出错误提示。

1、栈与递归之间有何关系?

1)递归是一种程序设计的方式和思想。计算机在执行递归程序时,是通过栈的调用来实现的。
2)栈是一种限定性线性表,是将线性表的插入和删除运算限制在表的一端进行。栈的修改是按照“先进后出”的原则进行的。
3)递归程序是将复杂问题分解为一系列简单的问题,从要解的问题起,逐步分解,并将每步分解得到的问题放入“栈”中,这样栈顶是最后分解得到的最简单的问题,解决了这个问题后,次简单的问题可以得到答案,以此类推。

1、n个节点的完全二叉树中有多少的非叶节点?

n/2 向下取整,或者(n-1)/2 向上取整

1、图的邻接矩阵和邻接表表示各有什么优缺点?

(1).在邻接矩阵表示中,无向图的邻接矩阵是对称的。矩阵中第 i 行或 第 i 列有效元素个数之和就是顶点的读。在有向图中 第 i 行有效元素个数之和是顶点的出度,第 i 列有效元素个数之和是顶点的入度。
(2).在邻接表的表示中,无向图的同一条边在邻接表中存储的两次。如果想要知道顶点的读,只需要求出所对应链表的结点个数即可。有向图中每条边在邻接表中只出现一此,求顶点的出度只需要遍历所对应链表即可。求出度则需要遍历其他顶点的链表。
(3).邻接矩阵与邻接表优缺点:
邻接矩阵的优点是可以快速判断两个顶点之间是否存在边,可以快速添加边或者删除边。而其缺点是如果顶点之间的边比较少,会比较浪费空间。因为是一个 n∗nn∗n 的矩阵。 而邻接表的优点是节省空间,只存储实际存在的边。其缺点是关注顶点的度时,就可能需要遍历一个链表。还有一个缺点是,对于无向图,如果需要删除一条边,就需要在两个链表上查找并删除。

1.线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

2.什么是数据结构?

数据结构是计算机存储知识数据的方式,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构研究的是数据的逻辑结构和数据的物理结构,以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的类型。

有关数据结构的讨论涉及哪三个方面?

① 数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构; ② 数据成员极其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构; ③ 施加于该数据结构上的操作。

简述线性结构与非线性结构的不同点。

1.线性结构是最简单最常用的一种数据结构,线性结构的特点是结构中的元素之间满足线性关系,按这个关系可以把所有元素排成一个线性序列。线性表,串,栈和队列都属于线性结构。
2.非线性结构是指在该类结构中至少存在一个数据元素,它具有两个或者两个以上的前驱或后继.如树和二叉树等。

数据的存储结构有那几种?

1.链表;2.数组;3.栈;4.队列

数据结构的运算是定义在逻辑结构上的,而运算的具体实现则是在计算机上进行的。
带头结点的单链表head为空的条件是head->next==NULL。
线性表的逻辑结构是树形结构,其所含元素的个数称为线性表的线性结构长度。

线性表、栈与队有何异同点?

相同点:
都是线性结构,都是逻辑结构的概念。都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表,只是对插入、删除运算加以限制。
不同点:
运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入、删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。

TAG:none

发表新评论