数据结构 为关键字序列{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}构造链地址法的散列表

在线等待!我不是太清楚散列表的长度是否该为26!然后首字母相同的朝后填!
就是类似此种!只是换成了关键字,我不清楚表的长度是多少!

显然不能是26啊,一般来讲散列表的长度(在c中)确定之后就不改变了,所以会多留出若干位的
所以你最起码得27位。否则要是出现{z,z,a,b,c,d}这种多悲剧啊,明明只有一个冲突,但是因为你是线性再探,所以就会占用其他人的地方导致各种冲突。追问

但是首字母只有八种,是不是应该是10啊!我问别人说哈希表的长度是10

追答

这个,之所以要做散列表,是因为我们在录入数据之前不知道会录入怎样的数据,为了能够快速存取而使用散列表技术。
但你现在的情况是只有这12种,而且还是确定的,本来这种情况是不需要用散列表的,但如果非得用散列表(比如作业要求),只能当作未知的处理了,要不多少感觉没意义了。。。
刚刚仔细看了你的图,发现是用链地址法,那样的话26就可以了(之前没仔细读,望谅解)
如果老师非得强调未出现的字母不用分配空间的话,你就按它的意思去办吧。。。。
否则一定是26的,因为用散列表的时候你不会知道到底会有怎样的数据加进来的

追问

我问了老师,她的意思是12,因为知道了储存的数据个数是12,当然你说的26其实也不错!如果尽可能减少存储空间的话,折中一下,12即可。也就是当,题没注明散列表长度的话,就按关键字个数来定。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-11
char a[12][3]={Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}追问

额!这算什么答案呀!

追答

用二维数组也可,用共用体也就是枚举类型也可

追问

我的意思就是一般的链地址法!别搞这个啊!

追答

不好意思,散列表我真的不熟悉了,忘得差不多了

相似回答