c语言

如何在c语言中实现实时search

小樊
87
2024-08-23 04:16:35
栏目: 编程语言

在C语言中实现实时search可以使用一些数据结构和算法来实现,比如使用Trie树(字典树)来存储搜索词和搜索结果,实时搜索时可以根据用户输入的关键词快速查询匹配的结果。下面是一个简单的实时搜索的示例代码:

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

#define ALPHABET_SIZE 26

// Trie树节点
typedef struct TrieNode {
    struct TrieNode* children[ALPHABET_SIZE];
    int isEndOfWord;
} TrieNode;

// 创建一个新的Trie树节点
TrieNode* createNode() {
    TrieNode* newNode = (TrieNode*)malloc(sizeof(TrieNode));
    newNode->isEndOfWord = 0;
    for (int i = 0; i < ALPHABET_SIZE; i++) {
        newNode->children[i] = NULL;
    }
    return newNode;
}

// 将关键词插入到Trie树中
void insert(TrieNode* root, char* key) {
    TrieNode* node = root;
    for (int i = 0; i < strlen(key); i++) {
        int index = key[i] - 'a';
        if (!node->children[index]) {
            node->children[index] = createNode();
        }
        node = node->children[index];
    }
    node->isEndOfWord = 1;
}

// 在Trie树中搜索关键词
int search(TrieNode* root, char* key) {
    TrieNode* node = root;
    for (int i = 0; i < strlen(key); i++) {
        int index = key[i] - 'a';
        if (!node->children[index]) {
            return 0;
        }
        node = node->children[index];
    }
    return (node != NULL && node->isEndOfWord);
}

int main() {
    TrieNode* root = createNode();

    // 插入关键词
    insert(root, "apple");
    insert(root, "banana");
    insert(root, "orange");
    insert(root, "pear");

    char key[100];
    while (1) {
        printf("Enter search key: ");
        scanf("%s", key);

        // 实时搜索关键词
        if (search(root, key)) {
            printf("Found\n");
        } else {
            printf("Not found\n");
        }
    }

    return 0;
}

以上是一个简单的实时搜索的示例代码,其中使用Trie树来存储搜索词,用户可以实时输入关键词进行搜索,并得到相应的搜索结果。开发者可以根据实际需求对代码进行进一步优化和扩展。

0
看了该问题的人还看了