精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C++數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之稀疏矩陣

開發(fā) 后端
什么叫稀疏矩陣?本文結(jié)合作者個人觀點,向讀者介紹了自己對稀疏矩陣的認(rèn)識,為讀者學(xué)習(xí)提供了些許參考。

  C++數(shù)據(jù)結(jié)構(gòu)中,先說說什么叫稀疏矩陣。你說,這個問題很簡單嗎,那你一定不知道中國學(xué)術(shù)界的嘴皮子仗,對一個字眼的“摳”將會導(dǎo)致兩種相反的結(jié)論。這是清華2000年的一道考研題:“表示一個有1000個頂點,1000條邊的有向圖的鄰接矩陣有多少個矩陣元素?是否稀疏矩陣?”如果你是個喜歡研究出題者心理活動的人,你可以看出這里有兩個陷阱,就是讓明明會的人答錯,我不想說出是什么,留給讀者思考。姑且不論清華給的標(biāo)準(zhǔn)答案是什么,那年的參考書是嚴(yán)蔚敏的《數(shù)據(jù)結(jié)構(gòu)(C語言版)》,書上對于稀疏矩陣的定義是這樣的:“非零元較零元少(注:原書下文給出了大致的程度),且分布沒有一定規(guī)律”,照這個說法,那題的答案應(yīng)該是不一定是稀疏矩陣,因為可能是特殊矩陣(非零元分布有規(guī)律)。

  自從2002年換參考書后,很多概念都發(fā)生了變化,最明顯的是從多少開始計數(shù)(0還是1),從而導(dǎo)致的是空樹的高度變成了-1,只有一個根節(jié)點的樹高度是0。很不幸的是樹高的問題幾乎年年都考,在你下筆的時候,總是犯點嘀咕,總不是一朝天子一朝臣吧,會不會答案是個兼容版本?然后,新參考書帶的習(xí)題集里引用了那道考研題,答案是是稀疏矩陣。你也許會驚訝這年頭咸魚都會游泳了,但這個答案和書并不矛盾,因為在這本黃皮書里,根本就沒有什么特殊矩陣,自然就一定是稀疏矩陣了。

  其實,這兩本書在這個問題上也沒什么原則上的問題,C版的是從數(shù)據(jù)結(jié)構(gòu)實現(xiàn)區(qū)分出特殊矩陣和稀疏矩陣,畢竟他們實現(xiàn)起來很不相同;新書一股腦把非零元少的矩陣都當(dāng)成稀疏矩陣,當(dāng)你按照這種思路做的時候就會發(fā)現(xiàn),各種結(jié)構(gòu)特殊的非零元很少的矩陣,如果用十字鏈表來儲存的話,比考慮到它的特殊結(jié)構(gòu)得出的特有儲存方法,僅僅是浪費了幾個表頭節(jié)點和一些指針域,再有就是一些運算效率的降低。從我個人角度講,我更喜歡多一些統(tǒng)一,少一些特別,即使?fàn)奚稽c效率;所以在這一點上我贊同新參考書的做法。而在計數(shù)起點上,我更喜歡原來的做法;畢竟,研究數(shù)據(jù)結(jié)構(gòu)要考慮人的思考習(xí)慣,而不是計算機(jī)喜歡什么;你非得說表中的***個元素是第0個,空樹的高是-1,怎么不讓人心里起疙瘩。數(shù)據(jù)結(jié)構(gòu)是人們構(gòu)造算法時思維和計算機(jī)實現(xiàn)的橋梁、中介,它應(yīng)該符合人的思考習(xí)慣,即使在它實現(xiàn)的時候內(nèi)部做了某些轉(zhuǎn)換。開始廢話了這么多,希望沒打消了你往下看的心情,好,言歸正傳。

  這里的十字鏈表是這樣構(gòu)成的:用鏈表模擬矩陣的行(或者列,這可以根據(jù)個人喜好來定),然后,再構(gòu)造代表列的鏈表,將每一行中的元素節(jié)點插入到對應(yīng)的列中去。書中為了少存幾個表頭節(jié)點,將行和列的表頭節(jié)點合并到了一起——實際只是省了幾個指針域,如果行和列數(shù)不等,多余的數(shù)據(jù)域就把這點省出的空間又給用了。這點小動作讓我著實廢了半天勁,個人感覺,優(yōu)點不大,缺點不少,不如老老實實寫得象個十字鏈表,讓人也好看一些,這是教科書,目的是教學(xué)。實在看得暈的人,參閱C版的這部分內(nèi)容,很清晰。我也不會畫圖,打個比方吧:這個十字鏈表的邏輯結(jié)構(gòu)就像是一個圍棋盤(沒見過,你就想一下蒼蠅拍,這個總見過吧),而非零元就好像是在棋盤上放的棋子,總共占的空間就是,確定那些線的表頭節(jié)點和那些棋子代表的非零元節(jié)點。***,我們用一個指針指向這個棋盤,這個指針就代表了這個稀疏矩陣。

  現(xiàn)在,讓我們看看非零元節(jié)點最少需要哪幾個域,data必須的,down、right把線畫下去,好像不需要別的了。再看看表頭節(jié)點,由于是鏈表的表頭節(jié)點,所以就和后邊的節(jié)點一樣了。然后,行鏈表和列鏈表的表頭節(jié)點實際上也各構(gòu)成了一個鏈表,我們給他們添加一個公有的表頭節(jié)點。***,通過指向這個行列鏈表表頭構(gòu)成的鏈表的公有的表頭節(jié)點的指針,我們就可以訪問稀疏矩陣了。

  好像和書上的不一樣——非零元節(jié)點沒了指示位置的I、j,實際上,對于確定非零元在矩陣中的位置,I、j不是必須的,看著圍棋盤你就會很清楚。但是很不幸,不是把他們存起來就萬事大吉了,最起碼,必須考慮加法和乘法的效率,請你想想如果用上面的那種結(jié)構(gòu),如何完成。

  如果你細(xì)想想,就會發(fā)現(xiàn),非零元節(jié)點如果沒有指示位置的域,那么做加法和乘法時,為了確定節(jié)點的位置,每次都要遍歷行和列的鏈表。因此,為了運算效率,這個域是必須的。為了看出十字鏈表和單鏈表的差異,我從單鏈表派生出十字鏈表,這需要先定義一種新的結(jié)構(gòu),如下:

  1. class MatNode  
  2. {  
  3. public:  
  4. int data;  
  5. int row, col;  
  6. union { Node<MatNode> *down; List<MatNode> *downrow; };  
  7. }; 

  另外,由于這樣的十字鏈表是由多條單鏈表拼起來的,為了訪問每條單鏈表的保護(hù)成員,要聲明十字鏈表類為單鏈表類的友元。即在class List的聲明中添加friend class Matrix;

