我有两道数据结构的问题 希望能给出详细解答和做题步骤?

1.待散列存储的数据集合为{32,75,29,63,48,94,25,46,18,70,56},散列地址空间为HT[13],若采用除留余数法构造散列函数和链接法(或线性探查法)处理冲突,试求出每一元素的散列地址,画出最后得到的散列表,求平均查找长度。

2.已知哈希表地址空间为0..14,哈希函数为H(k)=k mod 13,采用线性探测法处理冲突。将下面各数依次存入该散列表中,并求出在等概率下的平均查找长度。
240, 29, 345, 189, 100, 20, 21, 35, 3, 208, 78, 99, 45, 350

数据结构与算法的地位对于一个程序员来说不言而喻。今天这篇文章不是来劝你们学习数据结构与算法的,也不是来和你们说数据结构与算法有多重要。
主要是最近几天后台有读者问我是如何学习数据结构与算法的,有没有什么捷径,是要看视频还是看书,去哪刷题等.....而且有些还是大三大四的,搞的我都替你们着急、担心.....
所以我今天就分享下自己平时都是怎么学习的。
学习算法的捷径就是多刷题
说实话,要说捷径,我觉得就是脚踏实地着多动手去刷题,多刷题。
但是,如果你是小白,也就是说,你连常见的数据结构,如链表、树以及常见的算法思想,如递归、枚举、动态规划这些都没学过,那么,我不建议你去刷题的。而是先去找本书先去学习这些,然后再去刷题。
也就是说,假如你要去诸如leetcode这些网站刷题,那么,你要先具备一定的基础,这些基础包括:
1、常见数据结构:链表、树(如二叉树)。
2、常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法。
以上列出来的算是最基本的吧。就是说你刷题之前,要把这些过一遍再去刷题。如果你连这些最基本的都不知道的话,那么你再刷题的过程中,会很难受的,思路也会相对比较少。
总之,千万不要急,先把这些基本的过一遍,力求理解,再去刷题。这些基础的数据结构与算法,我是在大一第二学期学的,我没看视频,我是通过看书学的,那时候看的书是:
1、算法分析与分析基础:这本比较简单,推荐新手看。
2、数据结构与算法分析---C语言描述:代码用C写的,推荐看。
3、挑战程序设计竞赛(第二版):也是很不错的一本书,推荐看。
温馨提示:答案为网友推荐,仅供参考
相似回答