c语言 map
时间: 2023-07-27 10:12:59 浏览: 326
C 语言 map实现
5星 · 资源好评率100%
C语言本身不提供Map(映射)的数据结构,但可以通过自定义数据结构实现类似Map的功能。以下是一种常见的实现方式:
1. 定义一个结构体,包含两个成员,一个是键(key),另一个是值(value)。
```c
typedef struct {
int key;
int value;
} MapNode;
```
2. 定义一个动态数组,用于存储MapNode结构体,实现类似Map的功能。
```c
MapNode* map = NULL;
int map_size = 0;
void map_put(int key, int value) {
// 遍历map,如果已经存在该key,则更新对应value的值
for (int i = 0; i < map_size; i++) {
if (map[i].key == key) {
map[i].value = value;
return;
}
}
// 如果不存在该key,则将新的MapNode结构体添加到map中
map_size++;
map = (MapNode*)realloc(map, map_size * sizeof(MapNode));
map[map_size - 1].key = key;
map[map_size - 1].value = value;
}
int map_get(int key) {
for (int i = 0; i < map_size; i++) {
if (map[i].key == key) {
return map[i].value;
}
}
// 如果不存在该key,则返回一个默认值(例如0)
return 0;
}
```
使用示例:
```c
map_put(1, 100);
map_put(2, 200);
map_put(3, 300);
int value1 = map_get(1); // value1 = 100
int value2 = map_get(2); // value2 = 200
int value3 = map_get(3); // value3 = 300
int value4 = map_get(4); // value4 = 0
```
这只是一种简单的实现方式,实际上还可以使用哈希表等数据结构来实现Map的功能。
阅读全文