#p#

  稀疏矩陣的定義和實現(xiàn)

  1. #ifndef Matrix_H  
  2. #define Matrix_H  
  3.  
  4. #include "List.h"  
  5.  
  6. class MatNode  
  7. {  
  8. public:  
  9. int data;  
  10. int row, col;  
  11. union { Node<MatNode> *down; List<MatNode> *downrow; };  
  12. MatNode(int value = 0, Node<MatNode> *p = NULL, int i = 0, int j = 0)  
  13. : data(value), down(p), row(i), col(j) {}  
  14. friend ostream & operator << (ostream & strm, MatNode &mtn)  
  15. {  
  16. strm << '(' << mtn.row << ',' << mtn.col << ')' << mtn.data;  
  17. return strm;  
  18. }  
  19. };  
  20.  
  21. class Matrix : List<MatNode>  
  22. {  
  23. public:  
  24. Matrix() : row(0), col(0), num(0) {}  
  25. Matrix(int row, int col, int num) : row(row), col(col), num(num) {}  
  26. ~Matrix() { MakeEmpty(); }  
  27.  
  28. void MakeEmpty()  
  29. {  
  30. List<MatNode> *q;  
  31. while (first->data.downrow != NULL)  
  32. {  
  33. q = first->data.downrow;  
  34. first->data.downrow = q->first->data.downrow;  
  35. delete q;  
  36. }  
  37. List<MatNode>::MakeEmpty();  
  38. row = col = num = 0;  
  39. }  
  40.  
  41. void Input()  
  42. {  
  43. if (!row) { cout << "輸入矩陣行數(shù):"; cin >> row; }  
  44. if (!col) { cout << "輸入矩陣列數(shù):"; cin >> col; }  
  45. if (!num) { cout << "輸入非零個數(shù):"; cin >> num; }  
  46. if (!row || !col || !num) return;  
  47. cout << endl << "請按順序輸入各個非零元素,以列序為主,輸入0表示本列結(jié)束" << endl;  
  48. int i, j, k, v;//i行數(shù) j列數(shù) k個非零元 v非零值  
  49. Node<MatNode> *p = first, *t;  
  50. List<MatNode> *q;  
  51. for (j = 1; j <= col; j++) LastInsert(MatNode(0, NULL, 0, j));  
  52. for (i = 1; i <= row; i++)  
  53. {  
  54. q = new List<MatNode>;  
  55. q->first->data.row = i;  
  56. p->data.downrow = q;  
  57. p = q->first;  
  58. }  
  59. j = 1; q = first->data.downrow; First(); t = pNext();  
  60. for (k = 0; k < num; k++)  
  61. {  
  62. if (j > col) break;  
  63. cout << endl << "輸入第" << j << "列非零元素" << endl;  
  64. cout << "行數(shù):"; cin >> i;  
  65. if (i < 1 || i > row) { j++; k--; q = first->data.downrow; t = pNext(); continue; }  
  66. cout << "非零元素值"; cin >> v;  
  67. if (!v) { k--; continue; }  
  68. MatNode matnode(v, NULL, i, j);  
  69. p = new Node<MatNode>(matnode);  
  70. t->data.down = p; t = p;  
  71. while (q->first->data.row != i) q = q->first->data.downrow;  
  72. q->LastInsert(t);  
  73. }  
  74. }  
  75.  
  76. void Print()  
  77. {  
  78. List<MatNode> *q = first->data.downrow;  
  79. cout << endl;  
  80. while (q != NULL)  
  81. {  
  82. cout << *q;  
  83. q = q->first->data.downrow;  
  84. }  
  85. }  
  86.  
  87. Matrix & Add(Matrix &matB)   
  88. {  
  89. //初始化賦值輔助變量  
  90. if (row != matB.row || col != matB.col || matB.num == 0) return *this;  
  91. Node<MatNode> *pA, *pB;  
  92. Node<MatNode> **pAT = new Node<MatNode>*[col + 1];  
  93. Node<MatNode> **pBT = new Node<MatNode>*[matB.col + 1];  
  94. List<MatNode> *qA = pGetFirst()->data.downrow, *qB = matB.pGetFirst()->data.downrow;  
  95. First(); matB.First();  
  96. for (int j = 1; j <= col; j++)  
  97. {  
  98. pAT[j] = pNext();  
  99. pBT[j] = matB.pNext();  
  100. }  
  101.  
  102. //開始  
  103. for (int i = 1; i <= row; i++)  
  104. {  
  105. qA->First(); qB->First();  
  106. pA = qA->pNext(); pB = qB->pNext();  
  107. while (pA != NULL && pB !=NULL)  
  108. {  
  109. if (pA->data.col == pB->data.col)  
  110. {  
  111. pA->data.data += pB->data.data;  
  112. pBT[pB->data.col]->data.down = pB->data.down; qB->Remove();  
  113. if (!pA->data.data)  
  114. {  
  115. pAT[pA->data.col]->data.down = pA->data.down;  
  116. qA->Remove();  
  117. }  
  118. else   
  119. {  
  120. pAT[pA->data.col] = pA;  
  121. qA->pNext();  
  122. }  
  123. }  
  124.  
  125. else 
  126. {  
  127. if (pA->data.col > pB->data.col)  
  128. {  
  129. pBT[pB->data.col]->data.down = pB->data.down;  
  130. qB->pRemove();  
  131. pB->data.down = pAT[pB->data.col]->data.down;  
  132. pAT[pB->data.col]->data.down = pB;  
  133. pAT[pB->data.col] = pB;  
  134. qA->InsertBefore(pB);  
  135. }  
  136.  
  137. else if (pA->data.col < pB->data.col)   
  138. {  
  139. pAT[pA->data.col] = pA;  
  140. qA->pNext();  
  141. }  
  142. }  
  143. pA = qA->pGet();pB = qB->pGet();  
  144. }  
  145.  
  146. if (pA == NULL && pB != NULL)   
  147. {  
  148. qA->pGetPrior()->link = pB;  
  149. qB->pGetPrior()->link = NULL;  
  150. while (pB != NULL)  
  151. {  
  152. pBT[pB->data.col]->data.down = pB->data.down;  
  153. pB->data.down = pAT[pB->data.col]->data.down;  
  154. pAT[pB->data.col]->data.down = pB;  
  155. pAT[pB->data.col] = pB;  
  156. pB = pB->link;  
  157. }  
  158. }  
  159.  
  160. if (pA !=NULL)  
  161. {  
  162. while (qA->pGet() != NULL)  
  163. {  
  164. pAT[pA->data.col] = pA;  
  165. qA->pNext();  
  166. }  
  167. }  
  168.  
  169. qA = qA->first->data.downrow; qB = qB->first->data.downrow;  
  170. }  
  171. delete []pAT; delete []pBT;  
  172. return *this;  
  173. }  
  174. private:  
  175. int row, col, num;  
  176. };  
  177.  
  178. #endif 

  【說明】對于十字鏈表來說,只要記住對每個節(jié)點的操作,要同時考慮它的兩個指針域,那么,各種算法的理解都不是很難。比如說矩陣加法,“兩個矩陣相加和兩個一元多項式相加極為相似,所不同的是一元多項式只有一個變元(指數(shù)項),而矩陣中每個非零元有兩個變元(行值和列值),每個節(jié)點既在行表中又在列表中,致使插入和刪除節(jié)點時指針的修改稍為復(fù)雜,故需要更多的輔助指針。”(《數(shù)據(jù)結(jié)構(gòu)(C語言版)》)其實private的row等可以放在首行的頭節(jié)點里的,但為了清晰一點(本來就夠亂了),我把他們單立出來了。另外,很多地方考慮不是很周全,要是不按照注明的要求使用,很容易就會出錯。

