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

一文弄清楚鏈表技巧

開發(fā) 前端
如何判斷單鏈表存在環(huán)呢 ?我們可以借用 單鏈表的中點 問題的思路。快慢指針同從頭節(jié)點同時向前移動,在沒有環(huán)的單鏈表中,它們依次達到尾節(jié)點,但對于有環(huán)的鏈表來說,快慢指針最后會一直在環(huán)中移動,永遠停不下來。

單鏈表的常見操作比較多,而且有些操作比較有技巧,本文就來聊聊這些不容易想到操作。

單鏈表倒數(shù)第 k 個節(jié)點

單鏈表正向第 k 個節(jié)點很容易獲得,直接一個 for 循環(huán)遍歷一遍鏈表就能得到,但是如果是逆向第 k 個節(jié)點,也就是倒數(shù)第 k 個節(jié)點呢 ?

你也許很快就想到了,逆向第 k 個節(jié)點相當(dāng)于正向第 n - k 個節(jié)點, 這里的 n 是鏈表長度,對于單鏈表來說,需要遍歷一遍鏈表才能計算出 n 的值,然后再次遍歷 n - k 個節(jié)點, 才最終獲得鏈表倒數(shù)第 k 個節(jié)點。

上面整個過程總共遍歷了 n + n - k 個節(jié)點,能否只遍歷 n 個節(jié)點就能得到倒數(shù)第 n 個節(jié)點呢 ?

答案是肯定的,這種解法稱作 雙指針法,它比較巧妙,如果以前沒接觸過過的話,不容易想到,下面就來詳細(xì)介紹它。

假如 k = 2, 現(xiàn)在讓指針 p1 指向 head 節(jié)點,然后移動 k 步,結(jié)果如下圖:

此時,如果 p1 再移動 n - k 步就到達鏈表結(jié)尾的 null 節(jié)點了。

再用一個指針 p2 指向 head 節(jié)點,指針 p1 和 p2 的指向如下圖所示:

最后,指針 p1 和 p2 同時向前移動,直到 p1 到達鏈表結(jié)尾的 null 節(jié)點,此時兩個指針的指向如下圖所示:

當(dāng) p1 到達 null 節(jié)點時,p2 走了 n - k 步,也就是倒數(shù)第 k 個節(jié)點。

這樣,利用 p1 和 p2 兩個指針,只需要遍歷一遍鏈表就能得到倒數(shù)第 k 個節(jié)點,也即 p2 指向的節(jié)點。

在整個過程中,使用了兩個指針,所以這個技巧稱作 雙指針法,很多鏈表相關(guān)的算法題都可以用這個技巧解決,理解了這個套路,以后再遇到類似的問題就可以手到擒來了。

好了,流程講完了,下面給出完整代碼供大家參考:

// 單鏈表節(jié)點結(jié)構(gòu)
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *pnext) : val(x), next(pnext) {}
};
// 返回單鏈表倒數(shù)第 k 個節(jié)點
ListNode *findFromEnd(ListNode *head, int k)
{
if(nullptr == head || k <= 0) return nullptr;
ListNode *p1 = head;
// p1 指針先移動 k 步
int step = 0;
while (step < k && nullptr != p1)
{
p1 = p1->next;
++step;
}
//p1 移動的步數(shù)小于 k, 表示鏈表長度小于 k
//因此鏈表不存在倒數(shù)第 k 個節(jié)點
if (step < k) return nullptr;
//p1 和 p2 同時移動,直到 p1 到達尾節(jié)點的下一節(jié)點
ListNode *p2 = head;
while (nullptr != p1)
{
p2 = p2->next;
p1 = p1->next;
}
return p2;
}

單鏈表中點

想得到單鏈表的中點,首先想到的是先得到鏈表的長度 n,然后從鏈頭開始往前走,每走一步,計數(shù)就加一,直到計數(shù)達到鏈表長度的一半兒 n / 2,此時所在的節(jié)點即為鏈表的中點了。

但是這個方法需要先遍歷整個鏈表,然后再從鏈表頭遍歷到鏈表的中間節(jié)點,整個過程共遍歷了 n + n / 2 個節(jié)點。

