C语言链表查找函数:findCommandName() 的两种实现比较

本文分析了 C 语言链表查找函数 findCommandName() 的两种实现方式,它们在逻辑上完全相同,仅在变量命名和循环方式上存在差异,最终实现的功能和返回值一致。

实现一:

struct Devices* findCommandName(char *name, struct  InputCommand * head) {
    struct InputCommand * tmp = head;
    if (head == NULL) {
        return NULL;
    } else {
        while (tmp != NULL) {
            if (strcmp(name, tmp->commandName) == 0) {
                return tmp;
            }
            tmp = tmp->next;
        }
        return NULL;    
    }
}

实现二:

struct Devices* findCommandName(char *name, struct  InputCommand * head) {
    if (head == NULL) {
        return NULL;
    }
    else {
        while (head != NULL) {
            if (strcmp(name, head->commandName) == 0) {
                return head;
            }
            head = head->next;
        }
        return NULL;    
    }
}

比较:

  • 实现一 使用了临时变量 tmp 来遍历链表,并在每次循环中判断是否找到匹配的节点。
  • 实现二 直接使用传入的 head 作为循环变量,并直接返回 head 指针。

结论:

两种实现方式的逻辑是等价的,它们都通过遍历链表查找与给定命令名相匹配的节点,并返回该节点的指针。实现一使用了额外的临时变量,而实现二则更加简洁。选择哪种实现方式取决于个人偏好和代码风格。

C语言链表查找函数:findCommandName() 的两种实现比较

原文地址: https://www.cveoy.top/t/topic/qaOr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录