写一c语言程序,假设串采用链串存储结构。设计一个算法,,求串t在串s中出现的次数(不计重复的字符),如果串t不是串s的子串,返回0.
时间: 2023-04-11 18:01:30 浏览: 75
我可以回答这个问题。以下是一个基于链串存储结构的C语言程序,用于计算串t在串s中出现的次数:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char data;
struct node *next;
} Node, *LinkString;
LinkString createString(char *str) {
LinkString head = (LinkString) malloc(sizeof(Node));
head->next = NULL;
LinkString p = head;
while (*str) {
LinkString q = (LinkString) malloc(sizeof(Node));
q->data = *str++;
q->next = NULL;
p->next = q;
p = q;
}
return head;
}
int countSubstring(LinkString s, LinkString t) {
int count = 0;
LinkString p = s->next;
while (p) {
LinkString q = p;
LinkString r = t->next;
while (r && q && r->data == q->data) {
r = r->next;
q = q->next;
}
if (!r) {
count++;
}
p = p->next;
}
return count;
}
int main() {
char s[] = "hello world";
char t[] = "lo";
LinkString sStr = createString(s);
LinkString tStr = createString(t);
int count = countSubstring(sStr, tStr);
printf("%d\n", count);
return 0;
}
```
该程序首先定义了一个链串结构体,然后实现了创建链串和计算子串出现次数的函数。在主函数中,我们定义了两个字符数组s和t,分别表示原串和目标子串,然后将它们转换为链串,并调用countSubstring函数计算子串出现次数。最后输出结果即可。