C语言实现链表字符串匹配算法
以下是实现该功能的 C语言代码:
#include <stdio.h>
#include <string.h>
typedef struct list_s {
char *data;
struct list_s *next;
} list_t;
int find_list_str(list_t *list, char *str) {
while (list != NULL) {
if (strstr(list->data, str) != NULL) {
return 1; // 目标字符串存在于链表节点中
}
list = list->next;
}
return 0; // 目标字符串不存在于链表中
}
int main() {
// 创建链表
list_t node1, node2, node3;
char data1[] = "Hello";
char data2[] = "World";
char data3[] = "C Programming";
node1.data = data1;
node1.next = &node2;
node2.data = data2;
node2.next = &node3;
node3.data = data3;
node3.next = NULL;
// 测试find_list_str函数
char targetStr[] = "loW";
int result = find_list_str(&node1, targetStr);
if (result == 1) {
printf("目标字符串存在于链表中\n");
} else {
printf("目标字符串不存在于链表中\n");
}
return 0;
}
在上述代码中,我们首先定义了一个 list_t 结构体,该结构体包含一个 data 成员用于存储字符串,以及一个 next 成员用于指向下一个链表节点。然后,我们实现了 find_list_str 函数来搜索目标字符串是否存在于链表中。
在 find_list_str 函数中,我们使用了 strstr 函数来判断目标字符串是否存在于链表节点的数据中。如果找到了目标字符串,则返回 1,表示目标字符串存在于链表中。如果遍历完整个链表都没有找到目标字符串,则返回 0,表示目标字符串不存在于链表中。
在 main 函数中,我们创建了一个包含 3 个节点的链表,并调用 find_list_str 函数来搜索目标字符串是否存在于链表中。在这个例子中,我们搜索的目标字符串是 'loW',该字符串既存在于第一个节点的结尾,也存在于第二个节点的开头。因此,find_list_str 函数应该返回 1,表示目标字符串存在于链表中。
注意:为了简化示例,我们在 main 函数中直接创建了链表和目标字符串的数据。实际应用中,可能需要根据具体需求动态创建链表,并根据用户输入来设置目标字符串。
原文地址: https://www.cveoy.top/t/topic/pKeu 著作权归作者所有。请勿转载和采集!