這里介紹一種方法,只需要遍歷 n 個節(jié)點就可以得到鏈表的中間節(jié)點。

我們讓指針 p1 和 p2 都指向 head 節(jié)點,兩個指針同時向前移動,p1 每次向前走兩步,p2 每次向前走一步,這樣,當(dāng) p1達到鏈表尾節(jié)點時,p2 剛好到達鏈表的中間節(jié)點。

在這個過程中,p1 指針每次走兩步,稱為快指針,p2 指針每次走一步,稱為慢指針,所以,這個小技巧叫做 快慢指針。

根據(jù)上面的思路,我們就可以寫出算法的實現(xiàn)代碼了。

// 單鏈表節(jié)點結(jié)構(gòu)
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *pnext) : val(x), next(pnext) {}
};
// 返回單鏈表中間節(jié)點
ListNode * middleNode(ListNode *head)
{
if(nullptr == head) return nullptr;
//快指針和慢指針初始都指向head
ListNode *pslow = head;
ListNode *pfast = head;
while (nullptr != pfast && nullptr != pfast->next)
{
//每次快指針走兩步,慢指針走一步
//當(dāng)快指針的下一個節(jié)點為 null時
//表示快指針達到了末尾節(jié)點,此時退出循環(huán)
pfast = pfast->next->next;
pslow = pslow->next;
}
return pslow;
}

需要說明一點,如果單鏈表長度為偶數(shù),也就是中間節(jié)點有兩個,上面的解法返回的是靠后一個節(jié)點。

例如: 單鏈表 1 -> 2 -> 3 -> 4 -> 5 -> 6,長度為 6,它的中間節(jié)點是 3 和 4,那么,用上面的解法得到的中間節(jié)點是 4 而不是 3。

鏈表是否包含環(huán)

如下圖所示,圖中是一個長度為5的鏈表,最后一個節(jié)點指向了第三個節(jié)點,構(gòu)成了一個環(huán)。

給你一個單鏈表的頭節(jié)點,判斷該鏈表是否含有環(huán)。

如何判斷單鏈表存在環(huán)呢 ?我們可以借用 單鏈表的中點 問題的思路。

快慢指針同從頭節(jié)點同時向前移動,在沒有環(huán)的單鏈表中,它們依次達到尾節(jié)點,但對于有環(huán)的鏈表來說,快慢指針最后會一直在環(huán)中移動,永遠停不下來。

由于兩個指針一塊一慢,并且快指針每次比慢指針多走一步,因此,快指針總有一天會追上慢指針,此時它倆就指向同一個節(jié)點,明白了這一點,就有辦法判斷單鏈?zhǔn)欠翊嬖诒憝h(huán)了,具體做法如下:

初始時,快慢指針都指向頭節(jié)點,它們同時向前移動,快指針每次走兩步,慢指針每次走一步,當(dāng)快指針和慢指針相等時,說明鏈表有環(huán),如果快指針的下一個節(jié)點是 null 節(jié)點,表示鏈表沒有環(huán)。

根據(jù)上面的思路,就可以寫出實現(xiàn)代碼了。

//返回單鏈表是否存在環(huán)
bool hasCycle(ListNode *head)
{
if(nullptr == head) return false;
//快指針和慢指針初始都指向head
ListNode *pslow = head;
ListNode *pfast = head;
while (nullptr != pfast && nullptr != pfast->next)
{
//快指針每次走兩步,慢指針每次走一步
//當(dāng)快指針的下一個節(jié)點為 null時
//表示快指針達到了末尾節(jié)點
pfast = pfast->next->next;
pslow = pslow->next;
if (pfast == pslow)
{
return true;
}
}
return false;
}

鏈表環(huán)的起始節(jié)點

我們再深入下,既然解決了鏈表是否有環(huán)的問題,那能不能知道環(huán)的起始節(jié)點呢 ?

比如: 對于下圖中的鏈表來說,環(huán)的起始節(jié)點是 3。

解決的方法依然是使用快慢指針,快指針每次走兩步,慢指針每次走一步。