【編輯推薦】

  1. 1.51 將稀疏矩陣表示為數(shù)組
  2. 經(jīng)典四講貫通C++排序之一 插入排序
  3. 1.51.1 如何把兩個稀疏矩陣相加
  4. 給C++初學(xué)者的50個忠告
  5. C++數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之棧和隊列
  6. 程序員必看 c++筆試題匯總
責(zé)任編輯:韓亞珊 來源: 天極網(wǎng)
相關(guān)推薦

2011-04-11 12:48:36

隊列數(shù)據(jù)結(jié)構(gòu)C++

2011-04-11 11:23:17

隊列數(shù)據(jù)結(jié)構(gòu)

2011-04-11 12:22:11

數(shù)據(jù)結(jié)構(gòu)C++

2012-02-02 10:21:05

單鏈表nexthead

2018-08-27 10:54:30

C++壓縮存儲

2009-08-13 16:02:29

C#結(jié)構(gòu)

2010-01-27 15:58:35

C++數(shù)據(jù)結(jié)構(gòu)

2023-12-13 10:01:15

數(shù)據(jù)結(jié)構(gòu)c++編程

2021-06-08 06:01:00

C++數(shù)據(jù)結(jié)構(gòu)向量和數(shù)組

2022-03-31 11:17:58

JavaScript數(shù)組方法

