字符串和數組(數據結構筆記4)

/**
模式匹配:
    BF算法:
        從主串s的0個字符開始和模式串的第0個字符開始進行比較
        若相等,則繼續比較兩者的後續字符
        否則,從主串s的第1個字符開始和模式串t的第0個字符開始進行比較
        重複上述過程,知道t中的字符全部比較完畢,則說明本次匹配成功
        或者s中字符全部比較完,則說明匹配失敗
        時間複雜度 O(n*m)
    KMP算法:
        子串滑動的距離只與模式串t有關
        next[j]表徵模式串t中最大相同前綴子串和左子串(真子串)的長度
        void Cmp(char *t,int *next)
        {
            int j=1,k;
            next[0]=-1;
            while(t[j]!='\0')
            {
                k=next[j-1];
                while(k!=-1&&t[k]!=t[j])
                    k=next[k];
                next[j]=++k;
                j++;
            }
        }
        在串s和t分別設比較的起始下標爲i,j
        循環直到s中所剩字符長度小於t的長度或所有字符均表示完畢
            如果s[i]==t[j],繼續比較s和t的下一個字符
            否則,將j向右滑動到next[j]位置,即j=next[j];
            如果j=-1,則將i和j分別加1,準備下一趟比較
        如果t中所有字符均比較完畢,則返回匹配的起始下標;否則返回-1
        int Kmp(char *s,char *t,int *next)
        {
            int i,j;
            i=j=0;
            while(s[i]!='\0'&&t[j]!='\0')
            {
                if(j==-1||s[i]==t[j])
                {
                    i++;
                    j++;
                }
                else j=next[j];
            }
            if(t[j]=='\0') return i-j;
            else return -1;
        }
        時間複雜度: O(n+m)
**/
/**
線性表--具有相同類型數據元素的有限序列
限制插入,刪除位置
    棧--僅在表尾進行插入和刪除的線性表
    隊列--在一端進行插入,另一端進行刪除操作的線性表
限制元素類型爲字符
    串--零個或多個字符組成的線性表
將元素類型進行擴充
    (多維)數組--線性表中數據元素可以是線性表,但所有元素類型相同
    廣義表--線性表中數據元素可以是線性表,且元素的類型可以不相同
**/
/**
特殊矩陣和稀疏矩陣
    特殊矩陣:矩陣中很多值相同的元素並且他們的分佈有一定的規律
    稀疏矩陣:矩陣中很多0元素
壓縮存儲的基本思想是:
    爲多個值相同的元素只分配一個存儲空間
    對0元素不分配存儲空間
特殊矩陣的壓縮存儲--對稱矩陣
    只存儲上三角或者下三角
特殊矩陣的壓縮存儲--三角矩陣
    裝置存儲上三角或者下三角
特殊矩陣的壓縮存儲--對角矩陣
    二維數組法
    一維數組法
稀疏矩陣的壓縮存儲
    三元組(行號,列號,非零值元素)
    定義三元組
    template<typename T>
    struct element
    {
        int row,col;//行號,列號
        T item;//非零值元素
    };
    三元組順序表
    const int MaxTerm=100;
    template<class T>
    struct Spacematrix
    {
        T data[MaxTerm];//存儲非零值元素
        int mu,nu,tu;//行數,列數,非零元素個數
    };
**/
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章