順序結構儲存串實現串萬用字元匹配的演算法
問題及程式碼:
/*
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:pattern.cpp
* 作 者:單昕昕
* 完成日期:2016年4月7日
* 版 本 號:v1.0
* 問題描述:採用順序結構儲存串,
編寫一個實現串萬用字元匹配的演算法pattern_index(),
其中的萬用字元只有'?',它可以和任一字元匹配成功,
例如,pattern_index("?re","there are")返回的結果是2。
* 程式輸入:兩個字串。
* 程式輸出:配對成功的母串位置。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MaxSize=100;
typedef struct
{
char data[MaxSize];
int length;
} SqString;
SqString str;
void StrAssign(SqString &s,char cstr[])
{
int i;
for(i=0; cstr[i]!='\0'; ++i)
s.data[i]=cstr[i];
s.length=i;
}
int pattern_index(char cstr[],SqString &s)
{
int i,sl,cl;
for (i=0; i<s.length; ++i)
{
sl=i;
cl=0;
while(sl<s.length&&cl<strlen(cstr)&&(s.data[sl]==cstr[cl]||cstr[cl]=='?'))
{
sl++;
cl++;
}
if (cl>=strlen(cstr))
return(i);
}
return (-1);
}
int main()
{
char c1[100],c2[100];
gets(c1);
gets(c2);
StrAssign(str,c1);
cout<<pattern_index(c2,str)<<endl;
}
執行結果:
相關文章
- 串的順序儲存結構
- 佇列的順序儲存結構佇列
- 11 線性表的順序儲存結構
- 線性表之順序儲存結構
- 【資料結構】二叉樹(順序儲存、鏈式儲存)的JAVA程式碼實現資料結構二叉樹Java
- 串(2)--模式匹配演算法模式演算法
- 第八週 專案1-建立順序串的演算法庫演算法
- 串的基本運算實現-加密解密串加密解密
- 資料結構---串資料結構
- 利用順序儲存結構實現雙端佇列的入隊和出隊操作佇列
- JavaScript資料結構與演算法(串)JavaScript資料結構演算法
- 二叉樹的儲存(輸入一串字元)與遍歷二叉樹字元
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- 萬用字元——*可以當空串或任意串(一)字元
- 【大話資料結構C語言】22 串的快速模式匹配演算法(KMP演算法)資料結構C語言模式演算法KMP
- 編寫一個程式實現模式串的各種模式匹配模式
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 線性結構(順序儲存和鏈式儲存)和非線性結構的特點及區別
- 列定義的順序和列儲存的順序
- 線性表的順序儲存C++程式碼實現C++
- 演算法-無重複字元的最長子串演算法字元
- 佇列-順序儲存佇列
- 棧1: 順序儲存
- 資料結構與演算法JavaScript (四) :串(BF)資料結構演算法JavaScript
- 第2章 順序表及其順序儲存
- 【資料結構】順序棧的實現(c++)資料結構C++
- 【演算法框架套路】滑動視窗演算法:匹配子串演算法框架
- BMH子串查詢演算法(PHP實現)演算法PHP
- 順序結構
- 【資料結構】實現順序表(c++)資料結構C++
- 資料結構:線性表的順序實現2.2資料結構
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 【練習】串的堆分配實現
- 【練習】塊鏈串的實現
- 串的堆分配表示與實現
- 【資料結構】實現順序表(c語言)資料結構C語言
- AC 自動機——多模式串匹配模式
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構