2010-07-19 11:07:13

Perl控制結(jié)構(gòu)

2009-08-12 18:35:17

C#數(shù)據(jù)結(jié)構(gòu)

2021-03-08 06:28:57

JAVA數(shù)據(jù)結(jié)構(gòu)與算法稀疏數(shù)組

2018-06-13 08:53:39

HadoopHBase存儲

2024-01-15 06:01:36

C++數(shù)組

2009-08-11 14:43:42

C#數(shù)據(jù)結(jié)構(gòu)與算法

2009-08-11 14:51:11

C#數(shù)據(jù)結(jié)構(gòu)與算法

2021-07-16 07:57:34

Python數(shù)據(jù)結(jié)構(gòu)

2011-07-20 17:10:54

C++

2009-08-11 14:30:32

C#數(shù)據(jù)結(jié)構(gòu)與算法
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲午夜激情网站| 美国十次了思思久久精品导航 | 丰满少妇高潮在线观看| 欧美黄色大片网站| 亚洲欧美日韩区| 小早川怜子一区二区三区| heyzo一区| 国产欧美日韩在线看| 亚洲aⅴ男人的天堂在线观看| 日韩精品成人一区| 久久五月天小说| 亚洲激情免费观看| 女同激情久久av久久| 色老头在线一区二区三区| 中文字幕制服丝袜一区二区三区 | 奇米影视亚洲狠狠色| sm捆绑调教视频| 无码少妇一区二区三区| 欧美一级日韩免费不卡| 黄色高清无遮挡| 久草在线资源站资源站| 成人欧美一区二区三区视频网页 | 日韩有码电影| 粉嫩高潮美女一区二区三区 | 欧美激情视频播放| 国内精品卡一卡二卡三| 大陆精大陆国产国语精品| 欧美日韩国产不卡| 青青在线视频免费| 漫画在线观看av| 亚洲一区二区综合| 在线观看成人免费| 日本不卡三区| 日本一区二区视频在线观看| 好吊色欧美一区二区三区视频| 国产免费黄色网址| 秋霞成人午夜伦在线观看| 奇米4444一区二区三区| 国产超碰人人爽人人做人人爱| 97在线精品| 日韩在线视频观看正片免费网站| 国产精品亚洲无码| 日本欧美高清| 亚洲男人天堂视频| 国产精品1000部啪视频| 五月国产精品| 亚洲欧洲日韩国产| 白丝女仆被免费网站| 999国产精品一区| 精品动漫一区二区三区在线观看| 18禁一区二区三区| 欧美大片91| 欧美电视剧在线看免费| 亚洲最大视频网| 综合激情久久| 亚洲国产精品久久久久秋霞不卡| 日韩av无码一区二区三区不卡| 999国产精品一区| 亚洲精品大尺度| 亚洲成人日韩在线| 国产探花一区| 精品国产美女在线| 国产美女久久久久久| 欧美韩国一区| 97avcom| 三级视频在线观看| 日韩和的一区二区| 国产日韩在线看| 国产xxxx孕妇| 99久久伊人精品| 欧洲一区二区在线| 黄色免费在线网站| 亚洲午夜成aⅴ人片| 日本午夜激情视频| 日本一区免费网站| 91麻豆精品91久久久久同性| www日本在线观看| 欧美男人操女人视频| 一区二区三区视频免费| 老湿机69福利| 99亚洲一区二区| 国产精品视频免费观看www| 国产精品久久久久久久一区二区| 岛国精品一区二区| 奇米精品在线| 日韩电影免费观看| 欧美性猛交xxxxx水多| 国产成人黄色网址| eeuss国产一区二区三区四区| 日韩精品丝袜在线| www.黄色com| 伊人久久久大香线蕉综合直播| 国产99视频在线观看| 91久久精品无码一区二区| 成人午夜av在线| 相泽南亚洲一区二区在线播放| 污网站在线免费看| 日本高清免费不卡视频| 苍井空张开腿实干12次| 久久99久久人婷婷精品综合 | 国产精品中文欧美| 久久99蜜桃综合影院免费观看| 日本在线免费看| 午夜精品久久久久久| 三级一区二区三区| 精品一区亚洲| 国产做受高潮69| 国产精品爽爽久久| 久久精品男人天堂av| 国产欧美精品aaaaaa片| 国产精品久久久久久久久免费高清 | 一区二区三区在线视频免费观看 | 日本少妇裸体做爰| 久久精品国产亚洲高清剧情介绍| 久久精品第九区免费观看| 国产激情在线视频| 欧美日韩一区二区在线视频| 懂色av粉嫩av蜜乳av| 欧美三级午夜理伦三级中文幕| 国产精品免费久久久久影院| 亚洲人成色777777老人头| 亚洲精品欧美综合四区| jizz大全欧美jizzcom| 小说区图片区色综合区| 国模精品系列视频| 午夜精品久久久久久久第一页按摩 | 制服丝袜亚洲播放| 岛国片在线免费观看| 久久青草久久| 欧洲在线视频一区| 亚洲欧洲高清| 亚洲免费一级电影| 黄色片免费观看视频| 成人午夜av影视| 日韩精品视频在线观看视频| 久久九九精品视频| 久久天堂电影网| 国产孕妇孕交大片孕| 国产精品色婷婷久久58| 永久免费的av网站| 日韩在线欧美| 成人国产精品一区| 成人ww免费完整版在线观看| 51精品久久久久久久蜜臀| 国产探花视频在线| 久久精品国产秦先生| 亚洲日本一区二区三区在线不卡| 日本国产欧美| 在线一区二区日韩| 一级片在线观看视频| 亚洲人成网站影音先锋播放| 在线观看中文av| 欧美 日韩 国产一区二区在线视频| 亚洲一区二区中文字幕| v天堂福利视频在线观看| 日韩亚洲欧美一区| 久青草免费视频| 成人av在线网站| 日韩avxxx| 激情五月色综合国产精品| 国产精品看片资源| 久久精品视频免费看| 日韩午夜精品视频| 日韩免费在线视频观看| 91麻豆国产精品久久| 日韩av在线综合| 日韩精品永久网址| 91精品久久久久久蜜桃| 国产美女一区视频| 日韩久久免费视频| 怡春院在线视频| 亚洲欧美另类小说视频| 精品少妇人妻av一区二区三区| 欧美亚洲自偷自偷| 亚洲精品一品区二品区三品区| 国产亚洲高清在线观看| 久久久久久久久久久成人| 亚洲人午夜射精精品日韩| 欧美羞羞免费网站| 久久久久成人精品无码| 久久久久久久av麻豆果冻| 五月婷婷之婷婷| 亚洲精品色图| 亚洲国内在线| 国产精品高潮呻吟久久久久| 国产精品久久久久久久久借妻| 中文字幕免费高清电视剧网站在线观看| 亚洲成人免费在线视频| 日批视频免费观看| 亚洲电影第三页| 亚洲天堂精品一区| 91免费视频观看| 交换做爰国语对白| 玖玖玖国产精品| 无码人妻精品一区二区蜜桃网站| 久久99蜜桃| av一区二区三区在线观看| 久久天堂av| 久久久久久18| 伦xxxx在线| 亚洲精品国产精品国自产在线| 一级黄色片在线| 欧美日韩一区二区免费在线观看| 91嫩草|国产丨精品入口| 26uuu欧美| 亚洲美女高潮久久久| 看国产成人h片视频| 欧美日韩在线一| 91精品一区国产高清在线gif| 欧美在线3区| 久久综合社区| a级国产乱理论片在线观看99| 国产精品伦一区二区| **欧美日韩vr在线| 日本在线视频www鲁啊鲁| 中文字幕最新精品| 岛国在线视频| 亚洲美女av黄| 日本成人动漫在线观看| 日韩午夜三级在线| 国产精品久久久久久69| 欧美日韩一区二区三区不卡| 无码一区二区三区| 欧美视频在线免费看| 久久精品国产av一区二区三区| 成人欧美一区二区三区视频网页| 蜜臀久久99精品久久久久久| av激情综合网| 天天躁日日躁狠狠躁免费麻豆| 国产精品一级在线| 午夜天堂在线视频| 久久草av在线| 国产一区二区在线观看免费视频| 免费成人在线视频观看| 熟妇人妻无乱码中文字幕真矢织江| 国产视频一区欧美| aa在线观看视频| 亚洲综合三区| 青青草原成人网| 久久久久中文| 国产97色在线 | 日韩| 久久精品女人天堂| mm1313亚洲国产精品无码试看| 日韩精品一级中文字幕精品视频免费观看 | 国内精品在线播放| 一区二区在线免费看| 理论电影国产精品| 亚洲精品免费一区亚洲精品免费精品一区 | 四虎在线视频免费观看| 精品国产乱码久久久久久1区2区 | 在线高清欧美| 91久久久久久久久久久久久| 国产亚洲久久| 国产精品大全| 日韩有码一区| 日韩欧美精品一区二区三区经典| 精品一区二区三区在线 | 免费看黄色三级| 日本一区二区成人在线| 中文字幕美女视频| 亚洲美女视频一区| 日韩伦人妻无码| 色综合天天做天天爱| 久久久久久av无码免费看大片| 欧美日韩卡一卡二| 国产后入清纯学生妹| 亚洲第一福利在线观看| 青青草手机在线| xxxx欧美18另类的高清| 日本成人不卡| 人人澡人人澡人人看欧美| 福利视频一区| av资源一区二区| 精品一区在线| 最新av网址在线观看| av不卡在线看| 天天色综合社区| 高清久久久久久| 成人午夜剧场视频网站| 专区另类欧美日韩| 日韩av一区二区在线播放| 在线观看亚洲一区| 性少妇videosexfreexxx片| 日韩激情在线视频| 美女av在线播放| …久久精品99久久香蕉国产| 日韩三级一区| 久99久在线| 香蕉视频官网在线观看日本一区二区| 99热久久这里只有精品| 日韩av在线免费观看不卡| 26uuu国产| 国产女主播视频一区二区| 免费无码毛片一区二区app| 色哟哟在线观看一区二区三区| 国产精品主播一区二区| 日韩电影中文字幕av| 国产精品剧情| 国产精品电影在线观看| 高清一区二区三区| 中文字幕成人一区| 久久人人精品| 视频免费在线观看| 亚洲色图另类专区| 91porny九色| 亚洲精品美女在线| 天堂8中文在线| 国产日本欧美在线观看| 亚洲人和日本人hd| 国产毛片久久久久久国产毛片| 免费人成在线不卡| 久久中文字幕人妻| 亚洲va天堂va国产va久| av综合在线观看| 中文在线不卡视频| 黑人巨大亚洲一区二区久 | 午夜精品免费| 日本中文字幕精品—区二区| 久久久另类综合| 日韩久久精品视频| 亚洲第一福利在线观看| 在线电影福利片| 69174成人网| 91精品精品| 亚洲天堂伊人网| 国产欧美日韩另类视频免费观看| 国产乱国产乱老熟| 亚洲精品成人久久| 极品视频在线| 国产欧美日韩综合精品二区| 欧美区日韩区| 亚洲AV无码久久精品国产一区| 亚洲欧美自拍偷拍色图| 91美女精品网站| 日韩中文字幕视频| 欧美视频免费看| 伊人久久青草| 激情综合网av| 好吊色视频在线观看| 日韩一区二区中文字幕| 亚洲91av| 国产精品久久久久久久久久久久冷 | 国产乱码精品一区二三区蜜臂 | 日本不卡1234视频| 久久精品国产一区二区三区日韩| 日韩香蕉视频| 国产亚洲无码精品| 色婷婷激情综合| 国产一级片在线播放| 国产精品美女久久久免费| 色97色成人| 欧美一级免费在线| 亚洲国产人成综合网站| 日本成人动漫在线观看| 欧美诱惑福利视频| 青青草国产成人a∨下载安卓| jizzzz日本| 一区二区三区美女视频| 人妻少妇精品无码专区久久| 国产91ⅴ在线精品免费观看| 中文字幕亚洲影视| www.com黄色片| 亚洲精品成人在线| 免费看黄色一级视频| 青青草99啪国产免费| 手机亚洲手机国产手机日韩| 黄色a级三级三级三级| 午夜精品久久一牛影视| а√天堂中文在线资源bt在线 | 天美av一区二区三区久久| 91看片就是不一样| 亚洲欧洲三级电影| 黄色美女一级片| 国产精品极品美女在线观看免费 | 亚洲欧美激情在线| 天堂中文字幕在线| 国产精品一区二区久久久久| 欧美日韩午夜| 成人在线一级片| 欧美一区二区高清| 亚洲国产欧美日本视频| 熟女熟妇伦久久影院毛片一区二区| 成人综合婷婷国产精品久久蜜臀| 亚洲精品男人天堂| 这里只有精品丝袜| 久久久亚洲欧洲日产| 国产永久免费网站| 狠狠躁18三区二区一区| 国产在线观看免费麻豆| 久久艹中文字幕| 激情综合色播激情啊| 日韩精品久久久久久免费| 久久亚洲私人国产精品va| 日韩美女精品| 亚洲国产日韩在线一区| 一本久久综合亚洲鲁鲁五月天 | 在线码字幕一区| 国产在线麻豆精品观看| 日韩电影在线观看一区二区| 欧美精品videosex牲欧美|