IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 中文模糊查找(C语言)+ 链表操作 -> 正文阅读

[数据结构与算法]中文模糊查找(C语言)+ 链表操作

在日常的生活中,人们通常会输入几个字符来通过模糊查找找到自己需要的一些资料,大大节约了时间

查找思路:确定目标字符串和需要查找的模糊字符串,借助for循环,通过strlen函数算出字符串的长度,比较目标字符串和需要查找的模糊字符串其中单一字符是否相等(因为汉字每一个字符占两个字节位置,所以汉字要比较相邻两个位置的字符串是否相等)

正常模糊查找:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void bijiao(char *str,char *str1)
{
	int i,j;
	int n = 0;
	for(i = 0;i<strlen(str1);i+=2)
	{
		for(j = 0;j<strlen(str);j+=2)
		{
			if(str1[i] == str[j]&&str1[i+1] == str[j+1])
			n++;
		}
	}
	if(n == strlen(str)/2)                 //除以二的原因是一个汉字占两个字节,但n计数原理是
                                           //当相邻的两个字节都相等时,才自增一
	puts(str); 
}
int main()
{
	char str[] = "爱编程";
	char str1[] = "小马是一个爱编程的孩子";
	bijiao(str,str1);
	return 0;
}

因为“爱编程”是子串,所以会被打印出来。

链表模糊查找:

链表和普通的区别就是链表的每个节点都会存有信息,需要不断地移动节点然后借助strcpy函数赋值出来进行模糊查找(代码通过输入的number == 0来控制停止输入

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
	char name[20];
	int number;
	struct Node *Next;
}Node,*LinkList;
LinkList createList()
{
    LinkList head = (Node*)malloc(sizeof(Node));
	head->Next = NULL;	
	return head;
}
void CreateByBear(LinkList head)
{
	Node *r,*s;
	r = head;
	char name[20];
	int number;
	while(1)
	{
		scanf("%s ",name);
		scanf("%d",&number);
		if(number == 0)
		{
			break;
		}
		s = (Node*)malloc(sizeof(Node));
	    strcpy(s->name,name);
	    s->number = number;
	    r->Next = s;
	    r = s;
	}
	r->Next = NULL;
}
void OutputList(LinkList head)
{
	Node *p = head->Next;
	while(p)
	{
		printf("%s %d\n",p->name ,p->number);
		p = p->Next ;
	}
}
void mohu(LinkList head)
{
	int i,j,n = 0;
	Node *r = head->Next;
	char name[20];                      //模糊查找的字符串 
	printf("请输入你要查找的模糊字符串:");
	getchar();
	gets(name); 
	char Listname[20];               //接收链表中的名字 
    while(r)
    {
         strcpy(Listname,r->name);
         for(i = 0;i<strlen(Listname);i+=2)
         {
         	for(j = 0;j<strlen(name);j+=2)
         	{
         		if(Listname[i] == name[j]&&Listname[i+1] == name[j+1])
         		{
         			n++;
				 }
			 }
		 }
		 if(n == strlen(name)/2)
		{
			printf("%s %d\n",r->name ,r->number );
		}
		n=0;
		r = r->Next;	
	}
}
int main()
{
	Node *head = createList();
	CreateByBear(head);
	OutputList(head);
	printf("\n");
    mohu(head);
	return 0;
}

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:50:35  更:2022-03-30 18:51:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:56:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码