下圖是一個簡易的環(huán)形鏈表圖,其中 A 為鏈表頭節(jié)點,B 為環(huán)的起始節(jié)點,C為 快指針和慢指針在環(huán)中相遇的節(jié)點(至于快指針和慢指針為什么一定會在環(huán)中相遇,在上一小節(jié)有解釋,這里不在贅述了)。

A 到 B 的距離是 S1。

B 到 C 的距離是 S2。

C 到 B 的距離是 S3。

假設(shè),當(dāng)快指針和慢指針在 C點相遇時,快指針已經(jīng)繞著環(huán)走了 n 圈,則相遇時各自走過的路程如下:

快指針: S1 + n * ( S2 + S3 ) + S2。

慢指針:S1 + S2。

由于快指針走過的路程是慢指針的 2 倍,則有:

S1 + n * ( S2 + S3 ) = 2 * (S1 + S2)

簡化下上面的等式可以得到:

S1 = (n - 1) * (S2 + S3) + S3

S2 + S3 剛好是環(huán)的長度,所以,上面的結(jié)果可以理解為,從 A 到 B 的距離,等于從相遇點 C 出發(fā),繞著環(huán)走 n - 1圈 ( 此時會回到 C 點 ) ,然后再走 S3 就到達了 B 點,也即環(huán)的起始點。

因此,當(dāng)快慢指針相遇后,再額外使用一個指針指向鏈表頭節(jié)點,然后這個額外指針和慢指針同時移動,它們最終一定會在環(huán)的起始節(jié)點相遇。

搞明白了上面的推理過程之后,實現(xiàn)代碼直接在 鏈表是否存在環(huán) 那一小節(jié)的基礎(chǔ)上稍作修改即可,具體的代碼如下:

//返回單鏈表環(huán)的起始節(jié)點
ListNode *entrynodeInLoop(ListNode *head)
{
if (nullptr == head || nullptr == head->next)
return nullptr;
ListNode *pslow = head; //慢指針
ListNode *pfast = head; //快指針
ListNode *ppoint = nullptr;//指向快慢指針相遇時的節(jié)點
while (nullptr != pfast && nullptr != pfast->next)
{
pslow = pslow->next;
pfast = pfast->next->next;
if (pslow == pfast)
{
ppoint = pslow;
break;
}
}
//相遇節(jié)點為null,表示沒有環(huán)
if (nullptr == ppoint) return nullptr;
pslow = head; //慢指針指向頭節(jié)點
while (pslow != ppoint)
{
pslow = pslow->next;
ppoint = ppoint->next;
}
return ppoint;
}

其實,鏈表是否有環(huán) 以及 鏈表環(huán)的起始節(jié)點 還有一種比較直觀的求解方法。

額外增加一個記錄節(jié)點指針的集合,然后從頭節(jié)點開始往前遍歷,每經(jīng)過一個節(jié)點,查詢集合中是否已存在該節(jié)點,如果不存在,節(jié)點指針加入到集合中,如果存在,則表示該節(jié)點就是環(huán)的入口節(jié)點。

這種方法比較好理解,但是它的空間復(fù)雜度是 O(N), 時間復(fù)雜度跟 快慢指針 相同,這里也給出實現(xiàn)代碼供參考。

//返回鏈表環(huán)的起始節(jié)點
ListNode *entrynodeInLoop(ListNode *head)
{
if(nullptr == head) return nullptr;
//鏈表節(jié)點的集合
unordered_set<ListNode*> setnode;
ListNode *p = head;
while (nullptr != p)
{
auto iter = setnode.find(p);
if( iter != setnode.end())
{
//集合中找到了相同的節(jié)點
//此節(jié)點即為環(huán)的入口
return p;
}
//節(jié)點不在集合中,則加入集合
setnode.insert(p);
//移動到下一個節(jié)點
p = p->next;
}
//不存在環(huán),返回 nullptr
return nullptr;
}

兩個鏈表是否相交

給你兩個鏈表的頭節(jié)點,如果這兩個鏈表相交,則返回相交的節(jié)點,如果沒相交,返回 null。

