当前位置:首页 » 编程语言 » c语言匹配

c语言匹配

发布时间: 2024-11-10 17:44:29

① 串模式匹配算法(C语言)100分悬赏

第一个朴素算法:
1.普通的串模式匹配算法:
int index(char s[],char t[],int pos)
/*查找并返回模式串T在S中从POS开始的位置下标,若T不是S的子串.则返回-1.*/
{
int i,j,slen,tlen;
i=pos;j=0; //i,j分别指示主串和模式串的位置.
slen=strlen(s);tlen=strlen(t); //计算主串和模式串的长度.
while(i<slen && j<tlen)
{
if(s[i]==t[j]) {i++;j++;}
else {i=i-j+1;j=0;}
}
if(j>=tlen) return i-tlen;
return -1;
}

第二个KMP算法.该算法支持从主串的任意位置开始搜索.
2.KMP算法:
//求模式串的next函数.
void get_next(char *p,int next[])
{
int i,j,slen;
slen=strlen(p);i=0;
next[0]=-1;j=-1;
while(i<slen)
{
if(j==-1||p[i]==p[j]) {++i;++j;next[i]=j;}
else j=next[j];
}
}

//KMP模式匹配算法
int index_kmp(char *s,char *p,int pos,int next[])
/* 利用模式串P的NEXT函数,求P在主串S中从第POS个字符开始的位置*/
/*若匹配成功.则返回模式串在主串中的位置下标.否则返回-1 */
{
int i,j,slen,plen;
i=pos-1;j=-1;
slen=strlen(s);plen=strlen(p);
while(i<slen && j<plen)
{
if(j==-1||s[i]==p[j]) {++i;++j;}
else j=next[j];

② C语言的括号匹配怎么写啊

了解一下数据结构中的栈(其实就是后入先出),你就知道该怎么实现了。
知道怎么实现栈后就很简单了:遇到左括号则入栈,遇到右括号则检查栈内是否有元素,没有元素则结果不匹配,有元素则弹出栈顶元素来查看是否符号相匹配。而检查完毕后如果栈内仍有元素,则不匹配,无元素则匹配

热点内容
红警咋解压 发布:2025-08-21 22:42:58 浏览:887
负73的源码 发布:2025-08-21 22:31:51 浏览:675
安卓tabs是干什么的 发布:2025-08-21 22:27:52 浏览:164
算法可能解 发布:2025-08-21 22:27:33 浏览:691
用一台电脑作为共享服务器 发布:2025-08-21 22:25:34 浏览:661
触动精灵脚本过期 发布:2025-08-21 22:10:34 浏览:891
无法访问iis 发布:2025-08-21 22:04:05 浏览:262
win7asp服务器搭建 发布:2025-08-21 22:02:13 浏览:594
手机端编写脚本 发布:2025-08-21 21:46:54 浏览:565
九游如何看帐号与密码 发布:2025-08-21 21:42:32 浏览:4