还有最后的那些count是什么意思,我没找到
#include <string.h>
#include <stdio.h>
#include <malloc.h>
typedef struct line
{
char *data;
struct line *next;
} LINE;
int FindString(LINE *&head, char *str) {
LINE *p = head;
int count = 0;
int h = 0;
int len1 = 0;
int len2 = strlen(str);
int i, j, k;
do
{
len1 = strlen(p->data);
for (i = 0; i < len1; i++)
{
if (p->data[i] == str[0])
{
k = 0;
for (j = 0; j < len2; j++)
if (p->data[i + j] == str[j])
k++;
if (k == len2)
{
count++;
i = i + k - 1;
}
}
}
}
while ((p = p->next) != NULL);
return count;
}
do {printf(" 请输入你要选择的操作 : ");
scanf("%d", &operate);
switch (operate)
{
case 1:
printf(" 请输入要统计的字符串 :");
scanf("%s", &str1);
printf("%s 出现的次数为 :%d \n", str1, FindString(head, str1));
printf("\n");
CountAll(head);
CountNumber(head);
CountLetter(head);
CountSpace(head);
break;
}
}
while (operate != 0);
}
就是遍历链表,统计链表中出现指定字符串str的次数
遍历链表如果p->data中有字符等于str的第一个字符,再判断p->data[i]之后的字符也等于str的之后的字符,则count++统计+1
每次遍历一个节点之后 p = p->next 让p移动到下一个节点并判断是不是 NULL链表结尾,不是 NULL继续循环,是 NULL结束循环并返回count统计结果
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
FindString整个函数的意思就是在一个文本里(这个文本,每一行都是由line这样的结构组成,每个line的结构里next指向下一行)找字符串出现的次数
p最开始指向head就是文本的第一行
然后do while 循环,让p这个指针不停的指向下一行,直到结束
do while里面就是对这一行的内容,去查找与str匹配的内容,找到一次,count就+1,直到这一行内容全部查找完
最后返回整个文本里所有匹配str的次数
do 一直循环,直到遍历的链表,没有数据,下一个为 null
下面一个 do 根据已输入的操作 !0 就不停止,
功能:遍历链表,找你 输入的 字符串 他所出现的个数
你这个代码不完整。
do while是一个循环,当输入的值等于0时结束循环,否则一直执行循环。
循环中,根据菜单来选择执行的操作,但是,当前的代码中,只有1个菜单,所以也就只执行case1这一个功能。
CountAll(head);
CountNumber(head);
CountLetter(head);
CountSpace(head);
这四个函数,应该是单独封装的函数,你的代码中没有贴出来具体的实现。从函数名猜测:
CountAll(head); 计算链表中的所有字符数量
CountNumber(head); 计算链表中所有数字字符数量
CountLetter(head); 计算链表中所有字母的数量
CountSpace(head); 计算链表中所有空格的数量