C语言链表查找函数:findCommandName() 的两种实现比较
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指针。
结论:
两种实现方式的逻辑是等价的,它们都通过遍历链表查找与给定命令名相匹配的节点,并返回该节点的指针。实现一使用了额外的临时变量,而实现二则更加简洁。选择哪种实现方式取决于个人偏好和代码风格。
原文地址: https://www.cveoy.top/t/topic/qaOr 著作权归作者所有。请勿转载和采集!