七、数据结构基础之顺序串C语言实现

 1 /*
 2  * 七、数据结构基础之顺序串        
 3  * 顺序串与顺序表类似,用一组地址连续的存储单元来存储串中的字符序列
 4  * --- 2012年4月29日 ---by lee
 5  */ 
 6 
 7 #ifndef _SEQUENTIAL_STRING_H
 8 #define _SEQUENTIAL_STRING_H
 9 
10 #include "Utility.h"
11 
12 //宏定义顺序串的空间大小,最多存放20个字符
13 #define STRINGSIZE 21
14 
15 
16 //声明顺序表类型结构体
17 typedef struct _SqString
18 {
19     char str[STRINGSIZE];//存放数据元素的数组
20     int length;//记录串的实际长度
21 } SqString;
22 
23 /* 串匹配算法
24  * 目标串:"t0 t1 t2 ... tn-1" (length=n)
25  * 模式串:"p0 p1 p2 ... pm-1" (m>=1 && m<=n)
26  * 找出模式串P在目标串T中首次出现的有效位移i
27  */
28 
29 // 朴素的串匹配算法:
30 // 用一个循环来依次检查i(i>=0 && i<=n-m)是否为有效位移
31 // 匹配成功则返回目标串中的有效位移i,否则返回-1
32 int NaiveMatch(SqString *T, SqString *P)
33 {
34     int n=T->length;//目标串长度
35     int m=P->length;//模式串长度
36     int j,k;
37     //外层循环i控制位移
38     for(int i=0; i<=n-m; i++)
39     {
40         j=0;//j作为模式串P的计数器
41         k=i;//k作为目标串中匹配P的字符串的计数器
42         while((j<m) && (T->str[k]==P->str[j]))
43         {
44             k++;
45             j++;
46         }
47         //j移动到最后,则说明完全匹配
48         if(j==m)
49         {
50             return i;//返回有效位移i
51         }
52     }
53     return -1;
54 }
55 
56 
57 
58 
59 #endif

转载于:https://www.cnblogs.com/programlee/archive/2012/05/05/2485120.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值