c语言使用哈希表练习
1、指针变量定义
(1)int *a = 0;(错:此时在定义地址值)
(2)int* returnSize;
*returnSize = 0;
(报错,只能初始化一个地址?)
(3)正确定义1
int target = 3;
int* returnSize;
returnSize = ⌖
(4)正确定义2
int target = 3;
int* returnSize = ⌖
2、malloc
C语言:
int* re = malloc(sizeof(int) * 2);
刚开始文件类型弄成了c++,报错了,改成c就好了
c++文件的malloc返回值是void类型,需要强制类型转化
C++:
struct Hashtable* temp = (struct Hashtable*)malloc(sizeof(struct Hashtable));
int* re =(int*)malloc(sizeof(int) * 2);
3、C文件的函数返回值类型错误没有关系
4、C文件的Main函数最后必须加上
return 0;//结束程序
system("pause");//按任意键继续
5、visual studio的一个项目只能有一个文件中带main函数
6、uthash使用:
(1)直接添加uthash.h文件到项目的头文件中。
保存一下会用到的头文件
(2)uthash使用
struct Hashtable { //定义哈希结构
int key;
int value;
UT_hash_handle hh;
};
struct Hashtable* hashtable; //定义哈希表查找数据
struct Hashtable* temp;
HASH_FIND_INT(hashtable, &ikey, temp);
return temp;
}
int insert(int ikey, int ival) { //在哈希表中插入数据
struct Hashtable* temp = find(ikey);
if (temp == NULL) {
struct Hashtable* temp = malloc(sizeof(struct Hashtable));
temp->key = ikey;
temp->value = ival;
HASH_ADD_INT(hashtable, key, temp);
}
else {
temp->value = ival;
}
}
7、输出格式
printf("%d,%d", re[0], re[1]);
8、for循环中不能定义int i,需要在for之外定义
9、头文件
#include <stdio.h>
#include <stdlib.h>