码迷,mamicode.com
首页 > 其他好文 > 详细

第四章心得体会

时间:2020-05-05 23:10:52      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:x11   集合   wrap   flex   模式匹配   能力   接下来   ems   you   

数据结构第四章学习的是串,数组和广义表。重点学习了串和串的模式匹配和数组的压缩存储

两个串模式匹配算法

1.BF算法

BF算法的思想就是将目标串第一个字符与模式串的第一个字符进行匹配,若相等,则继续比较的第二个字符;

若不相等,则比较原字符串的第二个字符和模式串的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。

2.KMP算法

技术图片

 

 技术图片

 

代码实现如下:

 技术图片

 

 

二、作业实践的心得体会

7-1 串的模式匹配 (30 分)
KMP算法的代码实现
int Index_KMP(SString S, SString T, int next[]) { //S主串,T模式串
    int i = 1, j = 1;       //i指主串,j指模式串
    int result = 0;
    while (i <= S.length&&j <= T.length) {
        if (j == 0 || S.ch[i] == T.ch[j]) {     /如果匹配接着往下比较,不匹配就右移T
            i++;
            j++;
        }
        else {
            j = next[j];
        }
    }
    if (j > T.length) {     //当j到最后仍与主串相等+1时匹配成功
        result = i - T.length;
    }
    return result;  
getnext函数
void getNext(SString T, int next[]) {
    int i = 1, j = 0;  
    next[1] = 0;
    while (i < T.length) {
        if (j == 0 || T.ch[i] == T.ch[j]) {
            i++;
            j++;
            if (T.ch[i] != T.ch[j]) {   //i和j都右移后如果不同,把最长串最后一个的位置给next
                next[i] = j;
            }
            else {          //但是如果相同,就让next变为next[j]       
                next[i] = next[j];
            }
        }
        else {              //如果j不为0且ch[i] 与 ch[j]不等,表示之前有相同串,但右移后又不同了 
            j = next[j];
        }
    }
   
}
 

  2、求集合交集

在需要进行排序,调用sort函数时需要写头文件#include <algorithm>


三、下一阶段的目标
虽然代码能力提升不大,但会继续跟着老师的视频努力学习。目标是好好完成个人代码,学好接下来的章节内容!

第四章心得体会

标签:x11   集合   wrap   flex   模式匹配   能力   接下来   ems   you   

原文地址:https://www.cnblogs.com/llwjh/p/12833403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!