當前位置:首頁 » 編程語言 » 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-01-11 14:55:49 瀏覽:171
空調壓縮機皮帶打滑 發布:2025-01-11 14:55:10 瀏覽:61
授權輕松訪問 發布:2025-01-11 14:51:50 瀏覽:406
大主宰腳本 發布:2025-01-11 14:40:56 瀏覽:826
ftp保存密碼是灰色 發布:2025-01-11 14:00:07 瀏覽:261
壓縮文件最好 發布:2025-01-11 13:59:58 瀏覽:649
有幾家java培訓機構 發布:2025-01-11 13:55:05 瀏覽:476
搭建個人伺服器缺點 發布:2025-01-11 13:54:13 瀏覽:376
怎麼用安卓的手機登錄ios第五人格 發布:2025-01-11 13:44:11 瀏覽:769
登陸Ftp重輸密碼 發布:2025-01-11 13:40:12 瀏覽:335