写一个c语言程序的通讯录,尝试将所有人员及其号码插入到哈希表结构中
时间: 2023-04-08 08:03:17 浏览: 152
可以的,这个问题可以回答。以下是一个简单的C语言程序示例,用于创建一个通讯录哈希表,并将人员及其号码插入其中:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TABLE_SIZE 100
typedef struct _entry {
char* name;
char* phone;
struct _entry* next;
} Entry;
Entry* hash_table[TABLE_SIZE];
unsigned int hash(char* str) {
unsigned int hashval = 0;
for (; *str != '\0'; str++) {
hashval = *str + (hashval << 5) - hashval;
}
return hashval % TABLE_SIZE;
}
void insert(char* name, char* phone) {
unsigned int hashval = hash(name);
Entry* new_entry = (Entry*)malloc(sizeof(Entry));
new_entry->name = strdup(name);
new_entry->phone = strdup(phone);
new_entry->next = hash_table[hashval];
hash_table[hashval] = new_entry;
}
char* lookup(char* name) {
unsigned int hashval = hash(name);
Entry* entry = hash_table[hashval];
while (entry != NULL) {
if (strcmp(entry->name, name) == 0) {
return entry->phone;
}
entry = entry->next;
}
return NULL;
}
int main() {
insert("Alice", "123456");
insert("Bob", "234567");
insert("Charlie", "345678");
printf("Alice's phone: %s\n", lookup("Alice"));
printf("Bob's phone: %s\n", lookup("Bob"));
printf("Charlie's phone: %s\n", lookup("Charlie"));
return 0;
}
```
这个程序使用哈希表来存储通讯录信息,其中每个条目包含一个人员的姓名和电话号码。哈希函数使用了简单的字符串哈希算法,将字符串转换为一个整数索引,然后将条目插入到哈希表中。查找函数使用相同的哈希函数来查找特定的人员,并返回其电话号码。
阅读全文