c語(yǔ)言如何實(shí)現(xiàn)單鏈表的查找

小億
83
2024-10-11 16:41:16

在C語(yǔ)言中,實(shí)現(xiàn)單鏈表查找的方法是遍歷鏈表,逐個(gè)檢查節(jié)點(diǎn)的值,直到找到目標(biāo)值或到達(dá)鏈表末尾。以下是一個(gè)簡(jiǎn)單的示例:

首先,定義鏈表節(jié)點(diǎn)結(jié)構(gòu)體:

typedef struct Node {
    int data;
    struct Node* next;
} Node;

然后,創(chuàng)建一個(gè)鏈表并插入一些節(jié)點(diǎn):

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

// 插入節(jié)點(diǎn)到鏈表頭部
void insertAtHead(Node** head, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = *head;
    *head = newNode;
}

int main() {
    Node* head = NULL;

    insertAtHead(&head, 3);
    insertAtHead(&head, 2);
    insertAtHead(&head, 1);

    return 0;
}

接下來(lái),實(shí)現(xiàn)鏈表查找功能:

// 查找鏈表中的目標(biāo)值
Node* searchList(Node* head, int target) {
    Node* current = head;

    while (current != NULL) {
        if (current->data == target) {
            return current;
        }
        current = current->next;
    }

    return NULL; // 如果未找到目標(biāo)值,返回NULL
}

最后,在main函數(shù)中調(diào)用searchList函數(shù)查找鏈表中的目標(biāo)值:

int main() {
    Node* head = NULL;

    insertAtHead(&head, 3);
    insertAtHead(&head, 2);
    insertAtHead(&head, 1);

    Node* result = searchList(head, 2);
    if (result != NULL) {
        printf("找到目標(biāo)值: %d\n", result->data);
    } else {
        printf("未找到目標(biāo)值\n");
    }

    return 0;
}

這個(gè)示例中,鏈表包含3個(gè)節(jié)點(diǎn),值分別為1、2和3。調(diào)用searchList函數(shù)查找值為2的節(jié)點(diǎn),將返回該節(jié)點(diǎn)。如果查找失敗,函數(shù)將返回NULL。

0