数据结构NOJ——23构造哈希表

数据结构NOJ——23构造哈希表

#include<iostream>
using namespace std;

#define SIZE 11
#define NULLKEY 0

typedef struct {
	int key;
	int flag;//计算地址的次数
}RecordType,*HashTable;


void HashSreach(HashTable ht,int data[]) {
	for (int i = 0; i <SIZE; i++) {
		ht[i].key = 0;
		ht[i].flag = 0;
	}

	int address,sum;
	for (int i = 0; i < 8; i++) {
		address = (3 * data[i]) % 11;
		sum = 1;
		if (ht[address].key == 0) {//该地址未放入关键字
			ht[address].key = data[i];
			ht[address].flag=1;
		}
		else {//发生冲突
			do{
				address = (address + 1) % 11;
				sum = sum + 1;
			} while (ht[address].key != 0);
			ht[address].key = data[i];
			ht[address].flag = sum;
		}

	}
}

void ASL(HashTable ht) {
	int sum = 0;
	for (int i = 0; i < SIZE ; i++) {
		if (ht[i].key)
			sum += ht[i].flag;
	}
	double  ASL = sum / 8;
	cout << ASL;
}


void main() {
	int data[8] = { 22,41,53,46,30,13,01,67 };
	HashTable ht = (RecordType*)malloc(SIZE * sizeof(RecordType));
	HashSreach(ht, data);
	ASL(ht);
}
上一篇:Python快速入门100题(西北工业大学noj)


下一篇:Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少(蓝桥基础实战)