数据结构--查找(顺序表)

在很多应用场景中,数据不仅仅是简单的单个值,而是以键值对(Key-Value Pair)的形式存在。顺序查找(Sequential Search)是一种简单而有效的查找方法,适用于键值对的查找。本文将介绍如何在顺序表中实现键值对的顺序查找,并提供完整的C语言代码示例。

键值对的基本概念

键值对由两个部分组成:

  • 键(Key):用于标识数据元素的唯一标识符。
  • 值(Value):与键相关联的数据。

顺序查找的基本步骤:

  1. 从表头开始,依次扫描顺序表中的每个键值对。
  2. 比较当前键与目标键。
  3. 如果找到目标键,则返回其对应的值。
  4. 如果遍历完整个顺序表仍未找到目标键,则返回一个标识查找失败的值。

C语言实现

键值对和顺序表的定义

首先,我们定义键值对和顺序表的数据结构。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_SIZE 100 // 顺序表的最大容量
#define KEY_SIZE 50  // 键的最大长度
#define VALUE_SIZE 100 // 值的最大长度

typedef struct {
    char key[KEY_SIZE];
    char value[VALUE_SIZE];
} KeyValuePair;

typedef struct {
    KeyValuePair data[MAX_SIZE]; // 存储键值对的数组
    int length; // 顺序表的当前长度
} SeqList;

// 初始化顺序表
void initSeqList(SeqList *list) {
    list->length = 0;
}
顺序查找的实现

接下来,我们实现顺序查找函数。

// 顺序查找函数
const char* sequentialSearch(SeqList *list, const char *key) {
    for (int i = 0; i < list->length; i++) {
        if (strcmp(list->data[i].key, key) == 0) {
            return list->data[i].value; // 返回找到的值
        }
    }
    return NULL; // 查找失败
}

 

插入键值对的实现

为了方便测试,我们还需要实现一个插入键值对的函数。

// 向顺序表中插入键值对
void insertKeyValuePair(SeqList *list, const char *key, const char *value) {
    if (list->length >= MAX_SIZE) {
        printf("List is full, cannot insert element.\n");
        return;
    }
    strcpy(list->data[list->length].key, key);
    strcpy(list->data[list->length].value, value);
    list->length++;
}
int main() {
    SeqList list;
    initSeqList(&list);

    // 插入一些键值对
    insertKeyValuePair(&list, "name", "Alice");
    insertKeyValuePair(&list, "age", "30");
    insertKeyValuePair(&list, "city", "New York");
    insertKeyValuePair(&list, "email", "alice@example.com");

    const char *key = "city";
    const char *value = sequentialSearch(&list, key);

    if (value != NULL) {
        printf("Key: %s, Value: %s\n", key, value);
    } else {
        printf("Key %s not found.\n", key);
    }

    return 0;
}

运行结果

运行上述代码,将输出以下结果:

 

  1. 键值对和顺序表的定义
    • 定义了键值对的数据结构,包括键和值两个字符串。
    • 定义了顺序表的数据结构,包括存储键值对的数组和顺序表的当前长度。
    • 实现了初始化函数,将顺序表的长度初始化为0。
  2. 顺序查找的实现
    • 顺序查找函数遍历顺序表中的每个键值对,逐个比较键值对中的键与目标键。
    • 找到目标键时,返回其对应的值;未找到时,返回NULL。
  3. 插入键值对的实现
    • 插入键值对函数在顺序表末尾添加新键值对,并更新顺序表的长度。
  4. 测试函数
    • 初始化顺序表,插入一些测试键值对,并调用顺序查找函数查找目标键。
    • 输出查找结果。

总结

通过本文的讲解和代码示例,我们学习了如何用C语言实现键值对的顺序查找。顺序查找是一种简单而有效的查找方法,适用于键值对的查找。

 

 

 

 

 

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值