@ada;
一下回答一下
typedef struct LNode{
int data;
struct LNode *next;
}*LinkList;
double GetAverage(LinkList &L)
{
double sum=0;
double average;
int num = 0;
LinkList p = L;
while(p!=NULL)
{
sum += p->data;
num++;
p = p->next;
}
average = sum * 1.0 / num;
return average;
}
问题解答:
对于哈希表中的平方探测法的处理哈希冲突,每次发生哈希冲突时,不是一直增加固定的值,而是用一个增量序列来计算下一个探测位置。增量序列通常使用二次探测,具体计算公式为:$h_i = (h_i-1 + di)\mod m$,其中$h_i$表示每次探测的哈希表位置,$di$表示增量,$m$表示哈希表大小。可以看到,每一个探测位置都是由前一个探测位置加上一个增量计算而来的,因此不是一直增加固定的值。
在使用哈希查找的填空题中提到的一些概念,可以参考以下资料:
建议多去查阅一些数据结构与算法的相关资料,例如极客时间的数据结构与算法专栏、《算法(第四版)》等。
附:统计字符串中字母、数字、空格和其他字符的个数的代码实现(C语言):
#include<stdio.h>
void TongJi(char s[])
{
int ZiMu = 0, KongGe = 0, ShuZi = 0, QiTa = 0, i;
for (i = 0; s[i] != '\0'; i++)
{
if (s[i] == 32) KongGe++;
else if ((s[i] >= 48) && (s[i] <= 57)) ShuZi++;
else if (((s[i] >= 97) && (s[i] <= 122)) || ((s[i] >= 65) && (s[i] <= 90))) ZiMu++;
else QiTa++;
}
printf("空格:%d;数字:%d;字母:%d;其他:%d。\n", KongGe, ShuZi, ZiMu, QiTa);
}
int main()
{
char s[100];
printf("请输入字符串:");
gets_s(s);
TongJi(s);
return 0;
}