2.4 ADT 字符串

  • 「ADT 字符串」 零个或多个字符的有穷集合。
class String {
    String null(m) {
        return 一个字符串,其最大长度是 m 个字符,初值为 NULL,记 NULL""。
    }
    int Compare(s, t) {
        if (s 等于 t) return 0
        else if (s 在 t 之前) return -1
        else return +1
    }
    bool IsNull(s) {
        if (Compare(s, NULL)) return false
        else return true
    }
    int Length(s) {
        if (Compare(s, NULL)) return s 中字符的个数。
        else return 0
    }
    String Concat(s, t) {
        if (Compare(t, NULL)) return 一个字符串,其内容为 s 的字符元素后接 t 的字符元素。
        else return s
    }
    String Substr(s, i, j) {
        if ((j > 0) && (i + j - 1) < Length(s))
            return 一个包含 s 中位置为 i, i+1, ..., i+j-1 的字符串
        else return NULL
    }
}
  • 「模式匹配」 nfind(string, pat) 判断字符串 pat 是否在 string 里,若在,返回匹配成功的位置;若不在,返回 -1lastslastp 分别记录 stringpat 字符串的末端位置。首先 nfind 比较 string[endmatch]pat[lastp],如果它们匹配,nfindij 扫描这两个字符串,直到发现有字符失配或者 pat 的所有字符都得到匹配为止。
int nfind(char *string, char *pat)
{
    int i, j, start = 0;
    int lasts = strlen(string) - 1;
    int lastp = strlen(pat) - 1;
    int endmatch = lastp;

    for (i = 0; endmatch <= lasts; endmatch++, start++) {
        if (string[endmatch] == pat[lastp])
            for (j = 0, i = start; j < lastp && string[i] == pat[j]; i++, j++)
                ;
        if (j == lastp)
            return start; //successful
    }
    return -1;
}

results matching ""

    No results matching ""