数据结构简答题

1.稳定的排序算法

2.满二叉树

3.完全二叉树

4.前缀编码

5.最优二叉树

6.串的模式匹配算法的改进(KMP)

7.递归,特点

8.关键路径

9.简述拓扑排序算法

10.抽象数据类型

11.数据类型

12.算法五个特性?好算法四要求?

13.算法?

14.散列表?查找效率取决于?同义词?

15.二叉排序树(BST)?平衡二叉树(AVL)? 平衡因子?装填因子?

16.数据结构?

17.时间复杂度?语句的频度?

18.顺序查找

19.字符串相等充要条件

20.描述头指针,头节点,首元结点(第一个元素结点)

21.线性表的两种存储结构各有那些优缺点?

22.在单循环链表中增设尾指针比设置头指针好吗?


1.稳定的排序算法

 若Ri=Rj,排序前的序列中Ri领先于Rj,排序后Ri仍然领先于Rj,则称排序算法是稳定的,否则,为不稳定。

2.满二叉树

一颗深度为k且含有2^k-1个结点的二叉树称为满二叉树。

3.完全二叉树

深度为k的,有n个节点的二叉树,当且仅当每一个结点都与深度为k的满二叉树中编号从一至n的结点一一对应时,称为完全二叉树。

4.前缀编码

任一个字符的编码都不是其他字符编码的前缀,称这样的编码为前缀编码。

5.最优二叉树

在含有n个带权叶结点的二叉树中,其中带权路径长度WPL最小的二叉树称作最优二叉树。

6.串的模式匹配算法的改进(KMP)

每当一次匹配过程中出现字符比较不等时,不需要回溯 i 指针,而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较。O(m+n)

7.递归,特点

递归指的是在函数的定义中使用函数自身的方法。

结构清晰,程序易读,正确性易证明。

8.关键路径

在AOE网中,有些活动是可以并行进行的,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径。

9.简述拓扑排序算法

  1. 在有向图中选择一个无前驱的顶点并输出
  2. 从图中删除该顶点和所有以它为尾的弧
  3. 重复1和2至全部顶点均已输出,或者图中不存在无前驱的顶点为止。

10.抽象数据类型

抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。

11.数据类型

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

12.算法五个特性?好算法四要求?

有穷性、确定性、可行性、输入、输出。

正确性、可读性、健壮性、效率与低存储需求。

13.算法?

算法是对特定问题求解步骤的一种描述,是指令的有限序列。

14.散列表?查找效率取决于?同义词?

散列表是根据关键字而直接进行访问的数据结构。散列表建立了关键字和和存储地址之间的一种直接映射关系。

查找效率取决于三个因素:散列函数、处理冲突的方法、装填因子。

两个不同的关键字,由于散列函数值相同而被映射到散列表的同一位置上,该现象称为冲突。发生冲突的两个关键字称为该散列函数的同义词。

15.二叉排序树(BST)?平衡二叉树(AVL)? 平衡因子?装填因子?

二叉排序树或者是一颗空树;或者是具有下列性质的二叉树:若左子树非空,则左子树上所有结点的值均小于的根节点的值,若右子树不空,则右子树所有结点的值均大于根节点的值,左、右子树也分别是一颗二叉排序树。

任意结点的左、右子树高度差的绝对值不超过一,将这样的二叉树成为平衡二叉树。

定义结点左子树与右子树的高度差为该结点的平衡因子。

装填因子=表中记录数n/散列表长度m。

16.数据结构?

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

根据数据元素间关系的不同特性: 集合、线性结构、树形结构、图状结构或网状结构

17.时间复杂度?语句的频度?

一般情况下,算法中基本操作的执行次数是问题规模n的某个函数 f(n)。记 T(n)=O(f(n)),表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐进时间复杂度。

语句的频度指的是该语句重复执行的次数。

18.顺序查找

查找(searching)就是根据给定的某一个值,在查找表中确定一个关键字等于给定值的数据元素(或记录)。查找表(Search Table)是由同一类型的数据元素(记录)构成的集合。关键字(Key)是数据元素中某一个数据项的值,称为键值,用来标识一个数据元素。

顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术。它的查找过程为: 从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,如果某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找不成功。
 

int Sequential_Search(int *a,int n,int key)//数组定义长度为a[n+1]
{
    int a[0] = key;//哨兵
    int i = n;
    while(a[i] != key)
        i--;    //对于内置数据类型,--i和i--的效率一样,而对于自定义类型(类)的重载--运算符函数效率不同。(前者效率更高。)
    return i;   //返回0表示没有匹配的值。查找失败必然会返回0(以为a[0]值即为key,跳出循环)
}

19.字符串相等充要条件

长度相等,并且各个对应位置上的字符都相等

20.描述头指针,头节点,首元结点(第一个元素结点)

头指针是指向链表中第一个结点的指针。

首元结点是链表中存储第一个数据元素的结点。

头结点是在首元节点之前附设的一个结点,它不存储数据元素,其指针域指向首元结点。主要作用是为了方便链表的操作,把对空表、非空表以及首元结点的操作进行统一处理。

21.线性表的两种存储结构各有那些优缺点?实现?

顺序存储结构借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助数组类型描述。而链式存储结构为表示结点间关系,给每个结点附加指针字段,通常借助指针类型描述。

顺序存储结构可以直接存取数据元素,方便灵活,存储密度高,但插入、删除操作会引起元素的大量移动,效率低。

链式存储结构内存采用动态分配,利用率高,结点的插入、删除操作比较简单,但需增设指示结点间关系的指针域,存取数据元素不如顺序存储方便。

22.在单循环链表中增设尾指针比设置头指针好吗?

是的。尾指针是指向终端结点的指针,用它表示单循环链表可以使得查找链表的开始结点和终端结点都很方便。设一带头结点的单循环链表的尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next  和 rear ,查找时间都是O(1)。若用头指针,则查找终端结点时间为O(N)。

23.邻接矩阵和邻接表的区别?

对于任意确定无向图,邻接矩阵唯一,但邻接表不唯一。

邻接矩阵空间复杂度O(n),邻接表空间复杂度O(n+e)

邻接矩阵多用于稠密图,邻接表多用于稀疏图。

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值