用C语言实现<key,value>存储程序模块,向外提供创建和增删改查接口功能
时间: 2024-10-01 10:10:14 浏览: 97
在C语言中,由于其缺乏内置的数据结构支持,我们可以选择自定义数据结构如链表或者哈希表来实现类似<key, value>的存储模块。这里简单地演示如何使用链表作为底层数据结构:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义节点结构体
typedef struct Node {
char* key; // 键
char* value; // 值
struct Node* next; // 指向下一个节点的指针
} Node;
// 链表头结点
typedef struct List {
Node* head;
} List;
// 创建一个新的键值对
Node* create_pair(char* key, char* value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->key = strdup(key);
newNode->value = strdup(value);
newNode->next = NULL;
return newNode;
}
// 向链表中添加新节点
void insert(List** list, char* key, char* value) {
Node* newNode = create_pair(key, value);
if (!newNode) return;
if (*list == NULL) {
*list = newNode;
return;
}
Node* curr = *list;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
// 查找指定键的值
char* search(List* list, char* key) {
for (Node* curr = list->head; curr != NULL; curr = curr->next) {
if (strcmp(curr->key, key) == 0) {
return curr->value;
}
}
return NULL; // 如果未找到,则返回NULL
}
// 删除键值对
void delete(List** list, char* key) {
Node* curr = *list->head;
Node* prev = NULL;
if (curr && strcmp(curr->key, key) == 0) {
*list->head = curr->next;
free(curr);
return;
}
while (curr != NULL && strcmp(curr->key, key) != 0) {
prev = curr;
curr = curr->next;
}
if (curr == NULL) return;
prev->next = curr->next;
free(curr);
}
// 示例:提供CRUD操作的API
List* storage_list = NULL;
void init() {
storage_list = (List*)malloc(sizeof(List));
storage_list->head = NULL;
}
void destroy() {
Node* temp = storage_list->head;
while (temp != NULL) {
Node* next = temp->next;
free(temp->key);
free(temp->value);
free(temp);
temp = next;
}
free(storage_list);
}
int main() {
// 初始化、添加、查找、删除操作示例...
init();
insert(&storage_list, "key1", "value1");
printf("%s\n", search(&storage_list, "key1")); // 输出 "value1"
delete(&storage_list, "key1");
return 0;
}
```
这个简单的例子展示了如何使用链表实现<key, value>存储,并对外提供了创建、查找、插入和删除的基本操作。注意,在实际应用中,为了性能考虑,可以使用更高效的哈希表或其他数据结构。
阅读全文