久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

數(shù)據(jù)結(jié)構(gòu)第四章“串”核心考點(diǎn)全解析:從BF到KMP與next數(shù)組手算

數(shù)據(jù)結(jié)構(gòu)第四章“串”核心考點(diǎn)全解析:從BF到KMP與next數(shù)組手算 提到數(shù)據(jù)結(jié)構(gòu)這門(mén)課第四章“串”是很多人容易輕視的一章。表面上看不就是字符串操作嗎C語(yǔ)言里天天用strlen、strcpy能有什么難的結(jié)果一到期末考試或考研真題遇到next數(shù)組計(jì)算、KMP匹配過(guò)程、串的替換算法設(shè)計(jì)直接懵掉。我在帶學(xué)生和做技術(shù)答疑時(shí)被問(wèn)得最多的就是第四章這些題。說(shuō)實(shí)話(huà)這一章如果只靠背課后習(xí)題答案下一個(gè)題型換個(gè)模式串照樣不會(huì)做。這篇文章我結(jié)合嚴(yán)蔚敏《數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版 第2版》第四章課后習(xí)題的高頻題型把串的概念框架、存儲(chǔ)結(jié)構(gòu)選型、模式匹配算法原理、代碼實(shí)現(xiàn)和易錯(cuò)點(diǎn)完整拆一遍。尤其是BF與KMP的復(fù)雜度對(duì)比、next數(shù)組與nextval數(shù)組的手算方法、幾個(gè)典型算法設(shè)計(jì)題的C語(yǔ)言實(shí)現(xiàn)我會(huì)給你一條能直接“抄作業(yè)”且能跑通的路徑。同時(shí)會(huì)指出很多參考書(shū)上不會(huì)寫(xiě)出來(lái)的坑比如教材用T[0]存串長(zhǎng)而C語(yǔ)言數(shù)組從0開(kāi)始帶來(lái)的下標(biāo)錯(cuò)位問(wèn)題。適合正在學(xué)數(shù)據(jù)結(jié)構(gòu)的學(xué)生、準(zhǔn)備考研的讀者以及想補(bǔ)C語(yǔ)言字符串處理細(xì)節(jié)的自學(xué)者。1. 先把第四章的“地圖”鋪開(kāi)串到底在考什么1.1 串的定義與術(shù)語(yǔ)辨析別把子串和子序列搞混串String是由零個(gè)或多個(gè)字符組成的有限序列一般記作S “c1c2...cn”。課后習(xí)題里第一類(lèi)送分題往往是概念辨析但很多人在“子串”和“子序列”上栽跟頭。子串要求字符在原文中連續(xù)出現(xiàn)而子序列只要求保持相對(duì)順序不要求連續(xù)。舉例說(shuō)明對(duì)串“abcde”子串包括“ab”、“bc”、“bcd”等而“ace”只能叫子序列不能叫子串。主串與模式串的關(guān)系也是考點(diǎn)在進(jìn)行模式匹配時(shí)通常把正在被查找的串稱(chēng)為主串把用于匹配的串稱(chēng)為模式串匹配成功意味著模式串是主串的子串。還有一個(gè)容易忽略的點(diǎn)是“空串”與“空格串”??沾情L(zhǎng)度為0的串寫(xiě)作“”空格串是只包含空格的串長(zhǎng)度為空格字符的個(gè)數(shù)。習(xí)題中經(jīng)常讓考生判斷某個(gè)串是空串還是空格串這不只是摳字眼它直接影響字符串比較、求子串等操作的邊界條件處理。比如兩個(gè)看上去都是“空”的串一個(gè)含三個(gè)空格一個(gè)什么都不含它們?cè)赟trCompare中是不同的。1.2 三種存儲(chǔ)結(jié)構(gòu)怎么選順序、堆分配、塊鏈的取舍邏輯串的存儲(chǔ)結(jié)構(gòu)是課后問(wèn)答題的常客。教材給出了三種定長(zhǎng)順序存儲(chǔ)用一個(gè)固定長(zhǎng)度的字符數(shù)組存放串比如char S[256]。優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單、訪(fǎng)問(wèn)速度快缺點(diǎn)是長(zhǎng)度受限插入、替換操作可能溢出。堆分配存儲(chǔ)用一個(gè)char*指針配合動(dòng)態(tài)內(nèi)存分配malloc/realloc來(lái)管理串空間按需分配克服了定長(zhǎng)存儲(chǔ)的長(zhǎng)度限制。這是目前C語(yǔ)言實(shí)現(xiàn)串操作最常用的方式。塊鏈存儲(chǔ)類(lèi)似鏈表每個(gè)節(jié)點(diǎn)存放若干字符。優(yōu)點(diǎn)是插入刪除方便缺點(diǎn)是存儲(chǔ)密度低每個(gè)節(jié)點(diǎn)還有指針域開(kāi)銷(xiāo)訪(fǎng)問(wèn)某個(gè)位置的字符需要遍歷。回答“為什么大多數(shù)實(shí)用場(chǎng)景選堆分配而不選塊鏈”時(shí)我的建議是從時(shí)間復(fù)雜度和空間開(kāi)銷(xiāo)兩個(gè)角度作答。定長(zhǎng)順序存儲(chǔ)雖然快但串長(zhǎng)在編譯期就必須確定很不靈活塊鏈存儲(chǔ)雖然解決了長(zhǎng)度和插入刪除問(wèn)題但一個(gè)字符一個(gè)節(jié)點(diǎn)的話(huà)存儲(chǔ)密度只有約1/3查找第i個(gè)字符要遍歷i次代價(jià)太高。堆分配在時(shí)間和空間上取得了平衡長(zhǎng)度動(dòng)態(tài)可變通過(guò)下標(biāo)隨機(jī)訪(fǎng)問(wèn)字符仍然是O(1)。課后習(xí)題里如果讓你設(shè)計(jì)一個(gè)文本編輯程序的數(shù)據(jù)結(jié)構(gòu)堆分配存儲(chǔ)是默認(rèn)選擇。1.3 基本操作的復(fù)雜度陷阱StrConcat和SubString沒(méi)那么簡(jiǎn)單第四章的習(xí)題經(jīng)??疾旎静僮鞯臅r(shí)間復(fù)雜度比如串聯(lián)接StrConcat、求子串SubString。很多人不假思索就寫(xiě)O(1)這是錯(cuò)的。串聯(lián)接需要把兩個(gè)串的內(nèi)容復(fù)制到新串中設(shè)兩個(gè)串長(zhǎng)度分別為m和n時(shí)間復(fù)雜度為O(mn)。求子串也需要把子串內(nèi)容從原串復(fù)制到目標(biāo)存儲(chǔ)區(qū)設(shè)子串長(zhǎng)度為len復(fù)雜度為O(len)。插入操作在順序存儲(chǔ)中需要移動(dòng)大量字符最壞情況是O(n)塊鏈存儲(chǔ)中找一個(gè)位置也是O(n)插入本身是O(1)。這些復(fù)雜度結(jié)論在選擇題、判斷題里反復(fù)出現(xiàn)務(wù)必記住背后的“為什么”不要死記硬背。我在批改作業(yè)時(shí)發(fā)現(xiàn)很多同學(xué)容易把SubString的復(fù)雜度寫(xiě)成O(1)理由是復(fù)制一個(gè)子串挺快。實(shí)際上只要涉及字符拷貝復(fù)雜度就是O(len)除非你只修改指針指向比如用char*指向子串起始位置但那樣子串沒(méi)有獨(dú)立的結(jié)束符容易越界。習(xí)題的參考答案默認(rèn)采用復(fù)制方式。2. 課后習(xí)題里最高頻的幾類(lèi)題思路比答案重要2.1 手工計(jì)算題next數(shù)組與nextval數(shù)組的不出錯(cuò)手算方法KMP算法是第四章的絕對(duì)核心幾乎所有試卷都會(huì)讓你手工計(jì)算某個(gè)模式串的next數(shù)組。習(xí)題量大但方法恒定。先給出通用的計(jì)算約定教材默認(rèn)串的位序從1開(kāi)始即第一個(gè)字符下標(biāo)為1。next數(shù)組的定義next[j]表示當(dāng)模式串第j個(gè)字符與主串失配時(shí)模式串下一次匹配應(yīng)該從第幾個(gè)字符開(kāi)始。計(jì)算規(guī)則是next[1] 0對(duì)j 1next[j] 模式串前 j-1 個(gè)字符組成的子串的最長(zhǎng)相等前后綴長(zhǎng)度 1如果不存在相等前后綴則next[j] 1。這里最核心的操作是找“最長(zhǎng)相等前后綴長(zhǎng)度”。前綴指除最后一個(gè)字符外的所有頭部子串后綴指除第一個(gè)字符外的所有尾部子串。以模式串a(chǎn)baabcac為例我完整推一遍j1規(guī)定next[1]0j2前1個(gè)字符是“a”不存在相等前后綴next[2]1j3前2個(gè)字符是“ab”前綴有a后綴有b不相等next[3]1j4前3個(gè)字符是“aba”前綴有a、ab后綴有a、ba最長(zhǎng)相等前后綴是“a”長(zhǎng)度1next[4]2j5前4個(gè)字符是“abaa”前綴有a、ab、aba后綴有a、aa、baa最長(zhǎng)相等前后綴是“a”next[5]2j6前5個(gè)字符是“abaab”前綴和后綴中能對(duì)上的最長(zhǎng)的串是“ab”長(zhǎng)度2next[6]3j7前6個(gè)字符是“abaabc”前綴和后綴沒(méi)有相等的next[7]1j8前7個(gè)字符是“abaabca”最長(zhǎng)相等前后綴是“a”next[8]2。整理成表格j12345678模式串a(chǎn)baabcacnext[j]01122312nextval數(shù)組是在next數(shù)組基礎(chǔ)上的改進(jìn)目的是一旦某字符與主串失配且該字符與它跳轉(zhuǎn)目標(biāo)位置的字符相同就繼續(xù)遞推跳轉(zhuǎn)避免多次無(wú)效比較。計(jì)算規(guī)則是從左到右掃描若T[j] T[next[j]]則nextval[j] nextval[next[j]]否則nextval[j] next[j]。繼續(xù)以abaabcac為例j2T[2]bnext[2]1T[1]a不相等所以nextval[2]next[2]1j3T[3]anext[3]1T[1]a相等所以nextval[3]nextval[1]0j4T[4]anext[4]2T[2]b不相等nextval[4]2j5T[5]bnext[5]2T[2]b相等nextval[5]nextval[2]1j6T[6]cnext[6]3T[3]a不相等nextval[6]3j7T[7]anext[7]1T[1]a相等nextval[7]nextval[1]0j8T[8]cnext[8]2T[2]b不相等nextval[8]2。于是nextval數(shù)組是j12345678nextval[j]01021302手算技巧先寫(xiě)next再寫(xiě)nextval。寫(xiě)nextval時(shí)不要跳步驟否則很容易錯(cuò)。很多參考答案直接給結(jié)果不給過(guò)程但考試時(shí)過(guò)程分很關(guān)鍵尤其是j5、j7這類(lèi)需要遞歸向前找的情況一定要把“T[j]與T[next[j]]比較”這一步寫(xiě)出來(lái)。2.2 算法設(shè)計(jì)題實(shí)現(xiàn)串的替換操作課后習(xí)題里有一道經(jīng)典算法設(shè)計(jì)題設(shè)計(jì)一個(gè)算法把串S中所有與串T相同的子串替換為串V。這道題考察的是模式匹配與串操作的綜合能力。多數(shù)同學(xué)的解題思路是循環(huán)查找T在S中的位置找到后用V替換然后繼續(xù)從替換位置之后查找。這里有個(gè)細(xì)節(jié)值得強(qiáng)調(diào)替換后要移動(dòng)的位置不是簡(jiǎn)單的“匹配位置1”而是“匹配位置T的長(zhǎng)度”因?yàn)門(mén)已經(jīng)被V替代了。如果T和V長(zhǎng)度不相等S的長(zhǎng)度也會(huì)變化必須同步更新當(dāng)前串長(zhǎng)。如果繼續(xù)從匹配位置1開(kāi)始查找可能重復(fù)匹配到V中的內(nèi)容造成死循環(huán)或錯(cuò)誤替換。我給出一個(gè)基于堆分配存儲(chǔ)、且使用BF模式匹配的替換實(shí)現(xiàn)它只依賴(lài)教材中的基礎(chǔ)操作便于理解Status Replace(SString *S, SString T, SString V) { int i 1; // 從主串第1個(gè)字符開(kāi)始查找 while (i S-length) { int pos Index(*S, T, i); // 從位置i開(kāi)始找T if (pos 0) break; // 先將S的pos位置開(kāi)始的T長(zhǎng)度個(gè)字符刪除再在pos位置插入V StrDelete(S, pos, T.length); if (V.length ! 0) { StrInsert(S, pos, V); } i pos V.length; // 關(guān)鍵跳過(guò)剛替換的內(nèi)容 } return OK; }注意這里用StrDelete和StrInsert把問(wèn)題拆開(kāi)代碼可讀性更高。測(cè)試時(shí)可以用幾個(gè)典型場(chǎng)景驗(yàn)證S “aaaaaa”T “aa”V “b”目標(biāo)是替換成“bbb”S為空串T和V長(zhǎng)度相同。我實(shí)測(cè)過(guò)第一種場(chǎng)景很多同學(xué)直接跳1個(gè)位置會(huì)把結(jié)果變成“bba ba”之類(lèi)的錯(cuò)誤答案只有跳T.length才能得到正確結(jié)果。2.3 算法設(shè)計(jì)題變體刪除所有與模式串相同的子串刪除操作是替換操作的特殊情況即V為空串。課后習(xí)題經(jīng)常單獨(dú)出這種題。思路與替換基本一致但要注意刪除后串長(zhǎng)縮短i的偏移不能加V.length而應(yīng)該保持當(dāng)前位置不變因?yàn)楹竺娴淖址呀?jīng)前移了。Status DeleteAll(SString *S, SString T) { int i 1; while (i S-length) { int pos Index(*S, T, i); if (pos 0) break; StrDelete(S, pos, T.length); i pos; // 刪除后不需要移動(dòng)查找起點(diǎn)因?yàn)楹罄m(xù)字符已前移 } return OK; }這里有個(gè)初學(xué)常見(jiàn)疑問(wèn)為什么i pos而不是pos1舉例說(shuō)明S “ababa”T “abab”第一次匹配到pos1刪除后S變成“a”。如果ipos1下一次循環(huán)發(fā)現(xiàn)1 length循環(huán)結(jié)束正確。但假如設(shè)ipos12下一次循環(huán)從第2位開(kāi)始還是會(huì)對(duì)剩余串做一次Index查找如果剩余串恰好又包含T就會(huì)漏刪。用S“aaaa”T“aa”測(cè)試最直觀第一次刪除后S“aa”如果i3會(huì)跳過(guò)剩余的這個(gè)“aa”漏刪i1則能繼續(xù)匹配并刪除干凈最終??沾?.4 復(fù)雜度對(duì)比與證明題BF和KMP到底誰(shuí)更快課后習(xí)題和考試題中常出現(xiàn)這樣的分析題給定主串S“aaaaaaaaaab”模式串T“aaaab”分別用BF算法和KMP算法求匹配成功需要比較多少次。BF算法的特點(diǎn)是一旦失配主串指針i回溯到i-j2的位置模式串指針j回到1。對(duì)上述例子BF會(huì)反復(fù)匹配到最后一個(gè)b才發(fā)現(xiàn)失配主串指針一路回溯比較次數(shù)約為主串長(zhǎng)度乘以模式串長(zhǎng)度的量級(jí)。最壞情況時(shí)間復(fù)雜度為O(n*m)這種“模式串前面都匹配、最后一字符失配”的情況恰好把BF的劣勢(shì)放大到極致。KMP算法利用next數(shù)組讓主串指針i不回溯模式串指針j跳轉(zhuǎn)到next[j]整個(gè)匹配過(guò)程中主串只掃描一遍時(shí)間復(fù)雜度為O(nm)。課后習(xí)題還??肌盀槭裁碖MP比BF快”答題關(guān)鍵就是“主串指針不回溯”這是KMP設(shè)計(jì)思想的精髓不是“next數(shù)組算得快”。寫(xiě)復(fù)雜度證明題時(shí)建議把結(jié)論和原因分層陳述BF最壞情況O(n*m)原因是每一趟匹配都可能比較m次且嘗試n-m1趟KMP最壞情況O(nm)原因是i不回退、j最多增加m次且j前后移動(dòng)總次數(shù)不超過(guò)m因此線(xiàn)性。如果題目要求寫(xiě)出匹配過(guò)程務(wù)必按“第幾趟、從哪個(gè)位置開(kāi)始、比較到第幾個(gè)字符失配、j跳到幾”逐行書(shū)寫(xiě)不要只給一個(gè)最終位置閱卷是按過(guò)程給分的。3. 關(guān)鍵算法逐行解析能直接上機(jī)的完整實(shí)現(xiàn)3.1 BF算法的最簡(jiǎn)實(shí)現(xiàn)與復(fù)雜度驗(yàn)證BF算法是樸素模式匹配代碼邏輯很直接。我給出一個(gè)從1開(kāi)始的版本以便與教材和習(xí)題答案對(duì)齊int Index_BF(SString S, SString T, int pos) { int i pos, j 1; while (i S.length j T.length) { if (S.ch[i] T.ch[j]) { i; j; } else { i i - j 2; // 主串指針回溯 j 1; // 模式串回到首位 } } if (j T.length) return i - T.length; // 匹配成功返回子串起始位置 else return 0; }這里最容易寫(xiě)錯(cuò)的回溯公式i i - j 2。匹配過(guò)程中i、j同時(shí)增加失配時(shí)j已經(jīng)比開(kāi)始時(shí)多走了j-1步所以i要回退到本輪起始位置的下一位。已知本輪起點(diǎn)是i - (j-1)再下一位要再加1所以是i - j 2。我見(jiàn)過(guò)很多同學(xué)寫(xiě)成i i - j 1結(jié)果每次都從本輪起點(diǎn)重新比較死循環(huán)。代碼實(shí)現(xiàn)時(shí)課本的S.ch[]從下標(biāo)1開(kāi)始存放字符下標(biāo)0可以放串長(zhǎng)也可以不用。但在實(shí)際C語(yǔ)言里字符數(shù)組天然從0開(kāi)始。如果直接套用教材代碼而不做調(diào)整會(huì)越界或漏字符。一個(gè)穩(wěn)妥的策略是在結(jié)構(gòu)體中定義ch[MaxSize]和length從ch[1]開(kāi)始存字符ch[0]留空。雖然浪費(fèi)一個(gè)字節(jié)但和教材算法保持一致調(diào)試時(shí)不容易錯(cuò)。3.2 KMP匹配主算法的C語(yǔ)言實(shí)現(xiàn)KMP主算法和BF相比只改了一行失配時(shí)i不回溯j跳到next[j]。如果j已經(jīng)是0說(shuō)明模式串首位都失配i和j都要加1int Index_KMP(SString S, SString T, int pos) { int i pos, j 1; while (i S.length j T.length) { if (j 0 || S.ch[i] T.ch[j]) { i; j; } else { j next[j]; } } if (j T.length) return i - T.length; else return 0; }注意當(dāng)j0時(shí)不能去訪(fǎng)問(wèn)T.ch[0]因?yàn)?號(hào)位不存儲(chǔ)字符。此時(shí)應(yīng)讓i和j同時(shí)后移即從主串下一位開(kāi)始模式串也重新從第1位開(kāi)始匹配。這個(gè)邊界條件在很多參考代碼里沒(méi)有寫(xiě)明但實(shí)際運(yùn)行中它是必要的否則會(huì)出現(xiàn)訪(fǎng)問(wèn)T.ch[0]讀取垃圾字符的問(wèn)題。next數(shù)組的求法采用遞推方式不看主串只依賴(lài)于模式串本身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; next[i] j; } else { j next[j]; } } }這段代碼的原理與KMP主算法很相似i是當(dāng)前要求next值的下標(biāo)j是已匹配的前后綴長(zhǎng)度。當(dāng)T.ch[i]等于T.ch[j]時(shí)前后綴長(zhǎng)度加1否則j回退到next[j]。很多同學(xué)不理解為什么求next數(shù)組也用類(lèi)似KMP的回退方式我用一個(gè)比喻解釋求next[i]本質(zhì)上是在“模式串自己的前綴串中做一次模式匹配”所以代碼結(jié)構(gòu)和KMP主函數(shù)幾乎一樣。不要在理解之前就硬背代碼背下來(lái)過(guò)兩天就忘。3.3 nextval數(shù)組的改進(jìn)實(shí)現(xiàn)nextval的遞推代碼與next非常像核心區(qū)別在于確認(rèn)跳轉(zhuǎn)目標(biāo)字符是否與當(dāng)前字符相同void GetNextVal(SString T, int nextval[]) { int i 1, j 0; nextval[1] 0; while (i T.length) { if (j 0 || T.ch[i] T.ch[j]) { i; j; if (T.ch[i] ! T.ch[j]) nextval[i] j; else nextval[i] nextval[j]; } else { j nextval[j]; } } }為什么nextval能減少比較次數(shù)考慮模式串T “aaaaab”普通next數(shù)組算出來(lái)是0 1 2 3 4 5當(dāng)?shù)?個(gè)字符a失配時(shí)它會(huì)跳到第4個(gè)字符a而第4個(gè)字符a必然也失配又跳到第3個(gè)a……一連串無(wú)效比較。nextval通過(guò)“如果跳轉(zhuǎn)目標(biāo)字符和當(dāng)前字符一樣就繼續(xù)向更早跳轉(zhuǎn)”的思路直接跳到一個(gè)可能匹配的位置。對(duì)“aaaaab”nextval數(shù)組是0 1 2 3 4 5實(shí)際上逐項(xiàng)算應(yīng)為0 1 2 3 4 5讓我們驗(yàn)證j3T[3]anext[3]2T[2]a相等所以nextval[3]nextval[2]1。而nextval[2]也等于nextval[1]0。所以等長(zhǎng)的重復(fù)字符串會(huì)把nextval遞推成很多0。比如“aaaaab”的nextval是0 1 0 1 0 5不對(duì)我再仔細(xì)演算對(duì)TaaaaabT[1]a、T[2]a、T[3]a、T[4]a、T[5]a、T[6]b。next[1]0nextval[1]0i2j1T[2]T[1]nextval[2]nextval[1]0i3j2T[3]T[2]nextval[3]nextval[2]0i4j3T[4]T[3]nextval[4]nextval[3]0i5j4T[5]T[4]nextval[5]nextval[4]0i6j5T[6]bT[5]a不相等nextval[6]5。所以nextval是0 1 0 1 0 5不對(duì)第2個(gè)字符nextval[2]0前面寫(xiě)了nextval[2]nextval[1]0。那么是0 0 0 0 0 5。是的對(duì)于全a的模式串nextval前5位全是0只有最后一個(gè)b保留5。這樣失配時(shí)直接從第5位跳到第0位省掉中間所有無(wú)效跳轉(zhuǎn)。這是nextval改進(jìn)思想最直觀的例子習(xí)題里也喜歡拿這種極端串出題。3.4 綜合場(chǎng)景示例統(tǒng)計(jì)子串出現(xiàn)次數(shù)課后題還有一種綜合題變體統(tǒng)計(jì)模式串在主串中出現(xiàn)的次數(shù)。我習(xí)慣先用KMP寫(xiě)出能定位子串的基礎(chǔ)函數(shù)再在循環(huán)里調(diào)用。上機(jī)測(cè)試時(shí)可以用這個(gè)函數(shù)驗(yàn)證前面的替換、刪除邏輯是否遺漏邊界。int CountSubstr(SString S, SString T) { int count 0; int pos 1; while (pos S.length) { int idx Index_KMP(S, T, pos); if (idx 0) break; count; pos idx T.length; // 不重疊計(jì)數(shù) } return count; }如果把pos idx T.length改成pos idx 1就變成允許重疊出現(xiàn)的計(jì)數(shù)方式。以S“aaaaa”T“aa”為例不重疊計(jì)數(shù)結(jié)果是2重疊計(jì)數(shù)結(jié)果是4。到底用哪種取決于題目描述建議把這兩種計(jì)數(shù)邏輯都自己跑一遍考場(chǎng)上一看到“子串出現(xiàn)次數(shù)”就能反應(yīng)過(guò)來(lái)題目要的是哪種。4. 常見(jiàn)誤區(qū)與調(diào)試實(shí)錄這些問(wèn)題90%的人都會(huì)遇到4.1 字符串結(jié)束符的處理坑C語(yǔ)言?xún)?nèi)置字符串以\0結(jié)尾但數(shù)據(jù)結(jié)構(gòu)教材中的串通常用length字段記錄長(zhǎng)度不依賴(lài)\0作為結(jié)束標(biāo)志。很多同學(xué)在做課后習(xí)題代碼復(fù)現(xiàn)時(shí)隨手用strlen求模式串長(zhǎng)度結(jié)果因?yàn)閿?shù)組里有臟數(shù)據(jù)導(dǎo)致長(zhǎng)度不對(duì)。我在調(diào)試一個(gè)替換算法時(shí)就遇到過(guò)T.length大于實(shí)際字符個(gè)數(shù)的情況排查了很久才發(fā)現(xiàn)是字符數(shù)組初始化時(shí)沒(méi)有把未用位置清零。建議在自己實(shí)現(xiàn)串結(jié)構(gòu)體時(shí)初始化時(shí)用memset把所有字符位置為0或者統(tǒng)一約定ch[0]不參與存儲(chǔ)。這樣即便某個(gè)操作忽略了length字段也不會(huì)因?yàn)樽x到殘留字符而出現(xiàn)詭異行為。4.2 數(shù)組下標(biāo)從0還是從1開(kāi)始的約定沖突教材的算法描述為了與數(shù)學(xué)表示一致串的位序從1開(kāi)始而C語(yǔ)言的數(shù)組下標(biāo)從0開(kāi)始。這個(gè)沖突是第四章上機(jī)實(shí)踐的頭號(hào)坑。如果你用C語(yǔ)言實(shí)現(xiàn)BF算法最簡(jiǎn)單的方案是放棄ch[0]從ch[1]開(kāi)始存字符人為制造一個(gè)“1基數(shù)組”。缺點(diǎn)是比較浪費(fèi)一個(gè)字節(jié)但換來(lái)的是與教材所有偽代碼一一對(duì)應(yīng)調(diào)試起來(lái)不容易亂。如果你堅(jiān)持從ch[0]開(kāi)始存也可以但BF回溯公式、next數(shù)組遞推的下標(biāo)都要整體減1適配。很多網(wǎng)上代碼是0基實(shí)現(xiàn)的和課本習(xí)題答案對(duì)不上。我的建議是考研復(fù)習(xí)階段以課本1基為主把所有算法手算題和代碼題都統(tǒng)一成1基思路工作后寫(xiě)業(yè)務(wù)代碼再回到0基畢竟那時(shí)候你不需要與教材的偽代碼對(duì)照了。4.3 模式匹配越界與死循環(huán)問(wèn)題初寫(xiě)KMP時(shí)最典型的報(bào)錯(cuò)是“數(shù)組下標(biāo)越界”和“程序不結(jié)束”。越界多發(fā)生在未處理j0的情況。當(dāng)j0時(shí)如果還執(zhí)行T.ch[j]必然訪(fǎng)問(wèn)到ch[0]如果ch[0]被當(dāng)作串長(zhǎng)或其他元數(shù)據(jù)邏輯就全亂了。死循環(huán)則多出現(xiàn)在next數(shù)組求錯(cuò)、導(dǎo)致j一直在原地跳轉(zhuǎn)的場(chǎng)景。一個(gè)實(shí)用的調(diào)試方法是在循環(huán)體內(nèi)打印i、j、next[j]的值觀察j是否卡在同一個(gè)值上。如果某一次失配后j的值與上一輪失配前完全相同說(shuō)明next數(shù)組求錯(cuò)了。此時(shí)不要繼續(xù)往后面查先回頭檢查GetNext里的遞推條件。4.4 參考答案在自己機(jī)器上跑不過(guò)的常見(jiàn)原因課后習(xí)題答案里給的通常不是完整可運(yùn)行程序而是一個(gè)算法函數(shù)片段。很多人把函數(shù)片段復(fù)制到自己的工程里編譯不過(guò)就以為答案錯(cuò)了。實(shí)際上常見(jiàn)的缺漏包括沒(méi)有定義SString結(jié)構(gòu)體、沒(méi)有引用Status類(lèi)型、沒(méi)有提供StrDelete和StrInsert的基礎(chǔ)實(shí)現(xiàn)。算法本身正確但環(huán)境沒(méi)配齊。我的建議是搭建一個(gè)統(tǒng)一的小工具集把SString結(jié)構(gòu)體、StrAssign、StrCompare、SubString、Concat等基礎(chǔ)操作寫(xiě)好并驗(yàn)證通過(guò)后續(xù)做第四章習(xí)題時(shí)直接復(fù)用。這樣既避免重復(fù)勞動(dòng)也能在寫(xiě)替換、刪除等算法時(shí)不至于被基礎(chǔ)操作的細(xì)節(jié)打斷思路。5. 復(fù)習(xí)與應(yīng)考經(jīng)驗(yàn)這一章怎樣才能把分拿穩(wěn)5.1 一份可執(zhí)行的刷題路徑針對(duì)第四章我給不同目標(biāo)的讀者一套刷題順序。如果是期末復(fù)習(xí)先把概念題和手算題做完重點(diǎn)是next和nextval數(shù)組的計(jì)算然后做1-2個(gè)算法設(shè)計(jì)題替換和刪除。如果是考研準(zhǔn)備除了課后題還要額外找王道或歷年真題里的KMP變式題比如基于失配信息的字符串匹配、next數(shù)組的優(yōu)化證明等。具體安排可以是第一天梳理串的定義、存儲(chǔ)結(jié)構(gòu)和基本操作整理復(fù)雜度結(jié)論第二天全力練習(xí)next和nextval手算至少完成5個(gè)不同模式串的計(jì)算并核對(duì)第三天實(shí)現(xiàn)BF和KMP代碼用多個(gè)測(cè)試樣例在線(xiàn)運(yùn)行驗(yàn)證第四天完成替換、刪除、統(tǒng)計(jì)子串次數(shù)等算法設(shè)計(jì)題第五天把所有錯(cuò)題和疑問(wèn)點(diǎn)復(fù)盤(pán)一遍把替換算法中“i pos V.length”這類(lèi)關(guān)鍵步驟做成自己的錯(cuò)題筆記。5.2 答題模板與踩分點(diǎn)解答算法設(shè)計(jì)題時(shí)閱卷老師一般按步驟給分。我的建議是寫(xiě)清楚以下幾個(gè)層次先說(shuō)明數(shù)據(jù)結(jié)構(gòu)用堆分配存儲(chǔ)還是定長(zhǎng)順序存儲(chǔ)再給出算法思想一兩句話(huà)寫(xiě)清“先找位置再刪除再插入”然后寫(xiě)核心代碼不要求編譯通過(guò)但邏輯必須清晰最后分析時(shí)間復(fù)雜度。哪怕最后代碼有小bug前三步寫(xiě)完整也能拿大部分分?jǐn)?shù)。模式匹配的代碼題尤其重視下標(biāo)處理的正確性。如果分配了ch[MaxSize]卻沒(méi)有說(shuō)明ch[0]是否使用閱卷時(shí)容易被扣分。建議在代碼前加一句注釋說(shuō)明“約定串從下標(biāo)1開(kāi)始ch[0]置空”。這種細(xì)節(jié)在考場(chǎng)上就是隱性踩分點(diǎn)。5.3 我自己用過(guò)的一些小技巧最后分享幾個(gè)我實(shí)際教學(xué)和寫(xiě)代碼過(guò)程中覺(jué)得特別好用的小技巧。計(jì)算next數(shù)組時(shí)我會(huì)先在草稿紙上把模式串的每個(gè)前綴寫(xiě)成一行然后圈出每個(gè)前綴的最長(zhǎng)相等前后綴再統(tǒng)一加1比直接在表格里填數(shù)字更快也不容易漏項(xiàng)。寫(xiě)KMP代碼時(shí)我會(huì)在GetNext和Index_KMP里各加一個(gè)輔助打印函數(shù)輸出每一步的i和j這樣測(cè)試樣例時(shí)能看到匹配過(guò)程不是只有一個(gè)最終結(jié)果。替換和刪除算法中涉及串長(zhǎng)更新的地方我會(huì)用printf打印每次循環(huán)后的串內(nèi)容和長(zhǎng)度一旦結(jié)果不對(duì)馬上能看出是長(zhǎng)度沒(méi)更新還是位置偏移錯(cuò)誤。根據(jù)我個(gè)人經(jīng)驗(yàn)第四章的很多錯(cuò)誤其實(shí)都出在“邊界條件”上而不是算法主體邏輯上。所以每次寫(xiě)完匹配類(lèi)代碼我都會(huì)用三個(gè)測(cè)試用例自測(cè)模式串長(zhǎng)度為1、模式串等于主串、主串為空。這三個(gè)用例能暴露絕大多數(shù)越界和死循環(huán)問(wèn)題省下大量調(diào)試時(shí)間。把這些習(xí)慣保持到考試或項(xiàng)目里串這一章基本就不會(huì)再丟分了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天干一干| 第二页中文字幕| 91熟女综合| 射久久| 国产精品免费视频不卡| 噜噜瑟| 婷婷五月天激情网| 亚洲drav色图| 久久黄色视频一区二区三区 | 100啪啪视频大全| 九九热视频在线观看| 超碰9 7女人| 91在线精品| 欧美亚洲国产日本在线,久久精品国产| 97色亚洲| 91av天美性媒精品视频| 啪一啪免费视频| 国产精品九九| 日本午夜精品理论片A级APP发布| 久久久成人免费av电影| 久久欧美性爱视频| 精品久| 大香蕉手机在线视频| 欧美成人性活片| 久久久精品国产亚洲伊人| 欧美激情精品| 久久久久久久久久久999| av网站免费看| 啊啊啊啊啊在线视频| 亚洲本色精品一区二区久久| 欧美天天影院| 天天看片天天爽| 亚洲日韩精品久久久久一区壹牛 | 国产激情视频在线观看| 欧美天天综合在线| 操b网站亚洲无码| 翔田千里无码中出中文字幕| 熟女人妻一区二区三区免费看 | 五月丁香婷婷综合| 中文字幕蜜乳av| 国产农村妇女精品1区二区| 欧美色999| 啊啊啊好舒服好爽啊啊啊视频| 伊人网青青| 偷拍色图| 亚洲国产综合久久久性感熟妇| 亚洲中文字幕在线视频一区二区| 国产精品3| 亚洲性爱无码乱伦av| 成人无码欧美一级A片狼牙直播| 99re3这里只有精品| 一级性爱视频免费观看 | 精品999999| www.高清无码诱惑一区.com | 亚洲色色色| 日婷婷| 青青草久草AV| 久久25| a v网站在线播放| 亚欧洲日韩国产精品| 男人的天堂.com| 一级黄色性爱A级片| 竹菊一区二区三区AV线| 情色五月天久久久| 人妻少妇色综合| 九九精品99| 一本色道熟妇| 久久视频,这里只有精品| 高凊专区人人操| 激情接吻视频久久久久久| 日日夜夜精品视频| 久久精品成人| 大屁股熟女一区二区三区| 啊啊啊用力在线观看| 国产精品无码论坛| 影音先锋日本一区二区| 好吊色青靑草| 久久中文字幕在线观看| 在线 欧美 亚洲| 东京成人一区| 性色avv| 十八禁啪啦拍视频无遮挡| 超清福利精品视频在线| 好爽视频在线观看视频| 色九九久九九| 日本高清一本二本免费不卡| 一区,二区,三区视频| 蜜臀久久99精品久久久老,,| av凤凰久久久| 久久久久九九九| 一区不卡在线观看av| 国产成人五月天丁香花| 夜夜草天天| 日韩无码一区二区三区| 精品人妻高清麻豆av| 狠综合网| 国产精品久久久999| 亚洲。日韩。欧美| 蜜臀人妻少妇久久在线观看| 99抽插| 九九无码久久精品视频| 97超碰热线| 人妻精品综合中文字幕在线 | 五月婷婷丁香| 婷婷色综合| 涩五月婷婷| 欧洲自拍色图gif在线| 人妻在线臀日韩| 国产久久一区二区午夜| 天堂蜜桃无码视频一区二区| 一本久道久久综合狠狠爱| 日韩黄色电影网站| 亚洲精品一二三四区| 久jiu久神马影院| 嗯啊免费视频| 久久偷拍人| 欧美日韩人人早| 97超碰色屌| 久久大陆| 超碰在线1234区| 精品一区二区2| 亚洲影视第一页| 粉嫩久久久极品| 99精品丰满人妻无码| 91无摭挡| 亚洲欧美骚| 久久精品人妻一区| 久久久亚洲Av| 静品嫩模一区二区| 深夜啪啪啪视频免费| 五月天综合网| 久久久久久裸体| 美女91网| 成年人三级黄色片视频| 偷看洗澡一二三区美女| 亚洲 综合 欧美| 五月婷婷hd| 五十路人妻在线| 97中文字幕一区| 亚洲日韩电影| 特级毛片特黄久久免费看| 亚洲日韩精品在线播放| 九九热免费国产视频婷婷伊人五月| 国产天天骚| 亚洲综合校园春色| 黄页av| 日韩人妻一区二区| 大香蕉520| 久久久不能久久久久| 人人超碰在线观看黄| 一区二区三区色综合| 精品熟妇视频一区二区| 久久国产在线一区二区| 操99| 蜜臀久久久国产| 欧美在线天堂| 欧美视频一区二区在线| 色一射色一射| 丝袜 中出 制服 人妻 美腿 中文字幕| 国产精品麻豆成人av| 日本操BAV| 日日干日日操五月天伦理视频| 激情小说亚洲视频| 男人天堂.AB| 综合天天网| 蜜臀久久99精品久久久久久酒店 | 天天综合网~91| 一起草日韩| 伊人亚洲国产一成人久久精品,久久| 丝袜喷水在线| 亚洲天天操| 色色色欧美| 亚洲天堂美臀在线| 国产亚州精品美女久久久免费| 色原狠狠天天天| 国产一区二区三三视频| 国产精品视频电影| 91精品国产91久久青草| 日本天天操| 爱丝福利| www黄片免费看com| 今日头条成人一区二区三区四虎精品| 国产又黄又爽| 18禁久极品美女久久哦哟呀!| 中出欧美| 婷婷五月天色色| 内射黑丝袜| 国产三级在线现体验区| 日韩传媒在线| 精品国产一区二区三区四区在线看 | 久久久久久少妇| 操逼视频色| 伊人青青一区成人视频在线观看区| 综合色区偷拍| 超碰99在线观看| 99re99在线视频| 亚洲操人| 亚洲熟女人妻中文字幕一区二区| 亚洲精品国产精品乱码不99| 91精品人妻一品二品三品| 熟女色综合久久| 欧美久久人妻少妇一区二区| 一区二区三区视频国产免费| 久久久久国产精品人妻aⅴ天堂| 一级片在线观看高清无码| 四虎AV无码| 黄色免费网| 精彩国产视频播放1区2区| 国产精品美女| 使劲用力艹少妇视频一区二区| ,成人免费啪啪视频| 日韩99神马视频播放| 亚洲欧美日韩制服另类| 九九av| 黑人操一区二区| 风月影院男女十八禁| 日韩性爱再线视频| 中文字幕欧美丝袜07资源| 中文字幕老熟妇黄色视频| 日本不卡在线二区三区| 亚洲人精品久久久喷水| 午夜激情成人在线观看| 精品成人女人久久| 女人高潮抽搐喷水视频网站| 五十路三区在线| 四月丁香婷婷| 天天干夜夜一操| 熟女少妇视频| 超碰这里只有精品| renqi久久久久久久久久久久| 亚洲天堂2020| 99re只有精品| 9久精品| 99热在线观看| 狠狠97| 7月婷婷综合| 亚洲中文一区二区三区| 丝袜 中出 制服 人妻 美腿 中文字幕| 91综合在线| 性爱综合一区二区| 亚洲人妻久久| 国产超碰欧美| 午夜福利区| 搡老熟女老女人老熟妇免费视频| 人人搞人人插人人操| 欧美78| 91日韩在线| 成人乱人伦一区二区| 干妹子| 偷拍 精品 另类 四区| 无遮挡一级毛片视频免费的| 久9精品| 日本免费一区二区不卡| 亚洲综合影片| 国产欧美美女免费观看视频| 99天堂网| 亚洲AV无线| 97在线免费视频| 亚洲精品国产熟女久久久| 四虎影库国产精品免费| 好爽视频在线观看视频| 亚洲第一男人天堂| 亚洲欧美日韩偷拍色图| 国产在线观看一区二区三区| 欧美日韩操逼动图| 国色天香av| 丝袜美腿射精91| 夜色91| 人人艹亚洲| 色婷婷五月天| 男人的天堂kva| 91九色蝌蚪在线观看| 美女黄频a美女大全免费皮| 综合色图亚洲欧美| 午夜美女诱惑电源网| 物业黑人 AV一区| 伊蕉97蜜桃97狠狠综合干| 啊啊啊啊免费视频| 2018色综合天天操| 97精品97久久| 狠狠操官网| 熟女丰满人妻一区| 欧美色图20P| 久久久国产亚洲精品系列| 人妻丝袜无 码视频专区| 白丝少妇一区二区| 91P0RNY大屁股人妻| 色综合久久888| 一区二三区四区视频大全套| 亚洲天天做日日做天天谢日日| 91超级碰碰| 日本黄色XXX| 欧美经典一区二区三区| 亚洲熟久久| 又黄又硬又粗又长国产视频| 日韩av一级黄片| 日韩欧美偷拍美女视频| 黄色小视频日本txt| 一区二区三区色综合| 手机在线免费看的av| 中文字幕老熟妇黄色视频| 伊人欧美大香蕉视频| 8050无码八戒| 国产尤物在线三区| 色五月激情综合网| 精精品人妻一区二区三区| 在线啊v一区| 风月影院男女十八禁| 日本操逼二区| 亚洲性综合| 欧美综合第一页| 嗯啊不要在线观看嗯啊| 色网站导航大全| 激情丁香五月婷婷| 中文字幕久久婷婷丁香五月天| 人妻天天操天天爽视频免费| 激情小说图片亚洲首页| 久日91在线| 日韩人妻 中文字幕| 91精品婷婷国产综合久久| 欧美日韩国内不卡| 色香欲影| 一区二区 电影 亚洲| 久久黄色性爱视频| 97超级久久| 操九九九九九九| 一本精品日本在线视频精品 | 一区三区啪啪| 99re视频这里只有精品| 国产SV一线| 中文字幕一区二区在线日韩精品| 一本色道久久综合狠狠操| 色婷婷狠狠| 亚洲高清视频在线免费观看| 九九九九97| 婷婷中文字幕| 日韩三A大片在线观看| 久久久九精品| 日韩97视频!在线| 色色福利| 亚洲高清男人天堂| 中文字幕91页| 欧州一区二区三区四区| 久久大香蕉97| 超碰伊人在线| 国产精品午夜成人福利| 婷婷伊人| 夜间福利片1000无码| 日日摸天天爽夜夜欢| 手机久操欧美综合色码| 91女网站| 91 亚洲 欧洲| 强免费黄色网址| 18禁无码永久免费无限制| 久久亚洲日韩国产欧| 抽查国产福利主播| 婷婷综合五月天| 郑州宾馆老熟女露脸啪啪| 欧美精品庄| 成人一级二级| 97精品97久久| 欧美青青草视频| 啊啊啊97视频| 欧美白嫩在线放| 亚州少妇| 美女诱惑爱爱| 一品道视频一区二区三区| 国产欧美日韩精品中文| 影视综合无码少妇| 亚洲男人久久综合天堂| 加勒比伊人| 97爱亚洲| 欧美性第一页| 黑人精品XXX一区一二区| 96久久久久久久| 人妻蜜桃臀| 嗯嗯啊啊的视频| 色九九九综合| 久久同城AV| 成人欧美日超碰| 吉川爱美亚洲二区在线| 妇人噜噜| 久九9精品| 91丝袜美腿片| 天美传媒av在线| 少妇第一页| 97视频新免费| 91久久久久| 欧美,日韩,中文,另类| 超碰在线1234区| 热热色国产一二区AV| 久久成人网站| 东北女人高潮视频| 国产精品美女| 八戒午夜福利理论片| 免费福利视频中文字幕| 人干人人人操人人摸| 日韩精品黄片免费观看| 色综合色综合网| 亚洲熟妇极品| 亚洲国产一级中文综合久久天堂在线免费观看 | 日人妻视频91| 99re免费视频精品全部| 好色美女九七第一页| 蜜乳av一区二区三区| 99精品无码| 日日操夜夜操天天操免费观看麻豆| 中文字幕制服诱惑| 操b在线观看| 在线岛| 久久精品店| 久/久精品99看9| 国产九九久久久精品| 蜜臀99999| 精品十八在线观看| 中文字幕天堂在线| 日本123区操B视频| 国产夜夜操| 亚洲男人天堂视频| 蜜臀久久99精品久久久久久无删减| 思思热在线视频在线| 激情无码日韩| 天天综合亚在线| 99re8免费高清在线| 九九九草| A一区片| 国产精品亚洲免费| 99re95| 久久久999国产| 12一15性XXXX粉嫩国产| 亚洲日本韩国在线| 青娱乐手机日韩在线视频| 青青草依人大香蕉| 欧美性爱日韩性爱| 97青青操视频| 青青草在线视频美女| 国产 日韩 欧美一区| 国产精品无码论坛| 精品国产国产AV| 中文字幕在线免费观看 | 五月丁香网站| 国产久久久久影院老熟女| 亚洲图片 欧美电影| 欧美精品一区二区少妇免费A片| 欧美中出1| 欧美韩国你懂得在线| 中国少妇啪啪视频| 丁香六月东京热| 狠狠干精品一二三四五六2022| 国产日本顶级一区二区三区| 人人操人人大香蕉| 久久久久久久国产| 国产女s强制榨精视频| 亚洲黑丝在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 无码精品人妻一区二区三区妖精 | 怡红院成人视频| 岛国视频免费在线观看| 成人日韩中文字幕| 中文AV制服乱伦| 欧美亚洲综合色| 国产精品另类一区大香蕉| 狠狠中文字幕| 二级久久网| 国产精品久久aV| 国产亚洲 中文欧美久久| 人妻熟女一区二区在线视频| 日本理论在线| 亚洲中文字幕久久无码精品| 91精品伊人久久久大香线蕉91| 亚av顶级裸体一区二区三区四区五区 | 91天射| 先锋激情∨在线视频播放| 台湾佬中文娱乐自偷自拍| 大香蕉欧美| 青青草密桃在线播放| 三四中文字幕| 久九九九九九九热| 狠狠操官网| 久久久免费懂色| 国产尤物AV尤物在线观看不卡| 偷拍综合亚洲| 久碰视频| 国产成人99久久亚洲综合| 91九九九逼| 国产精品熟女九色九色蜜臀| 久久高清无码夜夜操| 午夜精品探花| 天天92av| 亚洲青色欧美| 亚洲欧美中文日韩视频中国语| 亚洲精品国产拍免费91在线| 天天色天天干天天射| 久久丁香五月天| 九九九九精| 在线人妻熟女一区二区三区四区五区| 亚洲成人在线高清| 97精品在线| 国产亚洲综合欧美一区| 亚洲成人贴图| 成人一区二区三区四区| 中文字幕 国产区| 九九亚洲| 国产99999久久精品| 免费黄色片子| 97超碰磁| 欧美色图亚洲色,麻豆| 狠狠狠狠狠狠| 欧洲欧美视频一区二区| 视频二区美腿制服人妻欧美| 中文乱码99| 国产精品一区二区黄片| 思思热在线视频免费| 男人天堂网手机版婷婷| 六月婷激情福利天堂69| 中文字幕一区电影在线观看| 中文字幕在线免费观看 | 激情文学亚洲| 欧美久久久15P| 激情丁香婷婷| 中文字幕人成乱码熟女香港| 91精品国产91熟女| 另类视频在线| 精品无码一区二区| 久久九九综合| 日韩国产乱子伦App| 伊人久久AV诱惑悠悠| 偷拍欧美激情| 日本丝袜人妻内射| 人人操人人色人人摸| 偷拍导航视频网站| 色天欧美| 久久久9品一区二区三区| 欧亚免费视频| 久草网站免费在线观看| 国产男女边吃边摸视频网站| 好爽视频在线观看视频| 少妇色欲综合网2| 日本中文字幕一区| 男人的天堂VA在线| 色女综合| 厕所偷拍在线| 精品久久久九九九孕妇| 超碰免费在线| www.久久久久| 日韩av乱伦| wwwcaobibi| 美国aaaaa一级黄片| 岛国在线免费视频| 久久久久亚洲三级电影| 国产亚洲99久久精品熟| 中文字幕国产在线天堂| 97综合久久| 久久精品超碰| 亚洲色图欧美| 干超碰碰熟女| 国产乱伦搜索结果91P| 97国产精品一区| 91中文字幕在线观看| 伊人久久亚洲色欲综合网站| 97超碰人操| 97欧美久久久久久久| 亚洲自拍欧美色综合| 国产精品天干天干综合网麻豆| 精品乱码久久久久| 九九九草| 夜夜嗷嗷一区二区| 伊人色综合网电影| 我要看免费韩日黄片| 热九九精品| 天天综合色| 女优免费一区二区永久| 毛片中心9视频99| 国产性感在线观看| 欧美性生活内射| 97视频www| ...日韩成人一区二区三区字幕| 国产成人精品一区| 大香蕉视频啪啪啪啪| 极品肉射| 国产又猛又粗又爽又黄| 日本三级网页| 红杏大香蕉| 红桃视频高潮| 啊啊啊啊在线播放| 91色香| 东京热视频网| 成人性爱高清视频免费看| 啪啪啪综合网| 亚洲永久AV无码精品秋霞| 九一性生活免费视频| 亚洲天堂另类| 日日操免费视频| 欧美麻豆成人同性GⅤ在线| 五月天综合在线| 7月婷婷综合| 蜜桃精品一区二区三区久在线| 91日韩网站| 久久国产AⅤ| 亚洲制服欧美另类内射| 国产精品情侣啪啪| 福利大香蕉| 亚洲色图一区二区三区| 亚洲欧综合另类无码一区| 一区二区日韩欧美久久| 96国产污污污丝袜| 男人的天堂va在线| 欧美经典一区二区三区| 麻豆 欧美 日韩| 九九九九九九九九九九九蜜桃| 天天综合欧美| 97任你吞精| 97超碰热线| 91综合网在线| 色小视频蜜乳| 噜噜噜亚洲精品| 人人搞人人插人人操| 破苞ⅩXXX性无码动漫无码| 91人妻丝袜无码| 97国产|免费| 日本日逼高清| 青青草在线视频欧美| 97精品免费视频网站| 婷婷五月天激情网| 日韩图区| 国产美女销魂在线观看不卡| 亚洲……91| 日韩99999| 亚洲黄色网址视频| 91真人天天在线| 香蕉国产精品麻豆亚洲欧美日韩| 人妻熟女字幕一区二区| 色97欧美| 亚洲av强奸乱伦| 人人摸人人舔一区二区| 人人操人人干网页| 久干网| 日本人妻中文字幕精品| 男人天堂站| 日本中文熟女视频| 日本三级人妻a人妻一在线| 2017天天插| 亚洲熟妇自偷自拍另欧美| 欧美九九九| 国产激情久久| 日韩猛交| 蜜桃传媒一区二区亚洲| 色欲天天综合久久久无码网中文| 国产精品自拍xxxx| 婷婷午夜| 免费在线视频97| 99精品在线| 粉嫩av一区二区三区天美传媒 | 99啪啪| 欧美A片中文字幕| 美女的肌被草喷水视频| 日韩精品在线放| 婷婷情色五月天| 在线观看高清AV| 福利在线视频一区二区| 操逼1区| 日韩特一级久久| 青娱乐日韩无码| 夜夜性| 久草综合京东| 丰满岳乱妇一区二区三区| 中国的操老妇女| 曰韩无码777| 色图综合| 97青娱乐超碰久久| 久久一级无码精品毛片6| 好湿好紧视频| 91女人的网站| 亚洲国产婷婷在线播放| 一本一道久久综合久久| 久久久久13| 天天操人人操狠狠插| 91国产丝袜美女| 九九九九九九九精品视频| 欧美成人性爱视频在线播放 | 久久无码一区二区二三区性色| 国产丰满少妇久久久精品影院| 中日韩久久久| 天天干18禁| 神马午夜久久久| 国产a级午夜毛片| 亚洲欧洲激情卡通另类文学四射小说网站| 九九热五区| a在线视频免费观看| 在线视频免费观看午夜| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 91伊人久久在线| 一区二区你上我| 日韩亚洲国产视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | heyZO天然素人无码AⅤ专区| 亚洲色图欧美色图综合| 欧美内射少妇| 国产成人网址| 日韩美女操b| 91欧美亚洲| julia ann久久| 中文字幕55555| 99激情视频| 免费在线黄片视频| 日韩成人性日韩成人性爱视频在线免费观看 | 欧美 综合 亚洲| 天天综合AV| 美女被艹尤物视频| 日韩性爱视频在线免费观看| 97国产精品一区| 久久视频,这里只有精品| 婷婷色香| 1024久久高清视频| 色色激情| 每日更新AV| 三级特黄60分钟播放| 日韩精品在线视频,日韩精品……| 婷婷九月国产| 伦理弟一页| 黄色高清久久无码依人| 日韩乱码Av| www.99热| 操一区| 国内精品久久久久影院亚洲| 操逼不卡中文字幕| 久久透逼视频| 韩国手机不卡无码三级视频| 久久国产AⅤ| 中文字幕丰满子伦无码专区在线视频最新 | 天美传媒av 在线| 天天干天天狼在线视频| 日韩免费簧片| 96精品久久久久久久久久| 色约约一区=区三区| 美女91av| 青青青草伊人精品| 91视频综合在线| 最新9久久久9免费视频| 青草园大香蕉| 男人天堂网手机版婷婷| 伊人久久亚洲色欲综合网站| 天天躁狠狠躁av| 劲爆欧美人妖三区91| 精品国产久久乱码| 日本黄色XXX| 日韩欧美~中文字| 久久久无码精品人妻二区| 亚洲另类色综合网站| 少妇熟女视频一二三区| 一区二区无码视频| 精品免费囯产一区二区三区| 精品一区二区三区蜜桃| 亚洲人久久久久日| 97爱爱爱| 久久免费99精品久久久久久| 久久五月天婷婷丁香中文字幕| 久久国产乱子伦精品免费女人| 视频黄色国产一级| 中文字幕123| 97色婷| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 色天天野狼综合社区| 免费视频观看60秒| 久草加勒比一区在线| 思思热在线视频免费| 久久五月天婷婷丁香中文字幕| 午夜无码精品免费看性色| av国产无码| 99精品丰满人妻无| 九九国产热| 亚洲色婷婷综合久久久久中文| 亚洲无 码A片在线观看麻豆| 操逼天美3区| 中文字幕在线高清男人的天堂| 亚洲另类综合欧美| 国产五码丝袜屁眼| 亚洲好色人妻| 无码人妻1727| 亚洲AV秘 精品久久老牛影视| 日本午夜久久电影| 亚洲国产剧情少妇激情| 好爽免费视频,| 久久精品国产亚洲av水密被窝| 综合亚洲欧美精品日韩?v| 国产区性爱在线视频秋霞豆| 亚欧精品久久久久久久久久久| 日韩懂色网| 91女色| 欧美精品日韩久久久九| 久久久久久久人妻| 天天激色| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 国产精品无码久久久久2025| 九九人人操| 60秒免费小视频| 日韩射精| 国产动漫操逼视频| 人妻在线大香蕉| 啊啊啊啊啊啊啊啊视频| 思思性爱| 九九久久99| 国产极品馒头逼| 日本中文字幕在线视频 | 欧美日韩大黄片| 亚洲综合春色| 老熟乱一区二区三区四区| 中国少妇XXXX做受| 精品网站9999| 精品日日人妻| 国模少妇一区二区三区| 亚州 综合 色图| 肏逼视频日本| 大奶啊啊好爽| 国产精品视频电影| 97久久资源| 天天操妹子| 破苞ⅩXXX性无码动漫无码| 狠狠搞 亚洲91| 91老熟女视频| 嗯啊不要啊在线 | 美女久久久| 色五月首页| 91高清日| 午夜免费福利视频一区| 伊人亚洲综合| 伦伦成年午夜免费视频| 日韩ab网 | 五月天婷婷成人网| 精品无人区麻豆乱码1区2区图片| 国产精品自在线发布| 精品无码人妻一区二区免费蜜桃| 国模无码人体一区二区三| 无码欧美有限公司| 中文字幕在线观看网址| 蜜臀av在线播放一区二区三区| 欧日韩一二三f区| 蜜乳av首页| 91四海无码日韩欧美| 黄网色一区二区三区四区精品| 精彩久久中文| 成人三级片无码| 黄页网站成人免费| 色婷婷影院| 97在线看| 操逼内射干逼白丝91| AV一区观看| 精品人妻一区春色| 92午夜免费福利视频| 91亚洲狠狠色| 日日爽夜夜爽| 精品蜜乳AV免费观看| 97色论| www.91理论| 校园春色美腿丝袜| 啊啊啊操一区| 欧美18老人禁| 日韩精品电影| 五月天综合在线| 中文字幕99999| 国产AV人人 夜夜人人澡| 国产宅男宅女在线观看| 夜夜嗨老熟女AV一区二区三区| caoni国产亚洲av| 亚洲日韩东京热一区| 在线国产福利网址导航| 经典丝袜一区| 日本 欧美 亚中文字幕| AV麻豆免费一区| 夜夜青青无码影院| 91 刺激在线| 98人妻精品一区二区色欲| 中文字幕诱惑制服人妻丝袜美丝袜美| 人、人、摸,人、人、草| 青娱乐黄色录像| 午夜欧美J进J出白浆流出久久久| 国产精品呦一区二区三区| 999色欧美中文字幕| 国产欧美伊人| AV污污污污| 国产精品网址| 校园春色亚洲无码| 久久久九97| 日韩一级特黄av毛片| 伊人久久AV诱惑悠悠| 1204av韩国| 五月丁香影院| 五月丁香拍拍激情综合三级| 97精品免费视频网站| 少妇精品久久久| 熟女人妻av在线资源,黄色的资源| 免费一级精品啪啪视频| 美女91在线| 男人的天堂在线| 九九热免费国产视频婷婷伊人| 伊人网综合在线视频| 神马久久久久久久| 青青草中出视频| 激情终合网| 亚殴在线| 久热伊人| 国产92麻豆天美精品色欲5| 中国AAAAAA黄色片| 嗯嗯啊啊啊好爽| 日韩三级性| 69精品人人人人| 欧美日韩m| 操碰97| 天天看,天天做| 天天色黄色影院天天操| 凹凸视频在线一区二区| 99热这里都是精品| 久久人妻一区二区三区高清| 天天天乱色综合全| 欧美 亚洲 制服 精品| 天天躁日日躁AAAXX| 一线黄色免费性爱片| 欧美高清18A片| 97欧美精品| 欧美性色网| 欧美日韩小说| 久久婷婷一区| 啊啊啊男女| 色97综合中文字幕| 9999九九九久久久| 人人搡人人肉久久精品| 97视频7| 97精品久久久久久久| 中文字幕91综合| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 日本一区二区成人在线| 免费的很黄很污的全部视频| 亚洲天堂五月天国产| 精品无码一区二区三区| 五月天婷婷久久| 五月天社区| 99无码| 欧美色图天堂在线| 情侣开房子拍 日韩无码 女的很漂亮| 婷婷中文字幕| 国模一区二区三区| 淫淫总合网| 亚洲。日韩。欧美| 欧美一二三区四五区| 中文字日本乱码| 精品视频专区| 亚洲天堂日本| 婷婷探花久久精品一区| 青青草原香蕉日本Ap| 日日骚网站| 亚洲高清自拍| 亚洲伊人久久综合97| 亚洲性爱电影| 最近2019中文字幕国语免费版| 欧美国产伊人久久久久| 99人人干| 久久久工口| 久久超碰免费的| 夜夜免费视频| 大逼色网站| 探花精品 一区二区| 五月丁香六月综合缴清无码 | 开心婷婷五月| 啊嗯好大视频在线观看| 区二区亚洲婷| 色拍偷亚洲| 亚洲中文字幕av| 欧美日韩中文视频播放| 午夜人人操| 国产99久久99热这里只有精品15| 国产综合操逼高清| 99re这里只有精品中心播放| 丰满少妇高潮无码| 亚洲双插| 夜夜草天天| A片 AV一级在线播放观看免费| 丁香五月婷婷五月| 久久男人网| 九九九九精品在线| 人人操人人爽人人操人人| 欧美日韩国产高清在线一二三区 | 黄久在线| 啊啊啊在线观看| 成人麻豆av电影网站| 睡产熟女乱伦| 91爱综合| av线电影| 久久97超碰| 日本一本道A级黄色毛片试看60分钟| 夂久色| 欧美黑人91| 秋霞Av理论一级在线| 免费强奸av| 欧美综合加勒比在线| 色原狠狠天天天| 最新av网站在线观看| 日本久久99| 亚州男人的天堂| 白丝av| 操人无码| 97欧美色综合| 成人av福利在线观看| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 欧美青青视频| 精品人妻一二三| 伊人久久婷婷| 九热超碰| 曰韩操B| 99re3这里只有精品| 农村少妇久久久久久久| 双插性欧美一二三区| 天天操天天射青青草| 91精品导航| 大香蕉黄色一区| 蜜臀th| 日韩精品人妻一| 久草婷婷| 在线毛片片免费观看| 懂色AV一区二区三区| 综合欧美色图| 日本一级性爱| 福利大香蕉| 中日韩久久久| 二三四区精品| 国产精品毛片?v一区二区三区| 美女高潮视频91| 国产高清成人免费视频| 色色丁香| 97美日韩视频| 大香蕉手机视频| 欧美草草| 亚洲超碰AV| 色97综合中文字幕| 激情干在线| 综合一区二区影视| 家庭乱伦性爱av| 超碰97亚洲区| 日韩欧美午夜视频在线| 午夜福利在线合集| 欧美黑人精品一区二区| 一区二三区四区视频大全套| 日韩一区二区高清在线观看的| 91欧美综合在线| av无码精品久久久久| 激情啪啪视频| 操婷婷逼| 欧美一级二级三级| 超踫中文字幕| 无码不卡亚洲成?人片| 亚洲精品一二三四区| www.色吧5.com| 日韩激情视频| 日本道日本道中文字幕日本道最新日本道在线观看 | av激情亚洲五月天| 亚洲一二三精品久久网| 四虎午夜影院| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲国产精品无码AV久久| 国产精品青青草| 豆花视频操逼网址| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 91亚洲丝袜熟女| 色综合五月天| 婷婷久久五月综合激情| 久久亚洲人妻| 国产午夜无码片在线观看影视| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照 | 日韩人妻精品中文字幕| 囯产操逼片| 女色综合| 久久久99999久网站| 嫖老熟女A片一二三区| 美女91| 热久日综合| 日本免费亚洲欧美| a级免费在线观看| 动漫av中文| 九九黄色网| 无码高清操逼网址| 人妻喷水| 91偷拍欧美亚洲| 8050无码八戒| 激情五月天中文字幕色| 色男人色天堂东京热| 乱色视频中文字幕| 网站A V在线| 97久久久久久久久久| 精品国产嫩穴视频| 人人插人人摸人人| 神马久久午夜| 蜜臀无码一区二区| 天美av在线观看| 人妻系列无码专区中文有码| 狠狠干91| KK色在线影院| 中文字幕亚洲欧美在线不卡| 亚洲中文字母在线播放| 日本中文熟女视频| 亚洲有薄码区久久在线一区| 91国产丝袜足交精品视频| 免费一级欧美片片线观看| 少妇熟女1区2区3区| 超碰97极品9| 老司机久久| 久久久不能久久久久| 不卡免费av在线播放 | 97操在线| 亚洲免费精品一区| 欧亚在线视频| 亚洲h片在线免费观看| 国产精品久久久久久久久久久久久久| 精品人妻一区二区三区夜夜| 翘臀vidoes| 人人透人人操| 成人a大片在线观看| 狠狠婷婷亚洲中文综合久久| 色婷婷日韩精品一区二区三区| 99色日| 青青草伊人久久| 麻豆2区1区天美| 狠狠干综合| av凤凰久久久| 操我无码| 国产91乱伦| 人人贴人人摸| A级国产欧美激情在线| 60秒不遮不挡| 国产一二三福利视频网| 941超碰| 青操影院| 久湿久久| 精品无码久久久久| 国产不卡中文字幕免费avi| 超碰色97| 久碰视频| 99操视频| 婷婷AV一区二区三区| av无码精品久久久久| 久久久久久亚洲中文| 色欲三区| 熟女这里只有精品6| PMv在线观看| AV麻豆免费一区| 久久亚洲中文字幕视频| 国内亚洲高清无码| 日本东京热久久久电影| 日韩肏逼视频| 熟妇综合一区二区三区| 天天日天天干天天操| 探花精品 一区二区| 97视频在线免费观看| 国产女大学生AV| 日韩成年人性爱视频| 波多野结衣之双飞调教在线播放 | 在线中文字幕| 偷拍三区| 东京热男人的天堂精品| 一级特级aaaa毛片免费观看| 女人喷水视频在线观看| 天天精品|