當前位置:首頁 » 編程語言 » 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-13 10:56:07 瀏覽:750
cg的解壓密碼是多少 發布:2024-11-13 10:55:49 瀏覽:955
vbs編譯exe源代碼 發布:2024-11-13 10:54:19 瀏覽:637
網站付費閱讀源碼 發布:2024-11-13 10:53:15 瀏覽:724
火狐上傳不了 發布:2024-11-13 10:53:12 瀏覽:613
dota怎麼打電腦配置 發布:2024-11-13 10:53:06 瀏覽:713
求余java 發布:2024-11-13 10:41:16 瀏覽:296
編程的職位 發布:2024-11-13 10:36:12 瀏覽:777
奈的教育游戲安卓如何登錄 發布:2024-11-13 10:27:33 瀏覽:934
python病毒代碼 發布:2024-11-13 10:21:56 瀏覽:622