C语言实现单链表查找中间值

C语言实现单链表查找中间值

主要功能
  1. 创建单链表
  2. 查看链表
  3. 查看链表长度
  4. 查找单链表中间节点的值
实现代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ERROR 0
#define OK 1

typedef struct Node
{
   
    int data; // 数据域
    struct Node* next; // 指针域
}Node;
typedef Node* LinkList;

LinkList CreateList(int length); // 创建长度为length的单链表
int ListLength(LinkList L); //获取单链表长度
void DisplayList(LinkList L); // 输出单链表
void CentreValue(LinkList L);  // 查找单链表中间节点的值(高级方法)

int main(int argc, char const *argv[]){
   
    char *help = "=====菜单=====\n1.创建单链表\n2.查看链表\n3.链表长度\n4.查找单链表中间节点的值\n0.退出\n请输入操作序号:";
    int operation = 1<
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单链表模糊查找可以通过遍历链表的方式来实现,具体的算法设计如下: 1. 遍历单链表,从头结点开始,依次访问每个节点。 2. 对于每个节点,判断其存储的数据是否与目标数据相匹配。这里可以使用模糊匹配算法,如字符串匹配中的模糊匹配算法。 3. 如果匹配成功,则记录该节点,并继续遍历下一个节点;否则,继续遍历下一个节点。 4. 当遍历完整个单链表后,返回所有匹配成功的节点。 下面是一个简单的C语言代码实现: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义链表节点结构体 typedef struct ListNode { char data[50]; struct ListNode *next; } ListNode; // 单链表模糊查找算法 ListNode *fuzzySearch(ListNode *head, char target[]) { ListNode *p = head; ListNode *result = NULL; while (p != NULL) { if (strstr(p->data, target) != NULL) { // 如果匹配成功,则记录该节点 ListNode *temp = (ListNode *)malloc(sizeof(ListNode)); strcpy(temp->data, p->data); temp->next = result; result = temp; } p = p->next; } return result; } int main() { // 创建单链表 ListNode *head = (ListNode *)malloc(sizeof(ListNode)); strcpy(head->data, "apple"); head->next = NULL; ListNode *node2 = (ListNode *)malloc(sizeof(ListNode)); strcpy(node2->data, "banana"); node2->next = NULL; head->next = node2; ListNode *node3 = (ListNode *)malloc(sizeof(ListNode)); strcpy(node3->data, "orange"); node3->next = NULL; node2->next = node3; // 调用模糊查找算法 ListNode *result = fuzzySearch(head, "a"); // 输出查找结果 printf("fuzzy search result:\n"); ListNode *p = result; while (p != NULL) { printf("%s\n", p->data); p = p->next; } return 0; } ``` 在上面的代码中,我们通过定义链表节点结构体来表示单链表,然后实现了一个名为 `fuzzySearch` 的函数,该函数用于实现单链表模糊查找算法。在函数中,我们使用了字符串匹配中的 `strstr` 函数来实现模糊匹配,如果匹配成功,则将该节点记录下来,并返回所有匹配成功的节点。最后,我们在 `main` 函数中创建了一个简单的单链表,并调用了 `fuzzySearch` 函数来进行模糊查找,并输出查找结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值