比如下圖中,兩個鏈表相交的節(jié)點是 3。

初看這個問題,最容易想到的方法是分別遍歷兩個鏈表,用一個集合記錄遍歷過程中的節(jié)點,如果存在相交的節(jié)點,肯定會多次訪問該節(jié)點,當(dāng)?shù)诙卧L問該節(jié)點的時候,集合中已經(jīng)存在該節(jié)點了,如果沒有相交,則集合中不會出現(xiàn)兩個相同的節(jié)點。

但利用集合臨時存儲遍歷過的節(jié)點的方法,空間復(fù)雜度是 O(N),如何在 O(1) 的空間復(fù)雜度內(nèi)解決呢?

解決方法是利用兩個指針p1 和 p2,初始時 p1 指向第一個鏈表的頭節(jié)點,p2指向第二個鏈表的頭節(jié)點,然后同時開始遍歷鏈表,p1 遍歷完鏈表之后,指向第二個鏈表的頭節(jié)點,p2 遍歷完鏈表之后,指向第一個鏈表的頭節(jié)點。

實際上相當(dāng)于兩個鏈表連在一起了,具體看下圖:

圖中綠色的節(jié)點是當(dāng)前鏈表的節(jié)點,藍色的節(jié)點是對方鏈表的節(jié)點,紅色的是遍歷過程中相遇的節(jié)點,也即兩個鏈表相交的節(jié)點,當(dāng)兩個鏈表沒有相交時,最后p1 和 p2 都指向了空節(jié)點,這也是我們想要的結(jié)果,大家可以自己模擬下這個過程。

因此,此題的關(guān)鍵是找到一種辦法,使得 p1 和 p2 能同時到達兩個鏈表相交的節(jié)點。

根據(jù)上述的方法,可以寫出實現(xiàn)代碼 :

// 單鏈表節(jié)點結(jié)構(gòu)
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *pnext) : val(x), next(pnext) {}
};
//返回兩個鏈表相交的節(jié)點
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
{
if (nullptr == headA || nullptr == headB)
return nullptr;
ListNode *pa = headA;
ListNode *pb = headB;
while (pa != pb)
{
pa = (nullptr != pa) ? pa->next : headB;
pb = (nullptr != pb) ? pb->next : headA;
}
return pa;
}

小結(jié)

本文講解了鏈表相關(guān)的一系列操作,有些方法比較有技巧性,一時不太容易想到,需要大家多去體會和練習(xí),假以時日,我相信大家一定能掌握并熟練使用這些套路的

責(zé)任編輯:武曉燕 來源: Linux開發(fā)那些事兒
相關(guān)推薦

2022-03-11 07:59:09

容器代碼元素

2022-05-30 08:05:11

架構(gòu)

2017-03-31 15:30:09

2012-05-28 10:06:05

項目開發(fā)項目管理開發(fā)

2023-02-26 21:33:49

混合云架構(gòu)模式

2024-01-12 08:26:16

Linux磁盤文件系統(tǒng)

2020-02-18 16:48:48

大腦CPU包裝

2023-01-09 08:38:22

大數(shù)據(jù)架構(gòu)師YARN

2017-10-28 23:00:52

多云混合云云計算

2021-03-11 15:49:44

人工智能深度學(xué)習(xí)

2025-03-03 08:40:00

JavaScriptthis開發(fā)

2021-05-09 22:26:36

Python函數(shù)變量

2021-03-19 14:12:24

2018-10-25 09:26:07

VLANVXLAN網(wǎng)絡(luò)

2021-10-29 11:30:31

補碼二進制反碼

2020-08-03 08:01:50

爬蟲技巧

2017-09-26 10:36:52

云端部署內(nèi)部

2025-08-08 01:11:00

React組件通信

2020-07-01 08:07:33

Redis

2020-11-17 08:32:22

存儲器鏈接
點贊
收藏

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

