C標(biāo)準(zhǔn)庫(kù)search函數(shù)與鏈表查找

小樊
82
2024-08-06 18:31:14

在C標(biāo)準(zhǔn)庫(kù)中,有一些函數(shù)可以用來(lái)進(jìn)行查找操作,比如bsearch函數(shù)可以用來(lái)在一個(gè)已排序的數(shù)組中查找指定元素。另外,C語(yǔ)言中也可以使用鏈表來(lái)實(shí)現(xiàn)查找操作。以下是一個(gè)簡(jiǎn)單的使用鏈表實(shí)現(xiàn)查找操作的示例代碼:

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

// 定義鏈表節(jié)點(diǎn)結(jié)構(gòu)
typedef struct Node {
    int data;
    struct Node* next;
} Node;

// 添加節(jié)點(diǎn)到鏈表
void append(Node** head, int data) {
    Node* new_node = (Node*)malloc(sizeof(Node));
    new_node->data = data;
    new_node->next = NULL;

    // 如果鏈表為空,直接將新節(jié)點(diǎn)設(shè)為頭節(jié)點(diǎn)
    if (*head == NULL) {
        *head = new_node;
        return;
    }

    // 找到尾節(jié)點(diǎn),并將新節(jié)點(diǎn)連接到尾節(jié)點(diǎn)
    Node* current = *head;
    while (current->next != NULL) {
        current = current->next;
    }
    current->next = new_node;
}

// 查找節(jié)點(diǎn)
Node* search(Node* head, int data) {
    Node* current = head;
    while (current != NULL) {
        if (current->data == data) {
            return current;
        }
        current = current->next;
    }
    return NULL;
}

int main() {
    Node* head = NULL;

    // 添加一些節(jié)點(diǎn)到鏈表
    append(&head, 1);
    append(&head, 2);
    append(&head, 3);
    append(&head, 4);

    // 在鏈表中查找元素
    Node* result = search(head, 3);
    if (result != NULL) {
        printf("Element found: %d\n", result->data);
    } else {
        printf("Element not found\n");
    }

    return 0;
}

在上面的示例代碼中,我們定義了一個(gè)簡(jiǎn)單的鏈表結(jié)構(gòu),并實(shí)現(xiàn)了添加節(jié)點(diǎn)和查找節(jié)點(diǎn)的功能。通過(guò)這種方式,我們可以在鏈表中高效地查找指定元素。

0