当前位置:首页 » 编程语言 » 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语言的括号匹配怎么写啊

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

热点内容
压缩营养品 发布:2024-11-22 18:17:57 浏览:221
网签备案查询的密码在哪里 发布:2024-11-22 18:17:20 浏览:251
怎么改邮政网银密码 发布:2024-11-22 18:06:24 浏览:354
压缩机不制冷 发布:2024-11-22 17:57:45 浏览:429
linux面试题及答案100 发布:2024-11-22 17:56:06 浏览:17
密码门卡如何用nfc 发布:2024-11-22 17:45:11 浏览:138
linux开启snmp 发布:2024-11-22 17:40:51 浏览:939
js检测手机访问 发布:2024-11-22 17:25:08 浏览:799
ftp服务器上传不了文件怎么办 发布:2024-11-22 17:24:19 浏览:260
数据库改售价 发布:2024-11-22 17:19:54 浏览:998