亚洲精品成人免费| 中文字幕在线视频一区| 久久免费视频在线| 国产高清在线观看免费不卡| 国模私拍视频一区| 非洲一级黄色片| 日本免费成人| 亚洲妇熟xx妇色黄| 日韩三级在线播放| 国产999久久久| 99精品国产在热久久| 亚洲桃花岛网站| 杨幂一区二区国产精品| 日韩电影免费观看高清完整版| 国产精品欧美久久久久无广告| 丁香五月网久久综合| 久久久久久亚洲av无码专区| 午夜日韩在线| 亚洲午夜女主播在线直播| 香蕉视频xxxx| 国产一区二区三区朝在线观看| 亚洲免费视频成人| 先锋影音亚洲资源| 欧美自拍第一页| 久久99精品国产.久久久久| 午夜免费在线观看精品视频| а天堂中文在线资源| 欧美大奶一区二区| 日韩免费成人网| 亚洲精品自拍网| 中文字幕在线直播| 一区二区成人在线观看| 亚洲欧洲精品在线| 美丽的姑娘在线观看免费动漫| 国产精品 欧美精品| 国产精品高潮在线| 日产精品久久久久久久| 91精品国偷自产在线电影 | 一级片在线免费观看视频| 99国产精品久久久久久久| 欧美精品做受xxx性少妇| 一级片久久久久| 亚洲综合福利| 亚洲国产精品成人精品| 国模大尺度视频| 粉嫩av国产一区二区三区| 欧洲精品中文字幕| 欧美激情成人网| 在线免费看h| 亚洲777理论| 韩日视频在线观看| 欧美人与性动交α欧美精品图片| 亚洲欧洲色图综合| 在线码字幕一区| 免费看a在线观看| 国产精品素人视频| 色狠狠久久av五月综合| 国产福利免费在线观看| 国产农村妇女精品| 亚洲一区二区精品在线| 午夜视频在线观看网站| 中文字幕制服丝袜成人av| 亚洲一区二区在线看| 日本激情视频在线观看| 亚洲视频在线一区二区| 日本a级片在线观看| av大全在线| 亚洲国产美国国产综合一区二区| 国产精品专区在线| 日本免费久久| 欧美老女人在线| 国产探花在线观看视频| 91成人福利| 亚洲老头老太hd| 手机免费观看av| 亚洲男女av一区二区| 久久久久久国产三级电影| 91精品国产乱码久久久张津瑜| 国产精品久久久免费| 日本国产高清不卡| 一区二区的视频| 国产suv精品一区二区6| 麻豆精品蜜桃一区二区三区| 韩日视频在线| 中文字幕亚洲精品在线观看| 欧美大陆一区二区| www视频在线观看免费| 国产精品三级av| 欧美精品一区二区性色a+v| 国产美女福利在线| 亚洲国产毛片aaaaa无费看| 久久精品一区二| 国产成人免费| 欧美精品在欧美一区二区少妇| 三级av免费看| 久久九九热re6这里有精品| 国产丝袜一区二区| 女人裸体性做爰全过| 一区二区免费不卡在线| 日韩中文字幕在线播放| 日韩成人在线免费视频| 久久综合中文| 91在线观看欧美日韩| 成人小说亚洲一区二区三区| 99久免费精品视频在线观看| 日韩精品资源| 免费在线播放电影| 色综合天天综合网国产成人综合天| 免费高清在线观看免费| 日韩欧美一区二区三区在线观看| 欧美精品亚洲二区| 欧美成人三级伦在线观看| 久久视频国产| 久久人人爽人人爽人人片av高请| 中文字幕手机在线视频| 国产一区二区在线观看免费| 乱色588欧美| 成人在线直播| 欧美色精品在线视频| 国产精品果冻传媒| 91亚洲国产高清| 97欧美精品一区二区三区| 精品国产青草久久久久96| 成人免费看视频| 一本色道久久99精品综合| 毛片网站在线看| 日韩欧美在线观看视频| 娇妻高潮浓精白浆xxⅹ| 国产精品久久久久久| 91干在线观看| 亚洲精品.www| 综合色中文字幕| 女人扒开屁股爽桶30分钟| 日韩国产在线不卡视频| 亚洲色图av在线| 五月婷婷激情网| 国产一区二区伦理片| 欧美一区2区三区4区公司二百 | 欧美精品在线第一页| 国产一区二区视频网站| 9i在线看片成人免费| 在线无限看免费粉色视频| 美女100%一区| 亚洲福利精品在线| 欧美成人免费观看视频| 另类综合日韩欧美亚洲| 日本一区视频在线| 午夜久久中文| 日韩精品视频免费| 中文字幕第15页| 成人免费视频视频在线观看免费 | 国产老女人乱淫免费| 欧美经典一区二区| 国产成人久久婷婷精品流白浆| 免费成人蒂法| 91精品国产乱码久久久久久久久| 国产综合视频在线| 亚洲精品久久久久久国产精华液| 国产福利影院在线观看| 日韩专区精品| 91精品久久久久久久久青青| eeuss影院www在线播放| 欧美午夜电影一区| 人成免费在线视频| 久久精品二区亚洲w码| 色婷婷精品国产一区二区三区| 亚洲同志男男gay1069网站| 亚洲成人1234| 午夜精品久久久久久久久久久久久蜜桃| 国产精品一区三区| 伊人久久在线观看| 日韩欧美一级| 久久久久在线观看| 午夜福利理论片在线观看| 午夜精品爽啪视频| 69精品无码成人久久久久久| 日韩高清不卡一区| 亚洲国内在线| 国产专区精品| 久久久久中文字幕| 毛片免费在线| 欧美三级电影在线观看| 很污很黄的网站| 国产一区二区福利| 日韩精品一区二区免费| 天堂av一区二区三区在线播放| 78色国产精品| 国产主播福利在线| 国产精品电影| 日韩欧美中文第一页| 自拍偷拍你懂的| 精品一区二区日韩| 久草视频这里只有精品| 亚洲宅男一区| 91精品久久久久久久久久久久久久 | 欧美1级日本1级| 国内视频一区| 免费高清视频在线一区| 久久国产精品久久久久久| 四虎免费在线观看| 欧美视频在线一区二区三区| 无码黑人精品一区二区| 不卡的av在线| 日本在线观看免费视频| 午夜国产精品视频| 欧美精品七区| 国产亚洲观看| 午夜精品福利电影| 黄色网页在线看| 日韩av综合网| 国产激情无套内精对白视频| 欧美午夜激情小视频| 性欧美疯狂猛交69hd| 91亚洲精品久久久蜜桃| 欧美丝袜在线观看| 日韩高清不卡一区二区| 精品国产乱码久久久久久久| 亚洲天堂国产视频| 亚洲看片免费| 日韩 欧美 自拍| 偷窥自拍亚洲色图精选| 成人福利在线观看| 成人在线免费观看黄色| 精品国产视频在线| 你懂的视频在线播放| 欧美一区二区三区精品| 国产精品自拍第一页| 亚洲国产你懂的| 国产wwwwxxxx| 久久美女艺术照精彩视频福利播放| 中文字幕一二三区| 美美哒免费高清在线观看视频一区二区| 久久国产午夜精品理论片最新版本| 日韩一区三区| 日本一区二区三区视频在线播放| 一级毛片精品毛片| 成人黄色在线播放| 一区二区三区| 国产精品国产自产拍高清av水多 | 黄网站色视频免费观看| 成人精品电影| 欧美日本国产精品| 国内自拍欧美| 91精品国产综合久久久久久丝袜| 华人av在线| 欧美麻豆久久久久久中文| yes4444视频在线观看| 日韩经典第一页| 亚洲欧美激情另类| 日韩欧美另类在线| 国产99对白在线播放| 欧美四级电影网| a片在线免费观看| 91福利国产精品| 麻豆成人免费视频| 精品国产成人av| www.av视频在线观看| 一区二区三区欧美久久| 欧美第一页在线观看| 成人欧美一区二区三区白人 | 日本中文字幕一级片| 琪琪久久久久日韩精品| 乱色588欧美| 蜜臀久久99精品久久一区二区| 国产欧美一区二区视频| 国产精品宾馆| 激情小说网站亚洲综合网| 精品国内亚洲2022精品成人| 久久青青草综合| 亚欧日韩另类中文欧美| 蜜桃精品久久久久久久免费影院 | 你懂的视频在线一区二区| 三级精品视频| 奇米影视首页 狠狠色丁香婷婷久久综合| 免费一区二区三区视频导航| 欧美乱偷一区二区三区在线| 亚洲传媒在线| 日韩国产一区久久| 99久久激情| 国产青草视频在线观看| 欧美日韩1区| 久久久久久久久久久免费视频| 久久一区精品| 污污的网站免费| 国产成人午夜高潮毛片| 中文字幕 亚洲一区| 久久精品一区四区| 国产成人av免费在线观看| 亚洲一区二区三区在线| 亚洲另类欧美日韩| 欧美色偷偷大香| 精品国产av一区二区三区| 精品国产第一区二区三区观看体验| 性xxxx视频| 国产亚洲免费的视频看| 国产精品久久久久久福利| 精品中文字幕视频| 樱桃视频成人在线观看| 国产精品视频色| 97久久精品一区二区三区的观看方式| 97人人模人人爽人人少妇| 欧美韩一区二区| 亚洲国产成人不卡| 欧美特黄一级| 可以免费观看av毛片| 久草精品在线观看| wwwxx日本| 中文字幕第一区第二区| 欧美日韩精品亚洲精品| 色呦呦一区二区三区| a级片免费视频| 亚洲国产欧美精品| 成人影院在线观看| 国产成人a亚洲精品| 久久久久久亚洲精品美女| 久久综合给合久久狠狠色| 亚洲女同一区| 久久网站免费视频| 国产91综合一区在线观看| 摸摸摸bbb毛毛毛片| 亚洲成av人片在线| 亚洲视频一区二区三区四区| 亚洲精品一线二线三线| 国产毛片av在线| 91精品国产高清久久久久久91| 亚洲人成网站在线| 风间由美久久久| 精品少妇一区| 国产免费xxx| 石原莉奈一区二区三区在线观看| 樱花草www在线| 国产午夜精品一区二区三区四区| 欧美色图一区二区| 欧美手机在线视频| 国产在线观看免费网站| 精品一区二区三区免费视频| 亚洲无吗一区二区三区| 成人妖精视频yjsp地址| 蜜桃av免费观看| 欧美日韩精品电影| 香港三日本三级少妇66| 久久高清视频免费| 成人av集中营| 青青草国产精品| 日韩视频在线一区二区三区| 亚洲高清无码久久| 一区二区在线看| 91九色蝌蚪91por成人| 亚洲天堂成人在线视频| 三级在线看中文字幕完整版| 亚洲一区二区三区视频| 亚洲国产精品成人| 五月天开心婷婷| 最新中文字幕一区二区三区 | 好吊视频一二三区| 欧美国产亚洲视频| vam成人资源在线观看| 樱花www成人免费视频| 日本vs亚洲vs韩国一区三区二区 | 国产·精品毛片| 在线观看美女av| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲中文字幕无码爆乳av| 日韩av中文字幕在线| 激情aⅴ欧美一区二区欲海潮| 国产精品美女xx| 亚洲高清激情| 国产麻豆xxxvideo实拍| 日韩毛片一二三区| 一级黄在线观看| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 亚洲日本香蕉视频| 欧洲成人在线观看| 亚洲成人一品| 亚洲精品午夜在线观看| 中文字幕一区不卡| av高清一区二区| 欧美国产日韩在线| 欧美黑人巨大videos精品| 日本999视频| 国产精品免费av| 国产成人麻豆精品午夜在线| 久久久久久久国产精品视频| 日韩在线你懂的| 国产精品亚洲αv天堂无码| 国产精品久久久久一区二区三区| 国产精品自产拍| 久久久久久久久久久成人| 亚洲激情播播| www.99在线| 亚洲午夜在线视频| 国产中文在线视频| 亚洲尤物视频网| 一区二区91| 一二三四国产精品| 日韩欧美电影一二三| 亚洲男人av| 日韩视频在线免费播放| 99久久免费视频.com| 国产又大又粗又长|