欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

C語(yǔ)言實(shí)戰(zhàn):一元多項(xiàng)式計(jì)算與有序鏈表數(shù)據(jù)結(jié)構(gòu)深度解析

C語(yǔ)言實(shí)戰(zhàn):一元多項(xiàng)式計(jì)算與有序鏈表數(shù)據(jù)結(jié)構(gòu)深度解析 1. 為什么一個(gè)“多項(xiàng)式計(jì)算”項(xiàng)目值得認(rèn)真做一遍很多人看到“一元多項(xiàng)式計(jì)算”這幾個(gè)字第一反應(yīng)是這不就是數(shù)據(jù)結(jié)構(gòu)課上的經(jīng)典練習(xí)題嗎數(shù)組或者鏈表存系數(shù)寫個(gè)加減乘除就完事了。我一開始也這么想直到真正動(dòng)手把完整源碼和文檔從頭擼一遍才發(fā)現(xiàn)這個(gè)項(xiàng)目里藏著的東西遠(yuǎn)比想象中多。它表面上是一個(gè)數(shù)學(xué)計(jì)算問題本質(zhì)上是一個(gè)數(shù)據(jù)結(jié)構(gòu)選型、內(nèi)存管理、算法優(yōu)化、邊界處理的綜合訓(xùn)練場(chǎng)。你在這個(gè)項(xiàng)目里踩過的每一個(gè)坑幾乎都能在后續(xù)更復(fù)雜的工程里原樣復(fù)現(xiàn)。這個(gè)項(xiàng)目要做的事情很明確用C語(yǔ)言實(shí)現(xiàn)一元多項(xiàng)式的表示與運(yùn)算包括多項(xiàng)式的創(chuàng)建、銷毀、復(fù)制、加法、減法、乘法、求值、求導(dǎo)以及結(jié)果的格式化輸出。它適合兩類人一類是正在學(xué)C語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)、想找一個(gè)“麻雀雖小五臟俱全”的項(xiàng)目來練手的同學(xué)另一類是有一定編程基礎(chǔ)、但想重新審視“如何用最樸素的工具寫出最穩(wěn)的代碼”的開發(fā)者。C語(yǔ)言沒有STL沒有智能指針沒有垃圾回收所有內(nèi)存都要自己管所有邊界都要自己判這正是它最鍛煉人的地方。我之所以愿意花時(shí)間把這個(gè)項(xiàng)目完整梳理一遍是因?yàn)樵趯?shí)際操作中我發(fā)現(xiàn)同一個(gè)功能用不同的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)代碼量、運(yùn)行效率、可維護(hù)性差距巨大。比如多項(xiàng)式加法用數(shù)組做和用鏈表做寫法完全不同前者要考慮最大項(xiàng)數(shù)限制后者要考慮指針操作的安全性。再比如多項(xiàng)式乘法樸素的雙重循環(huán)和優(yōu)化后的逐項(xiàng)合并在項(xiàng)數(shù)較多時(shí)性能差異非常明顯。這些取舍不是拍腦袋決定的而是要根據(jù)實(shí)際使用場(chǎng)景來權(quán)衡。接下來的內(nèi)容我會(huì)把整個(gè)項(xiàng)目的設(shè)計(jì)思路、核心實(shí)現(xiàn)、實(shí)操步驟、常見問題全部拆開講清楚源碼和文檔的完整結(jié)構(gòu)也會(huì)一并說明你可以直接照著復(fù)現(xiàn)。2. 項(xiàng)目整體設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)選型拆解2.1 一元多項(xiàng)式的數(shù)學(xué)表示與程序映射一元多項(xiàng)式在數(shù)學(xué)上的標(biāo)準(zhǔn)形式是P(x) a? a?x a?x2 ... a?x?其中a?是系數(shù)i是指數(shù)。程序里要表示這個(gè)式子核心就是存兩樣?xùn)|西系數(shù)和指數(shù)。最直覺的做法是用一個(gè)數(shù)組下標(biāo)代表指數(shù)數(shù)組元素存系數(shù)。比如coeff[3] 5就表示5x3。這種表示法叫“系數(shù)數(shù)組法”優(yōu)點(diǎn)是隨機(jī)訪問極快求值、加法、減法都是O(n)級(jí)別缺點(diǎn)是如果多項(xiàng)式很稀疏比如只有x1和x1???兩項(xiàng)數(shù)組里絕大多數(shù)位置都是0空間浪費(fèi)嚴(yán)重而且指數(shù)范圍受數(shù)組大小限制。另一種做法是用鏈表每個(gè)節(jié)點(diǎn)存一個(gè)系數(shù)和一個(gè)指數(shù)節(jié)點(diǎn)按指數(shù)有序鏈接。這種“有序鏈表法”對(duì)稀疏多項(xiàng)式非常友好空間只跟非零項(xiàng)數(shù)有關(guān)插入和刪除也靈活。缺點(diǎn)是訪問第k項(xiàng)需要從頭遍歷指針操作容易出錯(cuò)內(nèi)存管理更復(fù)雜。我在這個(gè)項(xiàng)目里最終選擇了帶頭結(jié)點(diǎn)的有序單鏈表作為核心數(shù)據(jù)結(jié)構(gòu)原因有三第一它天然支持任意指數(shù)范圍不受數(shù)組長(zhǎng)度限制第二有序性讓加法、減法、乘法可以像歸并排序那樣線性推進(jìn)效率高且邏輯清晰第三帶頭結(jié)點(diǎn)可以統(tǒng)一空表和非空表的操作減少邊界判斷。提示如果你只是做一個(gè)課程作業(yè)項(xiàng)數(shù)不超過幾十項(xiàng)用數(shù)組完全夠用代碼更短更直觀。但如果你想真正理解“數(shù)據(jù)結(jié)構(gòu)如何影響程序行為”鏈表版本值得認(rèn)真寫一遍。2.2 帶頭結(jié)點(diǎn)有序鏈表的節(jié)點(diǎn)設(shè)計(jì)每個(gè)多項(xiàng)式節(jié)點(diǎn)我定義成這樣的結(jié)構(gòu)體typedef struct PolyNode { double coef; // 系數(shù) int exp; // 指數(shù) struct PolyNode *next; // 指向下一項(xiàng) } PolyNode, *Polynomial;這里有幾個(gè)設(shè)計(jì)決策需要解釋。系數(shù)用double而不是int是因?yàn)槎囗?xiàng)式運(yùn)算中會(huì)出現(xiàn)小數(shù)系數(shù)比如除法或者用戶輸入0.5x2用整型會(huì)丟精度。指數(shù)用int因?yàn)橐辉囗?xiàng)式的指數(shù)通常是非負(fù)整數(shù)負(fù)數(shù)指數(shù)屬于分式范疇不在本項(xiàng)目討論范圍內(nèi)。next指針指向下一個(gè)節(jié)點(diǎn)整個(gè)鏈表按指數(shù)從大到小排列這樣輸出時(shí)天然就是從高次到低次符合閱讀習(xí)慣。帶頭結(jié)點(diǎn)的意思是鏈表的第一個(gè)節(jié)點(diǎn)不存實(shí)際數(shù)據(jù)只作為哨兵。這樣做的好處是插入和刪除第一個(gè)實(shí)際節(jié)點(diǎn)時(shí)不需要特殊處理頭指針的變化代碼更統(tǒng)一。比如銷毀鏈表時(shí)直接從head-next開始釋放即可創(chuàng)建空多項(xiàng)式時(shí)只需要head-next NULL。這個(gè)技巧在鏈表操作中非常常用建議養(yǎng)成習(xí)慣。2.3 核心運(yùn)算的算法思路與復(fù)雜度分析多項(xiàng)式加法兩個(gè)有序鏈表合并。設(shè)兩個(gè)多項(xiàng)式分別為A和B都按指數(shù)降序排列。用兩個(gè)指針分別遍歷A和B比較當(dāng)前節(jié)點(diǎn)的指數(shù)如果A的指數(shù)大把A的節(jié)點(diǎn)復(fù)制到結(jié)果鏈表如果B的指數(shù)大復(fù)制B的節(jié)點(diǎn)如果指數(shù)相等系數(shù)相加如果和不為零則插入結(jié)果為零則跳過因?yàn)榱沩?xiàng)不存儲(chǔ)。這個(gè)過程類似歸并排序的merge操作時(shí)間復(fù)雜度O(mn)m和n分別是兩個(gè)多項(xiàng)式的項(xiàng)數(shù)。多項(xiàng)式減法本質(zhì)是加法先把減數(shù)多項(xiàng)式的每一項(xiàng)系數(shù)取反再執(zhí)行加法。這里要注意不能直接修改原多項(xiàng)式否則會(huì)破壞原始數(shù)據(jù)。我的做法是先復(fù)制一份減數(shù)多項(xiàng)式對(duì)副本取反再與被減數(shù)相加。復(fù)制操作雖然增加了O(n)的時(shí)間和空間但保證了函數(shù)的無副作用這在工程上非常重要。多項(xiàng)式乘法A的每一項(xiàng)與B的每一項(xiàng)相乘系數(shù)相乘、指數(shù)相加得到一系列新項(xiàng)然后合并同類項(xiàng)。樸素做法是雙重循環(huán)生成所有項(xiàng)再排序合并時(shí)間復(fù)雜度O(mnlog(mn))。優(yōu)化做法是利用兩個(gè)多項(xiàng)式都有序的特點(diǎn)逐項(xiàng)相乘后按指數(shù)插入到結(jié)果鏈表中插入時(shí)如果發(fā)現(xiàn)同類項(xiàng)就直接合并這樣時(shí)間復(fù)雜度降到O(mn)但每次插入需要遍歷結(jié)果鏈表找到合適位置實(shí)際是O(mnk)k是結(jié)果鏈表長(zhǎng)度。對(duì)于中小規(guī)模多項(xiàng)式這個(gè)復(fù)雜度完全可以接受。多項(xiàng)式求值給定x的值計(jì)算P(x)。用**秦九韶算法Horner法則**可以從最高次項(xiàng)開始逐層提取x把O(n2)的冪運(yùn)算降到O(n)的乘加運(yùn)算。不過鏈表是從高次到低次排列的正好適合從前往后掃描每次result result * x coef非常優(yōu)雅。多項(xiàng)式求導(dǎo)對(duì)每一項(xiàng)應(yīng)用冪法則系數(shù)乘以指數(shù)指數(shù)減一。常數(shù)項(xiàng)求導(dǎo)后為零直接跳過。時(shí)間復(fù)雜度O(n)。3. 核心功能實(shí)現(xiàn)與關(guān)鍵代碼解析3.1 多項(xiàng)式創(chuàng)建與插入如何保證有序性創(chuàng)建多項(xiàng)式有兩種方式一種是從用戶輸入讀取另一種是從文件讀取。無論哪種核心都是按指數(shù)降序插入節(jié)點(diǎn)。插入函數(shù)的設(shè)計(jì)很關(guān)鍵我寫了一個(gè)insertTerm函數(shù)接收多項(xiàng)式頭指針、系數(shù)和指數(shù)自動(dòng)找到正確位置插入如果遇到同類項(xiàng)就合并。int insertTerm(Polynomial head, double coef, int exp) { if (coef 0.0) return 1; // 零項(xiàng)不插入 PolyNode *prev head; PolyNode *curr head-next; while (curr ! NULL curr-exp exp) { prev curr; curr curr-next; } if (curr ! NULL curr-exp exp) { curr-coef coef; if (curr-coef 0.0) { prev-next curr-next; free(curr); } return 1; } PolyNode *newNode (PolyNode *)malloc(sizeof(PolyNode)); if (newNode NULL) return 0; newNode-coef coef; newNode-exp exp; newNode-next curr; prev-next newNode; return 1; }這段代碼有幾個(gè)細(xì)節(jié)值得注意。第一零系數(shù)直接返回不創(chuàng)建節(jié)點(diǎn)因?yàn)榱沩?xiàng)在多項(xiàng)式里沒有意義。第二合并同類項(xiàng)后如果系數(shù)變成零要把該節(jié)點(diǎn)從鏈表中刪除并釋放內(nèi)存否則會(huì)留下“系數(shù)為零的節(jié)點(diǎn)”影響后續(xù)運(yùn)算和輸出。第三malloc之后必須檢查返回值雖然現(xiàn)代操作系統(tǒng)很少讓malloc失敗但在嵌入式環(huán)境或大規(guī)模分配時(shí)這個(gè)檢查是必要的。第四插入位置用prev和curr雙指針維護(hù)避免了每次從頭遍歷效率更高。注意如果你在插入時(shí)不做同類項(xiàng)合并那么用戶輸入“2x^3 3x^3”會(huì)得到兩個(gè)指數(shù)為3的節(jié)點(diǎn)后續(xù)加法和乘法都會(huì)出錯(cuò)。所以插入時(shí)合并同類項(xiàng)是必須的這是保證多項(xiàng)式規(guī)范性的第一道關(guān)卡。3.2 多項(xiàng)式加法與減法歸并思路的完整落地加法函數(shù)的實(shí)現(xiàn)如下Polynomial addPolynomial(Polynomial A, Polynomial B) { Polynomial result createPolynomial(); if (result NULL) return NULL; PolyNode *pa A-next; PolyNode *pb B-next; while (pa ! NULL pb ! NULL) { if (pa-exp pb-exp) { insertTerm(result, pa-coef, pa-exp); pa pa-next; } else if (pa-exp pb-exp) { insertTerm(result, pb-coef, pb-exp); pb pb-next; } else { double sum pa-coef pb-coef; if (sum ! 0.0) { insertTerm(result, sum, pa-exp); } pa pa-next; pb pb-next; } } while (pa ! NULL) { insertTerm(result, pa-coef, pa-exp); pa pa-next; } while (pb ! NULL) { insertTerm(result, pb-coef, pb-exp); pb pb-next; } return result; }這里雖然調(diào)用了insertTerm但由于兩個(gè)輸入多項(xiàng)式都是有序的插入的位置總是在結(jié)果鏈表末尾所以insertTerm內(nèi)部的while循環(huán)幾乎不會(huì)執(zhí)行整體效率接近O(mn)。如果你追求極致性能可以寫一個(gè)專門的appendTerm函數(shù)直接尾插省去查找位置的開銷。我在文檔里保留了insertTerm版本因?yàn)樗ㄓ靡哺菀桌斫狻p法函數(shù)只需要把B的每一項(xiàng)系數(shù)取反然后調(diào)用加法Polynomial subPolynomial(Polynomial A, Polynomial B) { Polynomial negB copyPolynomial(B); if (negB NULL) return NULL; PolyNode *p negB-next; while (p ! NULL) { p-coef -p-coef; p p-next; } Polynomial result addPolynomial(A, negB); destroyPolynomial(negB); return result; }這里先復(fù)制B再取反而不是直接修改B是為了保證函數(shù)的純函數(shù)特性。調(diào)用subPolynomial(A, B)之后A和B都不變結(jié)果是一個(gè)新多項(xiàng)式。這種設(shè)計(jì)在調(diào)試時(shí)非常友好你可以反復(fù)調(diào)用同一個(gè)函數(shù)而不用擔(dān)心數(shù)據(jù)被污染。3.3 多項(xiàng)式乘法雙重循環(huán)與逐項(xiàng)合并乘法實(shí)現(xiàn)如下Polynomial mulPolynomial(Polynomial A, Polynomial B) { Polynomial result createPolynomial(); if (result NULL) return NULL; for (PolyNode *pa A-next; pa ! NULL; pa pa-next) { for (PolyNode *pb B-next; pb ! NULL; pb pb-next) { double coef pa-coef * pb-coef; int exp pa-exp pb-exp; if (!insertTerm(result, coef, exp)) { destroyPolynomial(result); return NULL; } } } return result; }雙重循環(huán)遍歷A和B的每一項(xiàng)系數(shù)相乘、指數(shù)相加然后插入結(jié)果鏈表。insertTerm會(huì)自動(dòng)合并同類項(xiàng)所以不需要額外處理。這個(gè)算法的時(shí)間復(fù)雜度是O(mnk)其中k是結(jié)果鏈表的平均長(zhǎng)度。對(duì)于項(xiàng)數(shù)較少的多項(xiàng)式比如m和n都小于100運(yùn)行時(shí)間在毫秒級(jí)完全夠用。如果項(xiàng)數(shù)達(dá)到幾千可以考慮用哈希表按指數(shù)聚合或者先把所有項(xiàng)生成再排序合并但那樣代碼復(fù)雜度會(huì)上升需要根據(jù)實(shí)際需求權(quán)衡。實(shí)操心得在乘法中如果A或B是零多項(xiàng)式即空鏈表結(jié)果應(yīng)該直接返回零多項(xiàng)式而不是進(jìn)入循環(huán)。我的createPolynomial創(chuàng)建的空多項(xiàng)式head-next NULL雙重循環(huán)自然不執(zhí)行返回空結(jié)果邏輯上是正確的。但如果你在插入時(shí)對(duì)零系數(shù)做了特殊處理要確保零多項(xiàng)式乘以任何多項(xiàng)式都返回零多項(xiàng)式。3.4 多項(xiàng)式求值與求導(dǎo)秦九韶算法與冪法則求值函數(shù)用秦九韶算法double evaluatePolynomial(Polynomial P, double x) { double result 0.0; for (PolyNode *p P-next; p ! NULL; p p-next) { result result * pow(x, p-exp - (p-next ? p-next-exp : 0)) p-coef; } return result; }等等這個(gè)寫法有問題。秦九韶算法的標(biāo)準(zhǔn)形式要求指數(shù)是連續(xù)的但鏈表中的指數(shù)可能不連續(xù)。比如P(x) 3x? 2x2 1指數(shù)是5、2、0中間跳過了4、3、1。正確的做法是double evaluatePolynomial(Polynomial P, double x) { double result 0.0; int prevExp 0; for (PolyNode *p P-next; p ! NULL; p p-next) { int gap p-exp - prevExp; result result * pow(x, gap) p-coef; prevExp p-exp; } return result; }這樣對(duì)于3x? 2x2 1計(jì)算過程是result 0 * x? 3 3然后gap 5-2 3result 3 * x3 2然后gap 2-0 2result (3x32) * x2 1 3x? 2x2 1。驗(yàn)證正確。這個(gè)細(xì)節(jié)在寫代碼時(shí)很容易忽略導(dǎo)致求值結(jié)果錯(cuò)誤我在第一次實(shí)現(xiàn)時(shí)就踩了這個(gè)坑。求導(dǎo)函數(shù)Polynomial derivativePolynomial(Polynomial P) { Polynomial result createPolynomial(); if (result NULL) return NULL; for (PolyNode *p P-next; p ! NULL; p p-next) { if (p-exp 0) continue; double newCoef p-coef * p-exp; int newExp p-exp - 1; insertTerm(result, newCoef, newExp); } return result; }常數(shù)項(xiàng)指數(shù)為0求導(dǎo)后為零直接跳過。其他項(xiàng)系數(shù)乘以指數(shù)指數(shù)減一。由于原多項(xiàng)式有序求導(dǎo)后仍然有序insertTerm會(huì)按順序插入效率很高。4. 完整實(shí)操流程與源碼文檔結(jié)構(gòu)說明4.1 項(xiàng)目文件組織與編譯方式整個(gè)項(xiàng)目我組織成三個(gè)文件poly.h放結(jié)構(gòu)體定義和函數(shù)聲明poly.c放所有函數(shù)的實(shí)現(xiàn)main.c放測(cè)試代碼和用戶交互。這種分離方式讓代碼結(jié)構(gòu)清晰也方便復(fù)用。編譯命令很簡(jiǎn)單gcc -Wall -Wextra -stdc99 -o poly main.c poly.c -lm-Wall -Wextra打開所有警告-stdc99指定C標(biāo)準(zhǔn)-lm鏈接數(shù)學(xué)庫(kù)因?yàn)橛昧藀ow函數(shù)。我強(qiáng)烈建議編譯時(shí)打開警告很多潛在問題比如未初始化變量、類型不匹配編譯器都會(huì)提醒你。實(shí)測(cè)下來加上-Wall -Wextra后我至少發(fā)現(xiàn)了三處指針使用不當(dāng)和兩處類型轉(zhuǎn)換問題。文檔部分我寫了一個(gè)README.md包含項(xiàng)目簡(jiǎn)介、編譯方法、使用示例、函數(shù)說明和常見問題。另外還有一個(gè)test.c里面放了十幾個(gè)測(cè)試用例覆蓋了空多項(xiàng)式、零多項(xiàng)式、單項(xiàng)式、稀疏多項(xiàng)式、高次多項(xiàng)式等各種情況。每次修改代碼后跑一遍測(cè)試能快速發(fā)現(xiàn)回歸問題。4.2 用戶交互與輸入解析main.c里我實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的命令行交互界面用戶可以選擇創(chuàng)建多項(xiàng)式、執(zhí)行運(yùn)算、查看結(jié)果。輸入格式我設(shè)計(jì)成“系數(shù) 指數(shù)”成對(duì)輸入以“0 0”結(jié)束。比如輸入“3 5 2 2 1 0 0 0”表示3x? 2x2 1。解析函數(shù)如下Polynomial inputPolynomial() { Polynomial P createPolynomial(); if (P NULL) return NULL; double coef; int exp; printf(請(qǐng)輸入系數(shù)和指數(shù)以0 0結(jié)束\n); while (1) { scanf(%lf %d, coef, exp); if (coef 0.0 exp 0) break; if (exp 0) { printf(指數(shù)不能為負(fù)數(shù)請(qǐng)重新輸入\n); continue; } if (!insertTerm(P, coef, exp)) { destroyPolynomial(P); return NULL; } } return P; }這里對(duì)負(fù)數(shù)指數(shù)做了攔截因?yàn)楸卷?xiàng)目只處理非負(fù)整數(shù)指數(shù)。如果用戶輸入了負(fù)數(shù)指數(shù)提示重新輸入而不是直接退出體驗(yàn)更好。另外scanf的返回值我沒有檢查嚴(yán)格來說應(yīng)該檢查是否成功讀入了兩個(gè)值否則遇到非法輸入會(huì)陷入死循環(huán)。在文檔里我提到了這個(gè)改進(jìn)點(diǎn)但為了代碼簡(jiǎn)潔示例中保留了簡(jiǎn)化版本。4.3 輸出格式化與零多項(xiàng)式處理輸出函數(shù)需要把鏈表中的節(jié)點(diǎn)格式化成人類可讀的字符串。我寫了printPolynomial函數(shù)void printPolynomial(Polynomial P) { if (P NULL || P-next NULL) { printf(0\n); return; } int first 1; for (PolyNode *p P-next; p ! NULL; p p-next) { if (!first p-coef 0) printf( ); else if (!first p-coef 0) printf( - ); double absCoef p-coef 0 ? p-coef : -p-coef; if (p-exp 0) { printf(%.2f, absCoef); } else if (p-exp 1) { if (absCoef 1.0) printf(x); else printf(%.2fx, absCoef); } else { if (absCoef 1.0) printf(x^%d, p-exp); else printf(%.2fx^%d, absCoef, p-exp); } first 0; } printf(\n); }這段代碼處理了幾個(gè)細(xì)節(jié)第一項(xiàng)不輸出正號(hào)系數(shù)為1或-1時(shí)省略數(shù)字指數(shù)為0時(shí)只輸出系數(shù)指數(shù)為1時(shí)輸出x而不是x^1。這些細(xì)節(jié)讓輸出更接近數(shù)學(xué)書寫習(xí)慣。零多項(xiàng)式空鏈表直接輸出“0”。實(shí)測(cè)下來這些格式化規(guī)則能覆蓋絕大多數(shù)使用場(chǎng)景輸出結(jié)果清晰易讀。5. 常見問題排查與避坑經(jīng)驗(yàn)實(shí)錄5.1 內(nèi)存泄漏與野指針問題C語(yǔ)言項(xiàng)目最常見的問題就是內(nèi)存管理。我在這個(gè)項(xiàng)目里踩過的坑包括創(chuàng)建多項(xiàng)式后忘記銷毀、加法函數(shù)中結(jié)果鏈表分配失敗后沒有釋放已分配節(jié)點(diǎn)、復(fù)制函數(shù)中malloc失敗后沒有清理。排查內(nèi)存泄漏最直接的工具是valgrindvalgrind --leak-checkfull ./poly它會(huì)告訴你哪些內(nèi)存塊沒有被釋放以及是在哪里分配的。我建議每完成一個(gè)功能模塊就跑一次valgrind不要等到最后再查否則問題堆積起來很難定位。另外釋放鏈表時(shí)要用臨時(shí)指針保存下一個(gè)節(jié)點(diǎn)否則free之后無法訪問nextvoid destroyPolynomial(Polynomial P) { if (P NULL) return; PolyNode *p P; while (p ! NULL) { PolyNode *next p-next; free(p); p next; } }注意destroyPolynomial接收的是頭指針包括頭結(jié)點(diǎn)在內(nèi)全部釋放。調(diào)用后原指針變成野指針建議調(diào)用后手動(dòng)置為NULL。5.2 系數(shù)浮點(diǎn)誤差與零判斷浮點(diǎn)數(shù)運(yùn)算存在精度誤差比如0.1 0.2不等于0.3而是0.30000000000000004。在多項(xiàng)式加法中如果兩個(gè)系數(shù)相加理論上為零但實(shí)際結(jié)果是1e-16我的代碼會(huì)認(rèn)為它不為零從而保留一個(gè)極小的項(xiàng)。這會(huì)導(dǎo)致輸出中出現(xiàn)“0.00x^5”這樣的奇怪結(jié)果。解決辦法是定義一個(gè)極小值EPSILON比如1e-9判斷系數(shù)絕對(duì)值小于EPSILON時(shí)就視為零#define EPSILON 1e-9 if (fabs(sum) EPSILON) { // 視為零不插入 }這個(gè)技巧在科學(xué)計(jì)算中非常常用能有效避免浮點(diǎn)誤差帶來的邏輯錯(cuò)誤。我在文檔里專門寫了一節(jié)說明這個(gè)問題建議所有涉及浮點(diǎn)比較的地方都加上容差判斷。5.3 常見問題速查表問題現(xiàn)象可能原因排查方法解決方案程序崩潰提示段錯(cuò)誤空指針解引用用gdb查看崩潰位置檢查malloc返回值檢查鏈表遍歷邊界輸出結(jié)果多出零項(xiàng)浮點(diǎn)誤差導(dǎo)致零判斷失敗打印系數(shù)值引入EPSILON容差判斷加法結(jié)果不正確同類項(xiàng)未合并檢查insertTerm邏輯確保指數(shù)相等時(shí)系數(shù)相加乘法結(jié)果項(xiàng)數(shù)異常雙重循環(huán)邊界錯(cuò)誤打印中間結(jié)果檢查pa和pb的遍歷條件內(nèi)存泄漏忘記釋放鏈表用valgrind檢測(cè)每個(gè)create對(duì)應(yīng)一個(gè)destroy求值結(jié)果錯(cuò)誤秦九韶算法指數(shù)跳躍處理不當(dāng)手動(dòng)計(jì)算對(duì)比用gap變量處理指數(shù)不連續(xù)5.4 獨(dú)家避坑技巧第一個(gè)技巧寫一個(gè)printPolynomial的調(diào)試版本在每次運(yùn)算前后打印多項(xiàng)式內(nèi)容能快速定位是哪一步出了問題。我習(xí)慣在insertTerm里加一行調(diào)試輸出確認(rèn)每次插入的系數(shù)和指數(shù)是否符合預(yù)期。第二個(gè)技巧測(cè)試用例要覆蓋極端情況。我準(zhǔn)備了這些測(cè)試空多項(xiàng)式加空多項(xiàng)式、零多項(xiàng)式乘任意多項(xiàng)式、單項(xiàng)式加同類項(xiàng)、稀疏多項(xiàng)式求值、高次多項(xiàng)式求導(dǎo)。這些用例幫我發(fā)現(xiàn)了至少五個(gè)邊界bug。第三個(gè)技巧用斷言保護(hù)關(guān)鍵假設(shè)。比如在addPolynomial開頭加assert(A ! NULL B ! NULL)在insertTerm里加assert(head ! NULL)。斷言在調(diào)試階段能快速暴露問題發(fā)布時(shí)可以用-DNDEBUG關(guān)掉。第四個(gè)技巧復(fù)制函數(shù)要深拷貝。copyPolynomial不能只復(fù)制頭指針必須逐個(gè)節(jié)點(diǎn)malloc并復(fù)制數(shù)據(jù)否則兩個(gè)多項(xiàng)式共享同一塊內(nèi)存銷毀一個(gè)會(huì)影響另一個(gè)。這個(gè)坑我在早期版本里踩過導(dǎo)致程序在銷毀臨時(shí)多項(xiàng)式后原多項(xiàng)式也變成了野指針。6. 項(xiàng)目擴(kuò)展方向與個(gè)人實(shí)操體會(huì)這個(gè)項(xiàng)目做完之后可以往幾個(gè)方向繼續(xù)擴(kuò)展。第一個(gè)方向是支持分式多項(xiàng)式即指數(shù)可以為負(fù)數(shù)這樣就能表示有理函數(shù)。第二個(gè)方向是增加多項(xiàng)式除法返回商和余式這需要實(shí)現(xiàn)帶余除法算法。第三個(gè)方向是增加文件讀寫功能把多項(xiàng)式保存到文件并從文件加載方便處理大規(guī)模數(shù)據(jù)。第四個(gè)方向是做一個(gè)簡(jiǎn)單的圖形界面用GTK或者Qt把命令行交互換成可視化操作雖然C語(yǔ)言做GUI比較繁瑣但能提升用戶體驗(yàn)。我個(gè)人在實(shí)際操作中的體會(huì)是越是基礎(chǔ)的項(xiàng)目越能暴露編程習(xí)慣上的問題。比如我一開始寫insertTerm時(shí)沒有處理系數(shù)為零的情況導(dǎo)致結(jié)果里出現(xiàn)零項(xiàng)后來加了零判斷又忘了在合并同類項(xiàng)后系數(shù)為零時(shí)刪除節(jié)點(diǎn)導(dǎo)致內(nèi)存里留下“僵尸節(jié)點(diǎn)”。這些問題在寫業(yè)務(wù)代碼時(shí)可能被框架掩蓋但在C語(yǔ)言里無處遁形。另一個(gè)體會(huì)是文檔和測(cè)試的重要性不亞于代碼本身。我花了大約三分之一的時(shí)間寫測(cè)試用例和文檔但正是這些測(cè)試幫我在修改代碼后快速確認(rèn)沒有引入回歸問題。如果你也在做類似的項(xiàng)目建議先把測(cè)試框架搭起來再寫功能代碼這樣每完成一個(gè)函數(shù)就能立即驗(yàn)證比全部寫完再調(diào)試效率高得多。最后分享一個(gè)小技巧在main.c里加一個(gè)隱藏的“演示模式”自動(dòng)運(yùn)行一組預(yù)設(shè)的多項(xiàng)式運(yùn)算并打印結(jié)果。這樣每次編譯后直接運(yùn)行就能看到完整的功能演示不需要手動(dòng)輸入。這個(gè)模式在向別人展示項(xiàng)目時(shí)特別有用也能作為冒煙測(cè)試快速驗(yàn)證程序是否正常。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉福利导航| 日韩色色网| 大香蕉手机视频| 伊人狠狠丁香婷婷综合尤物| 超碰人人在线| 96精品成人无码A片观看金桔| 婷色五月| 色婷婷六月| 另类图片激情五月天| 一起草av| 丁香五月天综合网| 久久综合播放| 26UUU精品一区二区| 99热99在线| 天天草天天爽| 欧美激情凹凸丁香网| 狠狠精品干练久久久无码中文字幕 | 久婷久婷| 五月婷在线| 人妻操逼| 五月综合激情图片| 婷婷色网| 婷婷五月天成人综合网| WWW,五月| 久久久GOGO无码啪啪艺术 | 日韩在线观看网址| 五月婷视频在线| 五月天久久综合| 久久人妻久久| 这里有精品99| 欧美碰碰| 激情五月天色播| 伊人在线婷婷草| 真实熟女-91九色| 九九热这里只有精品6| 丁香五月777| 新97人人上人人| 亚洲国产精品五月天| A短视频免费在线观看| 婷婷丁香综合| 激情五月天婷婷图| 九热视频在线伦| 婷婷五月色惰| 呦呦视频无码播放| 黄色三级日本| 久久电影五月天丁香电影| 人人操人人干AV| 五月婷婷在线短视频| 成熟妇人A片免费看网站| AV五月婷婷露脸| 色六月婷婷| www.久久| 婷婷五月天视频亚洲| 日本69日人视频| 少妇性BBB搡BBB爽爽爽电影| 六月婷婷八月丁香| 五月婷婷插一插| 神马欧美精| 婷婷色综合| 亚洲天天综合| 五月婷婷色综图片| 久久婷婷国产| 久久电影五月天丁香电影| 99毛片| 亚洲激情高潮| 丁香激情网| 99干日日干| 亚洲午夜视频| 综合色播| 亚洲综合在线丁香五月| 热的国产99热| 精典久久| 久久精品天| 开心激情站| 五月亚洲| www.五月天性.com| 婷婷五月丁香基地在线视频官网| 婷婷五月综合色中文字幕| AA片在线观看视频在线播放| 99热偷拍| 五月丁香综合影院| 丁香婷婷婷五月| 2014天天爽| 九月丁香欧美综合| 亚洲9久久精品| 久操大香蕉| 亚洲精品国产精品乱码不99| 青草视频在线蜜臀| 外国碰视频网站97| 97热在线精品| 色综合久久综合| 欧美顶级少妇做爰HD| 亚洲成人一区| 99资源在线视频| 丁香五月23111| 67194国产| 97色射| 99这里只有精品|v| 黄色三级日本| 99综合自拍| 这里只有精品久| a网站免费观看| 丁香久月婷| av不卡网站| 亚洲天堂久久| 丁香五月性| 六月婷久久| 这里只有精品视频99| 婷婷五六日| 五六月婷婷| 狼人婷婷综合| 97性视频| 少妇婷婷五月天| 亚洲中字AV电影在线网站| 五月天色社区| 婷婷丁香色五月| 国产美女视频久| 五月天六月婷婷电影| 丁香婷婷激情五月| 五月婷婷黄色视频| 热99只有精品| 99在线精品视频免费观看20| www.henhengan| 久久精品亚洲一级牲爱综合| jiZZdr| www.五月天社区| 亚洲人成人五月天| 美女丁香五婷婷| 五月情婷婷| 国产色五月| 九九热这里只有精品一| 久久99大| 五月婷婷插一插| 五月大香蕉| 久久 婷婷 五月天| 人妻操逼视频。| 久久激情五月婷婷| 日韩免费乱轮网站| 六月天无码网址| 色青青五月| 秋霞学生妹一二级| 人妻VideOssS人妻| 色色色热热热| 久久停停超碰| 亚洲激情综合| 色综合色香蕉网| 就爱日五月天| 99精品丰满| 亚洲一二三网| 超碰不卡在线| 激情网五夜婷婷| 激情五月综合视频| 五月开心婷婷| 夜夜躁爽日日| 日韩无码色色| 久草婷婷网| 97碰碰草| 五月天天堂久久| 婷婷五月天久久久| 五月丁香综合啪啪対白| 激情六月日韩| 丁香五月久久| 亚洲日韩久久婷婷伊人| 538任你爽视频不一样的| 色欲婷婷夜夜| 99综合视频在线| 亚洲欧洲色色| 26uuu最新地址| 激情深爱五月天| 另类视在线| 久久综合99| 欧美日韩999| 影音先锋美国A| 丁香影院五月综合| 亚洲国产成人在线| 色婷婷五月亚洲| AV性爱在线| 五月色网| 在线超碰免费| 99re在线观看| 婷婷色正月| 激情四射婷婷| 色五月av| 亚洲五月婷| 久99久视频精品| www综合久久| 色五月婷婷综合| 五月丁香少妇A| 丁香六月婷婷一区二区三区| 日韩aaaaa| 精品欧美性爱超级爽| 五月天怕怕| 婷婷五月激情综合| 婷婷五月天久久久| 欧美久久婷婷| 在线日本www| 久久刺激网| 五月丁香六月婷婷在线小说视频| 五月丁香自拍| 五月天另类小说久久小说网| 欧韩性爱| 日本久久精品18| 婷婷色色网| 婷婷五月精品中文| 99热99精品在线观看| 99在线资源| 国产肥白大熟妇BBBB视频| 99精品女人天堂| 五月丁香婷婷综合在线| 久久五月天视频| 在线18av | 97成人在线视频| 久久久www| 热99精品视频| 图片区 小说区 区 亚洲五月 | 精品国产AV色一区二区深夜久久| 97色天堂| 色噜噜狠狠插综合| 日本人妻伦在线中文字幕| 婷婷激情人妻| 色99网站| 日本欧美成人片AAAA| www98日本小时间到了| 开心五月婷婷激情网| 999热在线视频| 99re久热| www激情网| 五月婷婷激情综合| 色五月欧美| 婷婷五月丁香伊人网| AV大香蕉| 激情99热| 久久婷婷五月天激情四射| 五月天婷婷Av| 插插五月天| 九九热这里| 伊人婷婷五月天av| 91精品国产综合久久密臀| 天天日综合| 99精品高潮| 69色色视频| 亚洲另类电影| 婷婷六月丁香激情| 欧美激情综合| 激情综合啪啪| 天天射综合网站| 97精品综合久久内射| 99综合99| www.91五月| 91九九| 激情婷婷五月天| 极品五月天| RenRenSe在线视频网站| 综合久久婷婷| 五月丁香在线视频观看| 婷婷九月色| 色色操| 啪啪激情网| 五月婷精品| 亚洲成人影视在线| 97涩涩丁香五月天| 4438亚洲欧美| 狠婷婷五月| 婷婷五月丁香基| 五月婷婷少妇之| 九九99在线免费在线观看视频| 操日视频| 婷婷综合五月| 人妻久久做| 色偷偷五月天| 色播丁香五月婷婷操:屄| 色婷婷小说网| 婷婷丁香五月视频| 秋霞少妇AV网站| 日韩六十路91性交电影| 伊人激情综合| 青草五月天| 久久网婷婷| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月婷婷手机在线| 五月天激情美女久久| 国产26uuu视频| 欧美性生交A片免费看| 久久AV电影| 欧美婷婷色五月网| 久久婷婷色| 色5在线| 中国女人内射6XXXXX| 这里只有精品在线免费视频| 99热 在线播放| 精品A√| 久久天堂精品| 九九色精品| 婷婷五月天激情文学小说| 超碰人人在线| 骚货艹网站视频| 九月丁香婷婷基地| 五月婷婷六月丁香玖玖玫瑰91| 婷婷五月色花丁香社区| 色激情综合| 激情图片亚洲| 五月婷婷很很色| 五月婷婷开心六月激情小说| 9999热在线免费观看| 色久影院| 丁香六月 婷婷六月| 国产五月视频| 98永久精品| 99色视频| 国内精品免费一区二区2009| 少妇高潮一区二区三区99欧美| 五月情丁香色| 另类亚洲视频| 久久中文网| 五月综合视频| 3p日韩网站视频| 九九人人看| 玖玖婷婷五月天| 99热这里只有精品2| 九九激情网| 最新高清无码专区| 色欲久久综合| 99久久玖玖| 九九热色视频| 男人的天堂97| 五月天激情婷婷小说| 99热欧美精品| 国产,欧美,学生妹,视频| www婷婷| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 色婷婷六月天| 亚洲六月婷| 影音先锋一区| 中文字幕久久婷九女同| 99热在线观看| 亚洲激情四射| 丁香五月天综合| 日本的α片xxxwww| 婷婷色导航| 久久九九激情五月天| 影视av久久久噜噜噜噜噜三级| 热久久66| 色五月综合| 色婷婷国产精品综合在线观看| 一區四區歐美日韓| a网站免费观看| 亚洲免费av观看| 国产真实乱了老女人视频| 秋霞性爱AV| 婷婷干五月综合在线播放| 婷婷在线观看五月天在线视频| 久久婷婷草| 99热在线观看| 色九区| 九九在线视频| 日本色狠狠| 免费试看小视频 99| 亚洲综合字幕色色| 人人妻人人澡| 精品99视频| 丁香五月-激情综合| 五月丁香啪啪啪| 五月婷婷偷拍| 丁香五月婷婷六月丁香| 亚洲激情.com| 韩国久久少妇视屏| Www.婷婷五月| 色婷婷丁香特级性爱视频| 狠狠搞五月天| 九九色热| 久久9久| 五月天另类图片区99| 天天肏视奸| 香蕉久久国产AV一区二区| 五月婷在线观看| 亚洲天堂啪啪| 99人人干| 国产无套精品一区二区| 97碰在线视频| 日本三级黄色大片| 新97人人上人人| 婷婷久久精品| 日韩精品999| 婷婷五月,偷窥偷拍网| 成人视频婷婷| 99无吗| 永久地址 色| 先锋资源 996| 天天操夜夜爱| 五月天综合在线观看| 69久热| www婷婷色情网| 五月天婷婷色| 亚洲欧洲色色| 男女啪啪做爰高潮无遮挡| 无遮羞AV| 日韩无码一区二区三区四区| 激情五月天在线视频| 在线观看视频1区| 五月天在线视频尤物视频在线看| 丁香五月亚洲综合| 26uuu另类亚洲欧美日本一| 五月婷丁香亚洲| 我爱va亚洲va52| 激情五月丁香在线观看直播| 俺去也在线视频| 五月天激情婷婷丁香| 日夜夜天天| 色情久久久| 深爱激情69热| 激情久久久久久久久久| 99热啪啪| 国产XXXX搡XXXXX搡麻豆| 成人精品视频99在线观看免费| A片试看50分钟做受视频| 欧美成人AAA片一区国产精品 | 六月丁香久久| 婷婷六月丁香1| 天天综合永久| 久久ab| 五月婷婷影院| 久久99网| 国产精产国品一二三在观看| 五月天婷婷激情四射综合| 狠狠色网| 啪啪色激情五月天| 99精品爱| 亚洲成人av在线| 激情五月天视频| 在线看的免费网站| 五月丁香少妇| 色综合久久五月| 26UUU精品一区二区c〇m| 99热这里只有精品2| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 日日夜夜亚洲一区| 日本不卡中文字幕| 五月天四色房丁香| 2020日日干| 开心五月激情网| 久久黄色片| 日本一级大片| 思思热思在线精品视频| 五月婷婷激情综合网 | wwwss在线观看| 91人人爱| 成人AV在线电影| 99色热视频| 色婷久久| 噼里啪啦完整版中文在线观看| 久久成人亚洲欧美电影| 99热啪啪| 天天干com| 欧洲毛片基地c区| 亚洲字幕AV一区二区三区四区| 96色婷婷| 99久久a线观| 99热最新| 国产69精品久久久久999小说| 色噜久| 另类五月婷婷| 五月婷婷激情| 丁香五月影| 丁香婷色| 五月婷婷六月基地| 综合色播| 超碰在线观看成人视| 草操AV在线| 丁香五月天综合| 婷婷中文字幕| 色色色综合色| 色欲色香伊人| 青草青草视频2免费观看| 婷婷五月丁香色综合| 久色视频首页| 91超碰九色| 九九热这里只有精品9| 日韩黄黄| 五月综合激情网| 成人精品视频99在线观看免费| 色五月婷婷影院| 五月丁香婷婷婷婷综合网| 六月丁香综合| 免费99色| 五月丁香激情欧洲啪啪| 婷婷在线视频| 六月丁香av| 婷婷综合色播网| 99无码视频| 色色色色色五月丁香| 婷婷激情六月中文| 天天狠狠婷婷在线| 成人色五婷婷| 黄色av高清| 影音先锋xfplay资源男人网| 五月丁香免费视频| 天天综合久久| 九九视频在线观看| 99cao婷婷| 五月天天丁香婷婷在线中| 开心婷婷中文字幕| 中文字幕在线人妻| 五月天婷婷永久免费视频| 1024日韩| 五月婷婷狠狠干| 五月在线| 日韩AV一区二区三区| 五月婷婷,六月激情| 色五月成人| 精品九九网| 这里只精品热在线18| 99国产精品白浆在线观看免费| 亚洲激情视频在线观看| 91色逼| 99热色婷婷| 丁香五月色欲| 中文字幕人妻一区二区| 狠狠操.COM| 女人高潮内射99精品| 婷婷丁香六月五月天| 中文字幕综合网| 91九色小视频| 超碰在线9| 精品99在线| 日本色综合| 国产亚洲成AV人片在线| 色色色色五月| 久久婷婷五| 国产VA亚洲VA96| 婷婷中文综合网| 狠狠狠狠狠操| 99艹精品在线观看| 丁香五月天中文字幕| 91久久18| 天天狠狠六月婷丁香影院| 日本在线wwww| 国产精品色| 九月色婷婷综合| 天天色天天日天天舔| 中文字幕五月久久婷婷| 色情成人五月天| 综合网狠狠| 亚洲综合另类| 粉嫩av懂色av蜜臀av熟妇| 91色色色| 六月激情婷婷色| 国产暴力强伦轩1区二区小说| 停停色综合伊人| ..真实国产乱子伦对白在线_欧 | 日本欧美成人片AAAA | 极品少妇XXXX精品少妇偷拍| 9999色色色色| 丁香五月天社区婷婷| 直接看的AV| 久久视频婷婷| 丁香久久| 性小说五月天| 丁香八月综合激情| 丁香 久久| 婷婷五月综合在线| 伊人综合网站| 久色资源网| 操逼三区| 婷婷亚洲天堂| 91n网站cad入口在线观看| 婷婷色丁香六月| 久久大香蕉视频| 五月丁香黄色视频| 成人五月天在线视频在线观看| 亚洲中文字幕在线观看| 99热精品中文字幕| 五月天久久婷婷| 久久丁香| 激情六月综合| 五月丁香六月综合情在线观看| 色色国产| 成人丁香五月天| 99精品久久久久久久婷婷| 99精品综合视频| 俺去也在线官网| 久久99精品久久久久久青青AR| 热久久91| 婷婷五月免费在线| 亚洲成人超碰| 青草视频在线观看视频| 五月婷婷成人| 狠狠色婷婷7| www.夜夜爱.com| 欧美色九| 99热这里只有精品69| 1024欧美日韩精品久久久| 99综合网| 激情五月婷婷老师| 久久er视频6| 久久ri精品| 日本WWW九九九| www.夜夜操.con| 97人人操com| 综合色色色| 婷婷色av| 成久综合视频| 色综合久久综合| www.99视频| 国产精品VA在线| 蜜桃婷婷五月| 日本操片| 日本久久色| 日韩视频99| 日韩av网址大全| 9久热| 69热91天堂| 五月大香蕉| www夜夜操com| 色婷婷在线视频久| 成人电影AV在线观看| 国产真实乱了老女人视频| 精品99视频| 久久人妻情侣| 99视频内射三四| 我想看国产大学生口爆吞精的视频| 五月激情天| 99热色精品| 热久久视频99| 99视频这里只有免费精品| 加勒比久热| 国产精品久久久久久妇女6080| 五月婷婷丁香啪啪| 日本va欧美va欧美va| 26UUU成人网| 色色色婷| 久久丁香九| 狠狠精品干练久久久无码中文字幕| 六月婷婷av| 激情五月,激情综合网| 日韩色色色色| 99精色| 丁香五月综合网亚洲综合欧美狠狠| 精品无码色欲AV| 久久ri精品视频| 色爽九九| 俺也去综合| 五月丁香色婷婷色| 日韩综合成人| 超碰免费在线| 婷婷五月丁香综合激情| 五月开心深爱激情网| 31色区视频免费看| 婷婷五月天亚洲精品| 国产精产国品一二三在观看| 久久婷五月综合| 五月天播播中文字幕| 青青艹b| 中文字幕丰满孑伦无码专区| 思思久久99| 亚洲成人高清在线| 女人被男人吃奶到高潮| 99A片| 久久久久久五月天| 色五月婷婷啪啪五月| 另类综合激情| 精品国产人人爱人人| 五月色综合网欧美网| 亚洲欧洲国产精品| 另类伊人婷婷| …亚洲黄色在线播放日韩、av中文a…| 97人人干| 97人操人免费视频| 婷婷激情四射五月天| 婷婷五月丁香四射| 任我干视频在线观看| 禁欲电影完整版在线播放| 玖玖热视频| 五月丁香人妻| AV大香蕉| 中文字幕 中文字幕明步| 五月婷婷影院| 99热这里只有精品1| 五月丁香啪啪啪| 99成人在线观看| 色色色99| 久久五月天视频| 日本久久婷婷| 开心五月婷婷激情| 97色色色| 国产精品涩涩涩视频网站| 国产成人一区二区三区在线观看 | 天天做天天爱天天爽| 五月丁香六月玩女人| 久热这里| 91偷拍视频| 国产激情综合| 久久香蕉网| 中文字幕一色哟哟哟哟| 999热在线观看视频| 丁香五月综合激情久久潮喷| 婷婷的色色五月天| 99色干| 久久免费精品小视频| 天天色情站| 91婷婷五月天综合视频| 五月天成人在线播放丁香| 色色色免费视频| 99热日| 5月丁香啪啪啪| 日韩操人| 日日操夜夜操不卡| 人橾人| 五月婷五月婷伊人伊人五月婷| 国产阿姨日皮艹逼内射视频| 秋霞电影理论| 香蕉AV777XXX色综合一区| 五月五婷婷| 日日色综合| 这里只有精品久久| 啪啪激情网| 天天日日夜夜| 99热国产在线| 色婷婷91| 99热最新地址在线| 激情黄色小说五月天| 日日爽日日爽| 欧洲亚洲午夜| 亚洲欧美婷婷五月色综合| 亚洲V国产V欧美V久久久久久| 色婷婷狠狠禁18久久| 久久精品五月| 亚洲色碰| 热99视频| 久婷五月| h在线看免费版在线看| 亚洲xx在线| 激情婷婷九月| 婷婷丁香视频在线观看免费| 久久九精品| 九九热最新| 五月天色丁香| 亚洲xx在线| 精品99视频| 亚洲 综合中文| 色色 9| WWW,五月| 成人精品视频99在线观看免费| 久久久9久| 色五月激情| 99'无码| 国精产品一区二区三区| 亚洲免费观看高清完整版AV线| 99热这里只有精品免费| 九九爱精品网站| 色综合中文| 五月丁香激情婷婷综合字幕| 国产精品久久久海的味道| www.99视频| 五月丁香久久综合91| 日本97在线| 日本婷婷综合精品| 亚洲VA口| 538在线精品| 午夜福利8055| 丁香五月天激情五月天激情五月天激情网| 99re热免费观看视频精品| 九九99精品| 久久婷婷一级片| 亚洲天堂久久| 天天干天天色综合| 日本久久网| 久久 无毛。| 情婷婷五月天在线| 五月婷婷亚洲| 五月婷婷av在线| 啪啪激情综合| 草逼大片| 激情五月天婷婷| 91精品人妻少妇无码影院| 婷婷丁香水多多视频| 4399人妻无码久久久| 五月天丁香婷婷久久九| 亚洲区,视频区,视频区免费| 色五月天电影| 国产乱妇乱子在线播视频播放网站 | 婷婷激情小说| 九月av在线| er99免费视频在线| 91碰碰| 狠狠草网| 亚洲va欧美va国产综合久久久| 久久伊人五月天| 久久伊人婷| 操逼福利视频| 玖玖精品视频| 99色五月| 婷婷五月成人系列| 青青草视频免费观看| 九九热在线观看6| 日日夜夜干| 狠狠色丁香久久综合婷婷亚洲成人福利| 亚洲视频在线观看99| 综合性爱网| 国产精品黑丝| 99热这里有精品2| 婷婷久久大香蕉| 婷婷伊人综合中文字幕| 青草五月天| 婷婷狠狠干| 综合激情开心五月| 丁香色五月 97干| 欧美色碰| www.99成人视频| 免费超碰在线观看| yazhou seshipin| 99久久极情精品一区| AV成人在线播放| 婷婷六月啪啪| 亚洲国产网址| 五月久久丁香| 丁香五月婷婷天激情| 五月婷婷五月丁香综合| 色偷偷五月天| 婷婷伊人中文字幕| 91丨九色丨白浆秘| 色婷婷偷拍| 六月丁香激情| 色色色色色色色色色色色色色五月天| 日本va欧美va欧美| 色色色色欧美| 九九热99精品| 综合福利网| 玖玖资源网站最新站| 国产精品久久久久久妇女6080| 中文字幕婷婷五月天| 五月天婷婷激情在线色图| 伊人碰碰碰| 久久草中文日韩欧美| 婷婷五月,偷窥偷拍网| 五月天婷婷综合免费| 丁香五月 无码| 日本VA视频| 久久玖玖99| 丁香五月五月婷婷五月天激情四射| 天久综合91综合首页| 久久午夜理论| 色五月婷婷7777| 性色99| 日韩av在线播放综合网| 婷婷五亚洲| 色噜婷婷| 五月天天天天天天天天天天天天天天天婷婷婷| 婷婷五月激情综合啪啪| 深爱婷婷网| 伊人9在线| 丝袜激情网| 丁香五月欧美成人| 五月激情六月丁香| 狠狠色丁婷婷日日,伊人激情综合网| 五月天婷婷久久| 十月丁香婷婷| Blackedraw视频一区二区| 五月丁香激情婷婷综合| 丁香色情五月综合激情| 五月丁香婷婷导航视频| 色综合大香蕉| 五月婷在线观看| 五月婷婷内射网| 久久久久久久11111111111| 色综合色色色色色| 伊人久久大香线蕉综合网站| 婷婷丁香亚洲色综合91| 婷婷伊人| 粉嫩AV久久一区二区三区| 亚洲九九在线| 丁香六月av| 97在线刺激| 性色欲情 网站| 国产69久久久欧美黑人A片| 色婷婷亚洲在线| 激情久久综合网| 97久久久| 五月人妻婷婷| 激情性爱网站| 婷婷开心激情| 国产精品国产VA片国产| 五月丁香最新| 99热首页| 婷婷四色成人综合色视| 91综合在线视频| 99re这里只有| 久久久精品人妻录| www.色综合.com| 综合五月天| 色五月激情| 婷婷色色五月天| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 午夜成人片400| 国产玖玖资源| 人妻人人操| 久久99热网| 欧美日比视频| 色插综合网| 日本欧美999久久久三级片| 九九RE视频在线精品| 五月色情网| 久久嘟嘟丁香| 99热这里有精品| 五月丁香亚洲综合| 99er6免费视频热播| 久久曰9| 碰碰女| 五月激情综合五月| 激情五月丁香六月综合AVXXXX| 青青草五月天| 五月丁香欧美在线| 91啪啪视频| 婷婷在线日韩综合| 国产激情综合| 99免费视频网| 都市激情久久| 六月激情网| 九九久久综合| 深爱激情综合| 五月在在观看| 99操逼视频| 免费色婷婷| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 洗浴中心操B视频| 九九色中文| 激情五月天色色色| 99激情| 欧美日本黄色| 婷婷爱五月天人人爱| 色 免费网站视频| 狠狠爱婷婷五月天| 色香蕉影院| 狠狠色大香蕉| 九九热经典视频在线观看| 激情丁香婷婷六月天| 91九色视频在线观看| 超极99精品| 99久在线精品99re8| 少妇性按摩无码中文A片| 丁香成人综合| 亚洲综合色婷婷| 极品少妇婷婷五月| 成人做爰A片免费看视频| 亚洲无码另类| 五月天激情小说网| 欧美狠狠地| www.日日日.com| 五月综合色| 六月丁香婷婷综合狠狠爱夜夜爱| 婷婷五月天男人影院色色网| 色色色精品无码区| 综合色色网| 香蕉大综综综合久久| 激情图片亚洲| 99热91| 人人操AV| 人妻久久久久久| 人人草人人爱手机视频看看| 日日夜夜青青草| 六月丁香激情综合网| 九热...av| 欧美日韩中国| 91男人资源站| 丁香五月婷婷免费视频| 婷婷亚洲综合| 99热精品在线观看| 国产成人在线精品| 十一月婷婷激情四射| 欧美婷婷色五月| 涩涩五| 电影蜘蛛女| 国产韩日亚洲美州欧亚综合在线 | 久久小视频| 九九婷婷五月天| 婷婷丁香色五月久久88| 激情婷婷另类| \\五月天婷婷激情| 亚洲中文无码成人| 99在线观看视频免费| 色婷丁香| 久久久999精品| 99玖玖免费视频| 五月天婷婷伊人| 色哟哟性爱av| 婷婷丁香五月91| 涩涩婷婷五月| 成人网丁香五月| 99热99天堂| 激情五月婷婷视频一区二区三区| 五月婷婷黄色毛片| 一本九九色| 午夜日韩久久久网站| 99小视频在线观看| 色开心五月丁香| caopeng97人人| 亚洲色色五月天| 婷婷五月色综合| 9|无码久久久久久| 色五月网址| 99久久99视频只有精品| 天天做天天爱天天摸| 日韩五月婷婷| 色婷婷丁香五月观看| 亚洲小说欧美激情| 996热re视频精品视频这里| 激情婷婷丁香色五月| 成人性爱精品视频| 九一99| 五月久久婷婷成人网| 久色激情| 五月丁香婷婷在线| 国产 码在线成人网站| 99亚洲精品| 97精品人人A片免费看| 久99婷婷色综合| aaaa久久| 热热99爱爱| 伊人狠狠丁香婷婷综合尤物| 欧美精品99久久久| 五月丁香婷婷激情在线视频| 99热只有国产在线精品| 曰日爽日日操| 色色色五月婷| 欧美内射AA| 激情婷婷丁香| 丁香六月婷婷色XXXX| 五月丁香综合网| 婷婷久久性爱| 色婷婷基地在线| 99久久综合网| 狠狠干综合网| 97视频91| 天天日天天爽| 婷婷干| 婷婷玖玖五月天| 风流少妇A片一区二区蜜桃| 国产成人精品一区二区三区视频| 最新婷婷五月丁香| 激情綜合網址| 欧美天天爽| 色婷婷影音| 天天色,天天日,天天做| 五月丁香婷婷色色色| 激情第四色| 90色免费视频| 激情爱爱网站超大免费| 激情涩涩网| 婷婷五月伦理网站| 综合久久影院| 日本乱子人伦在线视频| 五月婷婷色白丝| 色色色999| 丁香五月人妻熟女| 超碰男人色| 午夜成人片400| 天天网曰日曰夜夜综合永久免费| www.五月婷婷久久.com| 操嫩逼电影| 91视频五月丁香| 国产精品人成A片一区二区| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 五月婷婷性爱| 9色免费网| 99碰碰。| 激情五月婷婷视频一区二区三区| 久久九精品| 亚洲看av的网站| 亚洲狠狠婷婷综合久久久| 97碰啪啪| 亚洲av成人在线| 超碰只有精品在线| jiZZdr| 人妻五月天激情开心网| 一本色道久久综合狠狠躁一二三| 国产日韩av片| 日韩av干| 亚洲天堂大香蕉| 欧美交换配乱吟粗大25P| 激情丁香久久久久久| 99 频99热国里只有精品| 色色亚洲五月天| av中文在线| 任你日热视频| hd五月婷婷在线| 久久精品4| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 久久五月综合| 久久丁香婷| 深爱五月激情综合| 婷婷色五天| 伊人久久婷婷五月综合97色| 久综合网| 五月色综合网| 久久久国产精品黄毛片| 久久婷婷五月综合色奶水99啪| 五月天婷婷永久免费视频| 思思热99热| 天天干天天操天天射 | 九九色色网| 亚洲成人日韩无码精品| 综合激情啪啪| 大香蕉欧美在线| 开心婷婷五月综合| 色9色| 国产成人AV在线| 久久五月情| 天天成人综合视频| 五月天婷婷激情| 操九色| 操操操AV| 亚洲电影在线观看| 91一起操| 大香蕉欧美在线| 九九免费精品| 91久久久久久| 丁香六月婷婷开心| 久久久99免费视频| 啪精品| 丁香五月婷久久| 色综合五月| 噜噜噜噜噜色| 噜噜噜狠狠色综合| 激情五月天激情小说| 婷婷五月丁香成人网| 五月婷丁香亚洲| 天天肏在线| 激情丁香五月激情婷婷| 伊人激情AV一区二区三区| 丁香六月婷婷综合激情欧美| www.99视频| 久久XX| 9色视频在线| 亚洲av免费在线| 99热最新| 超碰人妻在线| www.99热视频| 激情五月天婷婷直播| 99这里都是精品6| 成人噜噜网| 丁香五月欧美| 激情q青青草在线婷婷| 色色色五月婷婷| 婷婷五月综合欧美在线播放| 精品一二三区久久AAA片| 人妻内射麻豆视频| 久久AAAA片一区二区| av中文在线| 天天操天天操综合| 成人.在线日韩| 99热精品一区| 国产麻豆视频| 玖玖资源天天无码| 日韩久操婷婷| 日本色色网站| 色九月婷婷综合| 久99热| 丁香五月天天哦| 五月丁香六月激情综合| 综合久久婷婷五月丁香| 亚洲欧洲中文日韩久久AV乱码 | 思思re99视频在线观看| 激情五月开心五月在线视频| 婷婷五月天影院| 管管補管管紱| 亚州欧美黄色电影| 九九视频在线观看| 99久re热| 丁香五月成人社区| 婷婷五月天.com| 久久久久久久久18久久| 99色精品| 色婷婷欧美| 五月婷婷丁香av| 丁香婷婷五月| 超碰成人在线观看| 综合色影院| 中文在线成人| 曰日爽日日操| 婷婷桃色网| 秋霞影音91人妻久久| 无码人妻精品一区二区蜜桃色欲| 激情五月丁香五月| 免费无码毛片一区二区A片| 91久久婷婷人人澡草| www.婷婷,com| 天天爱天天操| 色婷婷狠狠久久综合五月| 97婷婷在线视频| 色色色成人网| 五月婷婷免费视频| 亚洲成Av人片乱码色第1集| 99啪啪视频| 天天插轮理| 97国产精品女人碰碰| 五月婷婷激情综合网| 26uuuavcom| 九九中文字幕九| 天天爽天天爽| 天天撸天天干天天插| 97超碰人人操| 激情5月婷婷| 夜夜大香蕉婷婷丁香| 五月丁香六月婷婷综合免| 综合精品啪啪| 狠狠狠狠狠狠| 色激情五月| 九月丁香婷婷| 五月丁香六月停停停| 亚洲永久免费| 99性感视频| 九九综合伊人| 婷婷综合性爱网| 超碰免费99| 色色色欧美色色| 九洲一级A片| BBWCUCKOLD精品熟妇| 26uuu国产| 久久er九九| 天堂综合久| 国产片XXXXA片国语对白| 99综合| 99在线观看视频蜜臀| 激情久久网| 粉嫩AV久久一区二区三区| 激情五月婷婷在线观看| 91热er| 婷婷97碰碰| 成人丁香婷婷| 天天干夜夜想| 日本色狠狠| 婷婷丁香六月激情综合| www.色9| WWW.五月com| 免费黄色片子| 婷婷五月天亚洲综合| 色大综合| 伊人影音无码一区二区三区| 丁香伊人五月色婷婷五十路| 狠狠色婷婷| 色噜噜狠狠色综合网| 天天射综合网夜夜操| 婷婷五月丁香综合网| 丁香五月综合在线视频| 97视频.干com| 这里只有精品视频| 99热99色| 色色爽爽天天| 国产XXXX搡XXXXX搡麻豆 | 黄色中文字目| 日本婷婷五月天| 欧美成性色| 97碰 在线视频观看| 超碰在线免费| 久婷婷久草| 久久综合影院| 色噜噜狠狠色综无码久久合欧美| 婷婷五月开心中文字幕在线| 丁香激情网| 91疯狂操操操操| 婷婷五月日本| AAA级久久久精品| 天天干天天干天天| 日本三级日本三级99| 久草大| 色色免费网战视频| 欧美韩日AAA网站|