数据结构简答题

栈和队列,有哪些性质,他们之间有哪些区别,以及他们在非线性数据结构中的应用

【答案】栈和队列都是操作受限的线性表,栈只能在一端(栈顶)进行进出的线性表,而队列是只能在一端(队尾)插入,在另一端(队头)进行删除的线性表,树的先中后序遍历可以通过栈来实现,从而避免递归操作,树的层次遍历,可以通过循环队列实现。

 队列
线性表受限受限
线性表进出一端(栈顶)一端插入另一端删除
实现树的先中后续遍历(避免递归操作)树的层次遍历(循环队列)

拓展栈和堆的区别

栈区:由编辑器自动分配释放,存放函数的参数值,局部变量的值等(基本类型值)。

堆区:由程序员分配释放,若程序员不释放,程序结束时可能有OS回收(引用类型值)。

栈(数据结构):一种先进后出的数据结构。

堆(数据结构):堆可以被看成是一棵树,如:堆排序。

 
数据结构一种先进后出的数据结构堆可以看成是一棵树
编辑器自动分配释放手动释放

对于给定的数组

 abcde f

画出该数组所对应的二叉树,然后将该二叉树转换成树或者森林

【答案】

如何使用两个栈,使实现一个队列的功能

【答案】 假设两个栈 A 和B,且都为空。

 可以认为栈 A 为提供入队列的功能,栈 B 提供出队列的功能。
 入队列: 入栈 A
 出队列:
 1 如果栈B 不为空,直接弹出栈 B 的数据。
 2 如果栈 B 为空,则依次弹出栈 A 的数据,放入栈 B 中,再弹出栈 B 的数据。

已知一组关键字为{26,36,41,38,44,15,68,12,6,51,25},用线性探测法解决冲突,装填因子a=0.75,Hash函数为H(key)=key Mod P 。求最终存储结果和查找成功时的平均长度ASL1。

【答案】装填因子为a=0.75,表中元素个数为n=11,表长为n/a向上取整等于15

H(26)=11    H(36)=6    H(41)=11    H(38)=8    H(44)=14    H(15)=0   H(68)=8   H(12)=12   H(6)=6    H(51)=6    H(25)=10   

 

p为不大于表长的最大素数,p=13,因此H(key)=Key Mod 13

ASL1=(1+7+1+2+1+2+5+1+2+2+1)/11=26/11

装填因子:a=n/m     其中n 为关键字个数(11),m为表长(14.66向上取整为15)。

对p的选择很重要,一般取素数或m

对于给定的序列{8,10,3,14,13,1,6,4,7}画出该序列依次插入产生的二叉搜索树

二叉搜索树(二叉排序树)

(1)若左子树不为空,则左子树上所有节点的值均小于或等于它的根节点的值。(2)若右子树不为空,则右子树上所有节点的值均大于或等于它的根节点的值。(3)左、右子树也分别为二叉搜索树。

写出下图的任意一种从结点A开始的深度优先搜索遍历

深度优先遍历简称DFS(Depth First Search)

广度优先遍历简称BFS(Breadth First Search)

【答案】A->F->H->G->E->C->D->B

对关键码序列28,16,32,12,60,2,5,72,进行快速排序,按从小到大的顺序进行,则第一趟排序的结果为。

【答案】5,16,2,12,28,60,32,72

这种题怎么做呢~

(1)首先从这组数据中取中间值枢纽元素(先移出去),比如2,5,12,16,28,32,60,72(枢纽元素是可以随便选的,不是指定的)

(2)i从最左边开始,j从最右边开始,当i所对应的值>28同时j所对应的值<28,则i和j对应的值互换

序列163212602572
i和j i   j 

互换后

序列165126023272
i和j   ij  

再移动i和j最后生成

序列165122603272
i和j   ji  

最终在i和j当中插入28

序列16512228603272
i和j   j i  

有n个结点,的无向连通图G,证明他至少有n-1条边,且无向连通图G必定能转成树。

【答案】任取一个结点为起始结点,每有一个顶点加入图中,就至少会生成一条边,因为图是连通的,所以n个顶点需要至少需要n-1条边的连接。同时当图中只有n-1条边时,每个结点都只可能与一个结点相连,一定不会产生环,因此n个结点n-1条边的无向图一定是一颗树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值