久久精品中文字幕av,av.涩涩涩涩涩涩涩涩,亚洲国产日韩欧美精品成人久久久,成人福利电影免费在线观看,日产国产原创av,日韩av午夜激情,bt天堂中文字幕,超级碰人妻在线视频,欧美老熟妇久久一区二区

AI寫作智能體 自主規(guī)劃任務(wù),支持聯(lián)網(wǎng)查詢和網(wǎng)頁(yè)讀取,多模態(tài)高效創(chuàng)作各類分析報(bào)告、商業(yè)計(jì)劃、營(yíng)銷方案、教學(xué)內(nèi)容等。 廣告
3.3 節(jié)中介紹了 Lisp 如何使用指針允許我們將任何值放到任何地方。這種說(shuō)法是完全有可能的,但這并不一定都是好事。 例如,一個(gè)對(duì)象可以是它自已的一個(gè)元素。這是好事還是壞事,取決于程序員是不是有意這樣設(shè)計(jì)的。 [TOC] ## 12.1 共享結(jié)構(gòu) (Shared Structure)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#shared-structure "Permalink to this headline") 多個(gè)列表可以共享?`cons`?。在最簡(jiǎn)單的情況下,一個(gè)列表可以是另一個(gè)列表的一部分。 ~~~ > (setf part (list 'b 'c)) (B C) > (setf whole (cons 'a part)) (A B C) ~~~ ![../_images/Figure-12.1.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.1.png) **圖 12.1 共享結(jié)構(gòu)** 執(zhí)行上述操作后,第一個(gè)?`cons`?是第二個(gè)?`cons`?的一部分 (事實(shí)上,是第二個(gè)?`cons`?的?`cdr`?)。在這樣的情況下,我們說(shuō),這兩個(gè)列表是共享結(jié)構(gòu) (Share Structure)。這兩個(gè)列表的基本結(jié)構(gòu)如圖 12.1 所示。 其中,第一個(gè)?`cons`?是第二個(gè)?`cons`?的一部分 (事實(shí)上,是第二個(gè)?`cons`?的?`cdr`?)。在這樣的情況下,我們稱這兩個(gè)列表為共享結(jié)構(gòu) (Share Structure)。這兩個(gè)列表的基本結(jié)構(gòu)如圖 12.1 所示。 使用?`tailp`?判斷式來(lái)檢測(cè)一下。將兩個(gè)列表作為它的輸入?yún)?shù),如果第一個(gè)列表是第二個(gè)列表的一部分時(shí),則返回?`T`?: ~~~ > (tailp part whole) T ~~~ 我們可以把它想像成: ~~~ (defun our-tailp (x y) (or (eql x y) (and (consp y) (our-tailp x (cdr y))))) ~~~ 如定義所表明的,每個(gè)列表都是它自己的尾端,?`nil`?是每一個(gè)正規(guī)列表的尾端。 在更復(fù)雜的情況下,兩個(gè)列表可以是共享結(jié)構(gòu),但彼此都不是對(duì)方的尾端。在這種情況下,他們都有一個(gè)共同的尾端,如圖 12.2 所示。我們像這樣構(gòu)建這種情況: ~~~ (setf part (list 'b 'c) whole1 (cons 1 part) whole2 (cons 2 part)) ~~~ ![../_images/Figure-12.2.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.2.png) **圖 12.2 被共享的尾端** 現(xiàn)在?`whole1`?和?`whole2`?共享結(jié)構(gòu),但是它們彼此都不是對(duì)方的一部分。 當(dāng)存在嵌套列表時(shí),重要的是要區(qū)分是列表共享了結(jié)構(gòu),還是列表的元素共享了結(jié)構(gòu)。頂層列表結(jié)構(gòu)指的是,直接構(gòu)成列表的那些`cons`?,而不包含那些用于構(gòu)造列表元素的?`cons`?。圖 12.3 是一個(gè)嵌套列表的頂層列表結(jié)構(gòu) (**譯者注:**圖 12.3 中上面那三個(gè)有黑色陰影的?`cons`?即構(gòu)成頂層列表結(jié)構(gòu)的?`cons`?)。 ![../_images/Figure-12.3.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.3.png) **圖 12.3 頂層列表結(jié)構(gòu)** 兩個(gè)?`cons`?是否共享結(jié)構(gòu),取決于我們把它們看作是列表還是[樹](http://zh.wikipedia.org/wiki/%E6%A0%91_(%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84))??赡艽嬖趦蓚€(gè)嵌套列表,當(dāng)把它們看作樹時(shí),它們共享結(jié)構(gòu),而看作列表時(shí),它們不共享結(jié)構(gòu)。圖 12.4 構(gòu)建了這種情況,兩個(gè)列表以一個(gè)元素的形式包含了同一個(gè)列表,代碼如下: ~~~ (setf element (list 'a 'b) holds1 (list 1 element 2) holds2 (list element 3)) ~~~ ![../_images/Figure-12.4.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.4.png) **圖 12.4 共享子樹** 雖然?`holds1`?的第二個(gè)元素和?`holds2`?的第一個(gè)元素共享結(jié)構(gòu) (其實(shí)是相同的),但如果把?`holds1`?和?`holds2`?看成是列表時(shí),它們不共享結(jié)構(gòu)。僅當(dāng)兩個(gè)列表共享頂層列表結(jié)構(gòu)時(shí),才能說(shuō)這兩個(gè)列表共享結(jié)構(gòu),而?`holds1`?和?`holds2`?沒(méi)有共享頂層列表結(jié)構(gòu)。 如果我們想避免共享結(jié)構(gòu),可以使用復(fù)制。函數(shù)?`copy-list`?可以這樣定義: ~~~ (defun our-copy-list (lst) (if (null lst) nil (cons (car lst) (our-copy-list (cdr lst))))) ~~~ 它返回一個(gè)不與原始列表共享頂層列表結(jié)構(gòu)的新列表。函數(shù)?`copy-tree`?可以這樣定義: ~~~ (defun our-copy-tree (tr) (if (atom tr) tr (cons (our-copy-tree (car tr)) (our-copy-tree (cdr tr))))) ~~~ 它返回一個(gè)連原始列表的樹型結(jié)構(gòu)也不共享的新列表。圖 12.5 顯示了對(duì)一個(gè)嵌套列表使用?`copy-list`?和?`copy-tree`?的區(qū)別。 ![../_images/Figure-12.5.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.5.png) **圖 12.5 兩種復(fù)制** ## 12.2 修改 (Modification)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#modification "Permalink to this headline") 為什么要避免共享結(jié)構(gòu)呢?之前討論的共享結(jié)構(gòu)問(wèn)題僅僅是個(gè)智力練習(xí),到目前為止,并沒(méi)使我們?cè)趯?shí)際寫程序的時(shí)候有什么不同。當(dāng)修改一個(gè)被共享的結(jié)構(gòu)時(shí),問(wèn)題出現(xiàn)了。如果兩個(gè)列表共享結(jié)構(gòu),當(dāng)我們修改了其中一個(gè),另外一個(gè)也會(huì)無(wú)意中被修改。 上一節(jié)中,我們介紹了怎樣構(gòu)建一個(gè)是其它列表的尾端的列表: ~~~ (setf whole (list 'a 'b 'c) tail (cdr whole)) ~~~ 因?yàn)?`whole`?的?`cdr`?與?`tail`?是相等的,無(wú)論是修改?`tail`?還是?`whole`?的?`cdr`?,我們修改的都是同一個(gè)?`cons`?: ~~~ > (setf (second tail ) 'e) E > tail (B E) > whole (A B E) ~~~ 同樣的,如果兩個(gè)列表共享同一個(gè)尾端,這種情況也會(huì)發(fā)生。 一次修改兩個(gè)對(duì)象并不總是錯(cuò)誤的。有時(shí)候這可能正是你想要的。但如果無(wú)意的修改了共享結(jié)構(gòu),將會(huì)引入一些非常微妙的 bug。Lisp 程序員要培養(yǎng)對(duì)共享結(jié)構(gòu)的意識(shí),并且在這類錯(cuò)誤發(fā)生時(shí)能夠立刻反應(yīng)過(guò)來(lái)。當(dāng)一個(gè)列表神秘的改變了的時(shí)候,很有可能是因?yàn)楦淖兞似渌c之共享結(jié)構(gòu)的對(duì)象。 真正危險(xiǎn)的不是共享結(jié)構(gòu),而是改變被共享的結(jié)構(gòu)。為了安全起見(jiàn),干脆避免對(duì)結(jié)構(gòu)使用?`setf`?(以及相關(guān)的運(yùn)算,比如:?`pop`?,`rplaca`?等),這樣就不會(huì)遇到問(wèn)題了。如果某些時(shí)候不得不修改列表結(jié)構(gòu)時(shí),要搞清楚要修改的列表的來(lái)源,確保它不要和其它不需要改變的對(duì)象共享結(jié)構(gòu)。如果它和其它不需要改變的對(duì)象共享了結(jié)構(gòu),或者不能預(yù)測(cè)它的來(lái)源,那么復(fù)制一個(gè)副本來(lái)進(jìn)行改變。 當(dāng)你調(diào)用別人寫的函數(shù)的時(shí)候要加倍小心。除非你知道它內(nèi)部的操作,否則,你傳入的參數(shù)時(shí)要考慮到以下的情況: 1.它對(duì)你傳入的參數(shù)可能會(huì)有破壞性的操作 2.你傳入的參數(shù)可能被保存起來(lái),如果你調(diào)用了一個(gè)函數(shù),然后又修改了之前作為參數(shù)傳入該函數(shù)的對(duì)象,那么你也就改變了函數(shù)已保存起來(lái)作為它用的對(duì)象[1]。 在這兩種情況下,解決的方法是傳入一個(gè)拷貝。 在 Common Lisp 中,一個(gè)函數(shù)調(diào)用在遍歷列表結(jié)構(gòu) (比如,?`mapcar`?或?`remove-if`?的參數(shù))的過(guò)程中不允許修改被遍歷的結(jié)構(gòu)。關(guān)于評(píng)估這樣的代碼的重要性并沒(méi)有明確的規(guī)定。 ## 12.3 示例:隊(duì)列 (Example: Queues)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#example-queues "Permalink to this headline") 共享結(jié)構(gòu)并不是一個(gè)總讓人擔(dān)心的特性。我們也可以對(duì)其加以利用的。這一節(jié)展示了怎樣用共享結(jié)構(gòu)來(lái)表示[隊(duì)列](http://zh.wikipedia.org/wiki/%E9%98%9F%E5%88%97)。隊(duì)列對(duì)象是我們可以按照數(shù)據(jù)的插入順序逐個(gè)檢出數(shù)據(jù)的倉(cāng)庫(kù),這個(gè)規(guī)則叫做[先進(jìn)先出 (FIFO, first in, first out)](http://zh.wikipedia.org/zh-cn/%E5%85%88%E9%80%B2%E5%85%88%E5%87%BA)。 用列表表示[棧 (stack)](http://zh.wikipedia.org/wiki/%E6%A0%88)比較容易,因?yàn)闂J菑耐欢瞬迦牒蜋z出。而表示隊(duì)列要困難些,因?yàn)殛?duì)列的插入和檢出是在不同端。為了有效的實(shí)現(xiàn)隊(duì)列,我們需要找到一種辦法來(lái)指向列表的兩個(gè)端。 圖 12.6 給出了一種可行的策略。它展示怎樣表示一個(gè)含有 a,b,c 三個(gè)元素的隊(duì)列。一個(gè)隊(duì)列就是一對(duì)列表,最后那個(gè)?`cons`?在相同的列表中。這個(gè)列表對(duì)由被稱作頭端 (front)和尾端 (back)的兩部分組成。如果要從隊(duì)列中檢出一個(gè)元素,只需在其頭端?`pop`,要插入一個(gè)元素,則創(chuàng)建一個(gè)新的?`cons`?,把尾端的?`cdr`?設(shè)置成指向這個(gè)?`cons`?,然后將尾端指向這個(gè)新的?`cons`?。 ![../_images/Figure-12.6.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.6.png) **圖 12.6 一個(gè)隊(duì)列的結(jié)構(gòu)** ~~~ (defun make-queue () (cons nil nil)) (defun enqueue (obj q) (if (null (car q)) (setf (cdr q) (setf (car q) (list obj))) (setf (cdr (cdr q)) (list obj) (cdr q) (cdr (cdr q)))) (car q)) (defun dequeue (q) (pop (car q))) ~~~ **圖 12.7 隊(duì)列實(shí)現(xiàn)** 圖 12.7 中的代碼實(shí)現(xiàn)了這一策略。其用法如下: ~~~ > (setf q1 (make-queue)) (NIL) > (progn (enqueue 'a q1) (enqueue 'b q1) (enqueue 'c q1)) (A B C) ~~~ 現(xiàn)在,?`q1`?的結(jié)構(gòu)就如圖 12.6 那樣: ~~~ > q1 ((A B C) C) ~~~ 從隊(duì)列中檢出一些元素: ~~~ > (dequeue q1) A > (dequeue q1) B > (enqueue 'd q1) (C D) ~~~ ## 12.4 破壞性函數(shù) (Destructive Functions)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#destructive-functions "Permalink to this headline") Common Lisp 包含一些允許修改列表結(jié)構(gòu)的函數(shù)。為了提高效率,這些函數(shù)是具有破壞性的。雖然它們可以回收利用作為參數(shù)傳給它們的?`cons`?,但并不是因?yàn)橄胍鼈兊母弊饔枚{(diào)用它們 (**譯者注:**因?yàn)檫@些函數(shù)的副作用并沒(méi)有任何保證,下面的例子將說(shuō)明問(wèn)題)。 比如,?`delete`?是?`remove`?的一個(gè)具有破壞性的版本。雖然它可以破壞作為參數(shù)傳給它的列表,但它并不保證什么。在大多數(shù)的 Common Lisp 的實(shí)現(xiàn)中,會(huì)出現(xiàn)下面的情況: ~~~ > (setf lst '(a r a b i a) ) (A R A B I A) > (delete 'a lst ) (R B I) > lst (A R B I) ~~~ 正如?`remove`?一樣,如果你想要副作用,應(yīng)該對(duì)返回值使用?`setf`?: ~~~ (setf lst (delete 'a lst)) ~~~ 破壞性函數(shù)是怎樣回收利用傳給它們的列表的呢?比如,可以考慮?`nconc`?——?`append`?的破壞性版本。[2]下面是兩個(gè)參數(shù)版本的實(shí)現(xiàn),其清楚地展示了兩個(gè)已知列表是怎樣被縫在一起的: ~~~ (defun nconc2 ( x y) (if (consp x) (progn (setf (cdr (last x)) y) x) y)) ~~~ 我們找到第一個(gè)列表的最后一個(gè)?*Cons*?核 (cons cells),把它的?`cdr`?設(shè)置成指向第二個(gè)列表。一個(gè)正規(guī)的多參數(shù)的?`nconc`?可以被定義成像附錄 B 中的那樣。 函數(shù)?`mapcan`?類似?`mapcar`?,但它是用?`nconc`?把函數(shù)的返回值 (必須是列表) 拼接在一起的: ~~~ > (mapcan #'list '(a b c) '(1 2 3 4)) ( A 1 B 2 C 3) ~~~ 這個(gè)函數(shù)可以定義如下: ~~~ (defun our-mapcan (fn &rest lsts ) (apply #'nconc (apply #'mapcar fn lsts))) ~~~ 使用?`mapcan`?時(shí)要謹(jǐn)慎,因?yàn)樗哂衅茐男?。它?`nconc`?拼接返回的列表,所以這些列表最好不要再在其它地方使用。 這類函數(shù)在處理某些問(wèn)題的時(shí)候特別有用,比如,收集樹在某層上的所有子結(jié)點(diǎn)。如果?`children`?函數(shù)返回一個(gè)節(jié)點(diǎn)的孩子節(jié)點(diǎn)的列表,那么我們可以定義一個(gè)函數(shù)返回某節(jié)點(diǎn)的孫子節(jié)點(diǎn)的列表如下: ~~~ (defun grandchildren (x) (mapcan #'(lambda (c) (copy-list (children c))) (children x))) ~~~ 這個(gè)函數(shù)調(diào)用?`copy-list`?時(shí)存在一個(gè)假設(shè) ——?`chlidren`?函數(shù)返回的是一個(gè)已經(jīng)保存在某個(gè)地方的列表,而不是構(gòu)建了一個(gè)新的列表。 一個(gè)?`mapcan`?的無(wú)損變體可以這樣定義: ~~~ (defun mappend (fn &rest lsts ) (apply #'append (apply #'mapcar fn lsts))) ~~~ 如果使用?`mappend`?函數(shù),那么?`grandchildren`?的定義就可以省去?`copy-list`?: ~~~ (defun grandchildren (x) (mappend #'children (children x))) ~~~ ## 12.5 示例:二叉搜索樹 (Example: Binary Search Trees)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#example-binary-search-trees "Permalink to this headline") 在某些情況下,使用破壞性操作比使用非破壞性的顯得更自然。第 4.7 節(jié)中展示了如何維護(hù)一個(gè)具有二分搜索格式的有序?qū)ο蠹?(或者說(shuō)維護(hù)一個(gè)[二叉搜索樹 (BST)](http://zh.wikipedia.org/zh-cn/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9))。第 4.7 節(jié)中給出的函數(shù)都是非破壞性的,但在我們真正使用BST的時(shí)候,這是一個(gè)不必要的保護(hù)措施。本節(jié)將展示如何定義更符合實(shí)際應(yīng)用的具有破壞性的插入函數(shù)和刪除函數(shù)。 圖 12.8 展示了如何定義一個(gè)具有破壞性的?`bst-insert`?(第 72 頁(yè)「**譯者注:**第 4.7 節(jié)」)。相同的輸入?yún)?shù),能夠得到相同返回值。唯一的區(qū)別是,它將修改作為第二個(gè)參數(shù)輸入的 BST。 在第 2.12 節(jié)中說(shuō)過(guò),具有破壞性并不意味著一個(gè)函數(shù)調(diào)用具有副作用。的確如此,如果你想使用?`bst-insert!`?構(gòu)造一個(gè) BST,你必須像調(diào)用?`bst-insert`?那樣調(diào)用它: ~~~ > (setf *bst* nil) NIL > (dolist (x '(7 2 9 8 4 1 5 12)) (setf *bst* (bst-insert! x *bst* #'<))) NIL ~~~ ~~~ (defun bst-insert! (obj bst <) (if (null bst) (make-node :elt obj) (progn (bsti obj bst <) bst))) (defun bsti (obj bst <) (let ((elt (node-elt bst))) (if (eql obj elt) bst (if (funcall < obj elt) (let ((l (node-l bst))) (if l (bsti obj l <) (setf (node-l bst) (make-node :elt obj)))) (let ((r (node-r bst))) (if r (bsti obj r <) (setf (node-r bst) (make-node :elt obj)))))))) ~~~ **圖 12.8: 二叉搜索樹:破壞性插入** 你也可以為 BST 定義一個(gè)類似 push 的功能,但這超出了本書的范圍。(好奇的話,可以參考第 409 頁(yè) 「**譯者注:**即備注 204 」 的宏定義。) 與?`bst-remove`?(第 74 頁(yè)「**譯者注:**第 4.7 節(jié)」) 對(duì)應(yīng),圖 12.9 展示了一個(gè)破壞性版本的?`bst-delete`?。同?`delete`?一樣,我們調(diào)用它并不是因?yàn)樗母弊饔?。你?yīng)該像調(diào)用?`bst-remove`?那樣調(diào)用?`bst-delete`?: ~~~ > (setf *bst* (bst-delete 2 *bst* #'<) ) #<7> > (bst-find 2 *bst* #'<) NIL ~~~ ~~~ (defun bst-delete (obj bst <) (if bst (bstd obj bst nil nil <)) bst) (defun bstd (obj bst prev dir <) (let ((elt (node-elt bst))) (if (eql elt obj) (let ((rest (percolate! bst))) (case dir (:l (setf (node-l prev) rest)) (:r (setf (node-r prev) rest)))) (if (funcall < obj elt) (if (node-l bst) (bstd obj (node-l bst) bst :l <)) (if (node-r bst) (bstd obj (node-r bst) bst :r <)))))) (defun percolate! (bst) (cond ((null (node-l bst)) (if (null (node-r bst)) nil (rperc! bst))) ((null (node-r bst)) (lperc! bst)) (t (if (zerop (random 2)) (lperc! bst) (rperc! bst))))) (defun lperc! (bst) (setf (node-elt bst) (node-elt (node-l bst))) (percolate! (node-l bst))) (defun rperc! (bst) (setf (node-elt bst) (node-elt (node-r bst))) (percolate! (node-r bst))) ~~~ **圖 12.9: 二叉搜索樹:破壞性刪除** **譯注:**?此范例已被回報(bào)為錯(cuò)誤的,一個(gè)修復(fù)的版本請(qǐng)?jiān)煸L[這里](https://gist.github.com/2868339)。 ## 12.6 示例:雙向鏈表 (Example: Doubly-Linked Lists)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#example-doubly-linked-lists "Permalink to this headline") 普通的 Lisp 列表是單向鏈表,這意味著其指針指向一個(gè)方向:我們可以獲取下一個(gè)元素,但不能獲取前一個(gè)。在[雙向鏈表](http://zh.wikipedia.org/wiki/%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8)中,指針指向兩個(gè)方向,我們獲取前一個(gè)元素和下一個(gè)元素都很容易。這一節(jié)將介紹如何創(chuàng)建和操作雙向鏈表。 圖 12.10 展示了如何用結(jié)構(gòu)來(lái)實(shí)現(xiàn)雙向鏈表。將?`cons`?看成一種結(jié)構(gòu),它有兩個(gè)字段:指向數(shù)據(jù)的?`car`?和指向下一個(gè)元素的?`cdr`?。要實(shí)現(xiàn)一個(gè)雙向鏈表,我們需要第三個(gè)字段,用來(lái)指向前一個(gè)元素。圖 12.10 中的?`defstruct`?定義了一個(gè)含有三個(gè)字段的對(duì)象?`dl`?(用于“雙向鏈接”),我們將用它來(lái)構(gòu)造雙向鏈表。`dl`?的?`data`?字段對(duì)應(yīng)一個(gè)?`cons`?的?`car`,`next`?字段對(duì)應(yīng)?`cdr`?。?`prev`?字段就類似一個(gè)`cdr`?,指向另外一個(gè)方向。(圖 12.11 是一個(gè)含有三個(gè)元素的雙向鏈表。) 空的雙向鏈表為?`nil`?,就像空的列表一樣。 ~~~ (defstruct (dl (:print-function print-dl)) prev data next) (defun print-dl (dl stream depth) (declare (ignore depth)) (format stream "#<DL ~A>" (dl->list dl))) (defun dl->list (lst) (if (dl-p lst) (cons (dl-data lst) (dl->list (dl-next lst))) lst)) (defun dl-insert (x lst) (let ((elt (make-dl :data x :next lst))) (when (dl-p lst) (if (dl-prev lst) (setf (dl-next (dl-prev lst)) elt (dl-prev elt) (dl-prev lst))) (setf (dl-prev lst) elt)) elt)) (defun dl-list (&rest args) (reduce #'dl-insert args :from-end t :initial-value nil)) (defun dl-remove (lst) (if (dl-prev lst) (setf (dl-next (dl-prev lst)) (dl-next lst))) (if (dl-next lst) (setf (dl-prev (dl-next lst)) (dl-prev lst))) (dl-next lst)) ~~~ **圖 12.10: 構(gòu)造雙向鏈表** ![../_images/Figure-12.11.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.11.png) **圖 12.11: 一個(gè)雙向鏈表。** 為了便于操作,我們?yōu)殡p向鏈表定義了一些實(shí)現(xiàn)類似?`car`?,?`cdr`?,?`consp`?功能的函數(shù):`dl-data`?,?`dl-next`?和?`dl-p`?。?`dl->list`是?`dl`?的打印函數(shù)(`print-function`),其返回一個(gè)包含?`dl`?所有元素的普通列表。 函數(shù)?`dl-insert`?就像針對(duì)雙向鏈表的?`cons`?操作。至少,它就像?`cons`?一樣,是一個(gè)基本構(gòu)建函數(shù)。與?`cons`?不同的是,它實(shí)際上要修改作為第二個(gè)參數(shù)傳遞給它的雙向鏈表。在這種情況下,這是自然而然的。我們?`cons`?內(nèi)容到普通列表前面,不需要對(duì)普通列表的`rest`?(**譯者注:**?`rest`?即?`cdr`?的另一種表示方法,這里的?`rest`?是對(duì)通過(guò)?`cons`?構(gòu)建后列表來(lái)說(shuō)的,即修改之前的列表) 做任何修改。但是要在雙向鏈表的前面插入元素,我們不得不修改列表的?`rest`?(這里的?`rest`?即指沒(méi)修改之前的雙向鏈表) 的?`prev`?字段來(lái)指向這個(gè)新元素。 幾個(gè)普通列表可以共享同一個(gè)尾端。因?yàn)殡p向鏈表的尾端不得不指向它的前一個(gè)元素,所以不可能存在兩個(gè)雙向鏈表共享同一個(gè)尾端。如果?`dl-insert`?不具有破壞性,那么它不得不復(fù)制其第二個(gè)參數(shù)。 單向鏈表(普通列表)和雙向鏈表另一個(gè)有趣的區(qū)別是,如何持有它們。我們使用普通列表的首端,來(lái)表示單向鏈表,如果將列表賦值給一個(gè)變量,變量可以通過(guò)保存指向列表第一個(gè)?`cons`?的指針來(lái)持有列表。但是雙向鏈表是雙向指向的,我們可以用任何一個(gè)點(diǎn)來(lái)持有雙向鏈表。?`dl-insert`?另一個(gè)不同于?`cons`?的地方在于?`dl-insert`?可以在雙向鏈表的任何位置插入新元素,而?`cons`?只能在列表的首端插入。 函數(shù)?`dl-list`?是對(duì)于?`dl`?的類似?`list`?的功能。它接受任意多個(gè)參數(shù),它會(huì)返回一個(gè)包含以這些參數(shù)作為元素的?`dl`?: ~~~ > (dl-list 'a 'b 'c) #<DL (A B C)> ~~~ 它使用了?`reduce`?函數(shù) (并設(shè)置其?`from-end`?參數(shù)為?`true`,`initial-value`?為?`nil`),其功能等價(jià)于 ~~~ (dl-insert 'a (dl-insert 'b (dl-insert 'c nil)) ) ~~~ 如果將?`dl-list`?定義中的?`#'dl-insert`?換成?`#'cons`,它就相當(dāng)于?`list`?函數(shù)了。下面是?`dl-list`?的一些常見(jiàn)用法: ~~~ > (setf dl (dl-list 'a 'b)) #<DL (A B)> > (setf dl (dl-insert 'c dl)) #<DL (C A B)> > (dl-insert 'r (dl-next dl)) #<DL (R A B)> > dl #<DL (C R A B)> ~~~ 最后,`dl-remove`?的作用是從雙向鏈表中移除一個(gè)元素。同?`dl-insert`?一樣,它也是具有破壞性的。 ## 12.7 環(huán)狀結(jié)構(gòu) (Circular Structure)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#circular-structure "Permalink to this headline") 將列表結(jié)構(gòu)稍微修改一下,就可以得到一個(gè)環(huán)形列表。存在兩種環(huán)形列表。最常用的一種是其頂層列表結(jié)構(gòu)是一個(gè)環(huán)的,我們把它叫做?`cdr-circular`?,因?yàn)榄h(huán)是由一個(gè)?`cons`?的?`cdr`?構(gòu)成的。 構(gòu)造一個(gè)單元素的?`cdr-circular`?列表,可以將一個(gè)列表的?`cdr`?設(shè)置成列表自身: ~~~ > (setf x (list 'a)) (A) > (progn (setf (cdr x) x) nil) NIL ~~~ 這樣?`x`?就是一個(gè)環(huán)形列表,其結(jié)構(gòu)如圖 12.12 (左) 所示。 ![../_images/Figure-12.12.png](http://acl.readthedocs.org/en/latest/_images/Figure-12.12.png) **圖 12.12 環(huán)狀列表。** 如果 Lisp 試著打印我們剛剛構(gòu)造的結(jié)構(gòu),將會(huì)顯示 (a a a a a …… —— 無(wú)限個(gè)?`a`)。但如果設(shè)置全局變量?`*print-circle*`?為?`t`?的話,Lisp 就會(huì)采用一種方式打印出一個(gè)能代表環(huán)形結(jié)構(gòu)的對(duì)象: ~~~ > (setf *print-circle* t ) T > x #1=(A . #1#) ~~~ 如果你需要,你也可以使用?`#n=`?和?`#n#`?這兩個(gè)讀取宏,來(lái)自己表示共享結(jié)構(gòu)。 `cdr-cicular`?列表十分有用,比如,可以用來(lái)表示緩沖區(qū)、池。下面這個(gè)函數(shù),可以將一個(gè)普通的非空列表,轉(zhuǎn)換成一個(gè)對(duì)應(yīng)的`cdr-cicular`?列表: ~~~ (defun circular (lst) (setf (cdr (last lst)) lst)) ~~~ 另外一種環(huán)狀列表叫做?`car-circular`?列表。`car-circular`?列表是一個(gè)樹,并將其自身當(dāng)作自己的子樹的結(jié)構(gòu)。因?yàn)榄h(huán)是通過(guò)一個(gè)`cons`?的?`car`?形成的,所以叫做?`car-circular`。這里構(gòu)造了一個(gè)?`car-circular`?,它的第二個(gè)元素是它自身: ~~~ > (let ((y (list 'a ))) (setf (car y) y) y) #i=(#i#) ~~~ 圖 12.12 (右) 展示了其結(jié)構(gòu)。這個(gè)?`car-circular`?是一個(gè)正規(guī)列表。?`cdr-circular`?列表都不是正規(guī)列表,除開一些特殊情況?`car-circular`?列表是正規(guī)列表。 一個(gè)列表也可以既是?`car-circular`?,又是?`cdr-circular`?。 一個(gè)?`cons`?的?`car`?和?`cdr`?均是其自身: ~~~ > (let ((c (cons 11)) ) (setf (car c) c (cdr c) c) c) #1=(#1# . #1#) ~~~ 很難想像這樣的一個(gè)列表有什么用。實(shí)際上,了解環(huán)形列表的主要目的就是為了避免因?yàn)榕既灰蛩貥?gòu)造出了環(huán)形列表,因?yàn)?,將一個(gè)環(huán)形列表傳給一個(gè)函數(shù),如果該函數(shù)遍歷這個(gè)環(huán)形列表,它將進(jìn)入死循環(huán)。 環(huán)形結(jié)構(gòu)的這種問(wèn)題在列表以外的其他對(duì)象中也存在。比如,一個(gè)數(shù)組可以將數(shù)組自身當(dāng)作其元素: ~~~ > (setf *print-array* t ) T > (let ((a (make-array 1)) ) (setf (aref a 0) a) a) #1=#(#1#) ~~~ 實(shí)際上,任何可以包含元素的對(duì)象都可能包含其自身作為元素。 用?`defstruct`?構(gòu)造出環(huán)形結(jié)構(gòu)是相當(dāng)常見(jiàn)的。比如,一個(gè)結(jié)構(gòu)?`c`?是一顆樹的元素,它的?`parent`?字段所指向的結(jié)構(gòu)?`p`?的?`child`?字段也恰好指向?`c`?。 ~~~ > (progn (defstruct elt (parent nil ) (child nil) ) (let ((c (make-elt) ) (p (make-elt)) ) (setf (elt-parent c) p (elt-child p) c) c) ) #1=#S(ELT PARENT #S(ELT PARENT NIL CHILD #1#) CHILD NIL) ~~~ 要實(shí)現(xiàn)像這樣一個(gè)結(jié)構(gòu)的打印函數(shù) (`print-function`),我們需要將全局變量?`*print-circle*`?綁定為?`t`?,或者避免打印可能構(gòu)成環(huán)的字段。 ## 12.8 常量結(jié)構(gòu) (Constant Structure)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#constant-structure "Permalink to this headline") 因?yàn)槌A繉?shí)際上是程序代碼的一部分,所以我們也不應(yīng)該修改他們,或者是不經(jīng)意地寫了自重寫的代碼。一個(gè)通過(guò)?`quote`?引用的列表是一個(gè)常量,所以一定要小心,不要修改被引用的列表的任何?`cons`。比如,如果我們用下面的代碼,來(lái)測(cè)試一個(gè)符號(hào)是不是算術(shù)運(yùn)算符: ~~~ (defun arith-op (x) (member x '(+ - * /))) ~~~ 如果被測(cè)試的符號(hào)是算術(shù)運(yùn)算符,它的返回值將至少一個(gè)被引用列表的一部分。如果我們修改了其返回值, ~~~ > (nconc (arith-op '*) '(as i t were)) (* / AS IT WERE) ~~~ 那么我就會(huì)修改?`arith-op`?函數(shù)中的一個(gè)列表,從而改變了這個(gè)函數(shù)的功能: ~~~ > (arith-op 'as ) (AS IT WERE) ~~~ 寫一個(gè)返回常量結(jié)構(gòu)的函數(shù),并不一定是錯(cuò)誤的。但當(dāng)你考慮使用一個(gè)破壞性的操作是否安全的時(shí)候,你必須考慮到這一點(diǎn)。 有幾個(gè)其它方法來(lái)實(shí)現(xiàn)?`arith-op`,使其不返回被引用列表的部分。一般地,我們可以通過(guò)將其中的所有引用(?`quote`?) 替換成?`list`來(lái)確保安全,這使得它每次被調(diào)用都將返回一個(gè)新的列表: ~~~ (defun arith-op (x) (member x (list '+ '- '* '/))) ~~~ 這里,使用?`list`?是一種低效的解決方案,我們應(yīng)該使用?`find`?來(lái)替代?`member`: ~~~ (defun arith-op (x) (find x '(+ - * /))) ~~~ 這一節(jié)討論的問(wèn)題似乎只與列表有關(guān),但實(shí)際上,這個(gè)問(wèn)題存在于任何復(fù)雜的對(duì)象中:數(shù)組,字符串,結(jié)構(gòu),實(shí)例等。你不應(yīng)該逐字地去修改程序的代碼段。 即使你想寫自修改程序,通過(guò)修改常量來(lái)實(shí)現(xiàn)并不是個(gè)好辦法。編譯器將常量編譯成了代碼,破壞性的操作可能修改它們的參數(shù),但這些都是沒(méi)有任何保證的事情。如果你想寫自修改程序,正確的方法是使用閉包 (見(jiàn) 6.5 節(jié))。 ## Chapter 12 總結(jié) (Summary)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#chapter-12-summary "Permalink to this headline") 1. 兩個(gè)列表可以共享一個(gè)尾端。多個(gè)列表可以以樹的形式共享結(jié)構(gòu),而不是共享頂層列表結(jié)構(gòu)??赏ㄟ^(guò)拷貝方式來(lái)避免共用結(jié)構(gòu)。 2. 共享結(jié)構(gòu)通??梢员缓雎?,但如果你要修改列表,則需要特別注意。因?yàn)樾薷囊粋€(gè)含共享結(jié)構(gòu)的列表可能修改所有共享該結(jié)構(gòu)的列表。 3. 隊(duì)列可以被表示成一個(gè)?`cons`?,其的?`car`?指向隊(duì)列的第一個(gè)元素,?`cdr`?指向隊(duì)列的最后一個(gè)元素。 4. 為了提高效率,破壞性函數(shù)允許修改其輸入?yún)?shù)。 5. 在某些應(yīng)用中,破壞性的實(shí)現(xiàn)更適用。 6. 列表可以是?`car-circular`?或?`cdr-circular`?。 Lisp 可以表示圓形結(jié)構(gòu)和共享結(jié)構(gòu)。 7. 不應(yīng)該去修改的程序代碼段中的常量形式。 ## Chapter 12 練習(xí) (Exercises)[](http://acl.readthedocs.org/en/latest/zhCN/ch12-cn.html#chapter-12-exercises "Permalink to this headline") 1. 畫三個(gè)不同的樹,能夠被打印成?`((A)?(A)?(A))`?。寫一個(gè)表達(dá)式來(lái)生成它們。 2. 假設(shè)?`make-queue`?,?`enqueue`?和?`dequeue`?是按照?qǐng)D 12.7 中的定義,用箱子表式法畫出下面每一步所得到的隊(duì)列的結(jié)構(gòu)圖: ~~~ > (setf q (make-queue)) (NIL) > (enqueue 'a q) (A) > (enqueue 'b q) (A B) > (dequeue q) A ~~~ 1. 定義一個(gè)函數(shù)?`copy-queue`?,可以返回一個(gè) queue 的拷貝。 2. 定義一個(gè)函數(shù),接受兩個(gè)輸入?yún)?shù)?`object`?和?`queue`?,能將?`object`?插入到?`queue`?的首端。 3. 定義一個(gè)函數(shù),接受兩個(gè)輸入?yún)?shù)?`object`?和?`queue`,能具有破壞性地將?`object`?的第一個(gè)實(shí)例 (?`eql`?等價(jià)地) 移到?`queue`?的首端。 4. 定義一個(gè)函數(shù),接受兩個(gè)輸入?yún)?shù)?`object`?和?`lst`?(?`lst`?可能是?`cdr-circular`?列表),如果?`object`?是?`lst`?的成員時(shí)返回真。 5. 定義一個(gè)函數(shù),如果它的參數(shù)是一個(gè)?`cdr-circular`?則返回真。 6. 定義一個(gè)函數(shù),如果它的參數(shù)是一個(gè)?`car-circular`?則返回真。 腳注 [1] | 比如,在 Common Lisp 中,修改一個(gè)被用作符號(hào)名的字符串被認(rèn)為是一種錯(cuò)誤,因?yàn)閮?nèi)部的定義并沒(méi)聲明它是從參數(shù)復(fù)制來(lái)的,所以必須假定修改傳入內(nèi)部的任何參數(shù)中的字符串來(lái)創(chuàng)建新的符號(hào)是錯(cuò)誤的。 [2] | 函數(shù)名稱中 n 的含義是 “non-consing”。一些具有破壞性的函數(shù)以 n 開頭。
9久久国产精品一区二区| 999精品插丰满少妇人妻| 欧美日韩在线卡一卡二卡三| 亚洲欧美日产人妻| 欧美高清在线视频99| 高清一区二区三区日本4| 99精品视频在线看17| 思思久久国产精品视频| 视频一区视频二区三区| 精品97人妻无码中文永久| 久久视频这里都是精品| 素人阁久久久久精品人妻| 亚洲欧洲色图动图| 婷婷激情五月天图片| 91精品久久久久久久久不卡网站| 国产欧美日韩精品专区黑人 | 91久久婷婷国产麻豆精品| 欧美激情欧美情色成人在线| 久久亚洲熟妇中文字幕| 亚洲av微乳在线| 明天我们好好过高清免费| 高清一区二区日韩视频精品| 91久久精品日日躁夜夜躁| 青青草成人影院在线观看| 99久久久99久久91熟女| 亚洲不卡一区av| 日韩午夜激情福利免费| 久久97久久免费视频| 青青草久久大香蕉| 久久精品国产亚洲av久丨| 日韩欧美在线视频第一页| 欧美激情电影在线观看不卡 | 久久99免费成人在线| 日本中文字幕一区二区在线视频| 国产美女深喉口爆吞精免费| 精品乱码一区二区三四五六区| 在线中文字幕第二页| 麻豆精品123在线观看| 久久久亚洲在线视频| 日韩欧美国产成人一区| 国产99久久久国产精品成人免费 | 婷婷 少妇 av| 亚洲人妻中文字幕av首页| 亚洲激情网在线播放| 另类欧美亚洲中文综合| 97人妻人人揉人人澡人人爽国产| 亚洲人的午夜影院| 久久久成人在线免费视频| 91熟女视频在线观看| 青青草久久大香蕉| 亚洲激情 欧美激情| av久久伊人精品中文字幕| 安斋拉拉中文字幕在线| 美国av 在线播放| av激情网站在线观看| 国产精品99久久久高清| 国产日韩一区二区三区啪啪啪| 国产成人一区二区三区在线视频| 欧美激情电影在线观看不卡| 一级久久久久久久18| 人妻夜夜爽天天爽麻豆| 国语一区二区在线观看| 亚洲av不卡码在线看| 一本大道av伊人久久综合| jizzhd国产剧情| 日韩人妻插舔激情午夜| 日韩尤物人妻av在线网| 欧美爱情动作片在线一区| 99re6热在线视频免费观看| 国产 欧美 日韩 视频| 四虎国产精品久久免费精品| 精品久久精品久久久久| 加勒比精品一区二区三区| 中文字幕一区二区不卡顿| 日韩成视频在线播放| 日韩欧美三级一区二区在线观看 | 久久亚洲精品无码系列客服| 亚洲精品久久第一页| 99久久久99久久91熟女| 蜜臀av日韩特黄大片| 日韩中文字幕理伦| 在线中文免费黄色| 少妇惨叫久久久久久久| 日韩在线中文字幕不卡| 欧美一级黄片视频看看| 国产成人av最新网址| 人妻丰满一区二区三区| 另类蜜桃刺激视频在线观看| 美女免费一二三区视频| 国产av一区二区三区天美| 亚洲成人久久久久| 精品人妻二区中文字幕| 亚洲综合色激情五月| 日韩亚洲图色在线| av日韩在线有码a区| 国产日韩欧美成人一二三区| 亚洲av狠狠地操你| 67914熟女在线观看| 少妇激情视频一区二区| 亚洲日韩视频高清在线观看| 久久视频免费有精品| 另类欧美亚洲中文综合| 三级亚洲天堂亚洲天堂| 精品欧美日韩国产在线| 久久久久久久夜精品精品| 久久视频黄色观看网站| 欧美三级中文字幕久久精品| 一本久久久久久久18| 人妻熟女视频免费观看| 精品999久久久一免费ww| 另类欧美亚洲中文综合| 国产精品久久久久成人片| 大香蕉影视日本大香蕉97| 亚洲 自拍偷拍 欧美| 久久久久999久久日| 亚洲 自拍偷拍 欧美| 麻豆成人在线免费观看视频| 欧美日韩精品成人在线| 日韩一级黄色大片免费观看| 天天日天天干天天色| 精品蜜臀久久久久抄底| 日本18禁片免费久久| 久久久久久久黄色午夜精品| 人人狠狠久久综合网| 亚洲欧洲偷拍自拍| 韩国女团午夜大尺度福利| 亚洲综合成人久久av| 久久爱免费视频16| 91精品久久久久久五月天| 日韩欧美一级在线视频| 日本东京热天天日天天干| 国产精品99精品一区二区三区∴| 日韩三级伦理片免费看| 天天色天天干天天舔| 中文字幕理伦福利片| 97精品久久人人爽人人爽| 日韩亚洲丝袜系列| 日韩厕所偷拍美女| 久久精品国产av网| 亚洲激情 欧美激情| youwu视频在线| 国产欧美日韩精品专区黑人| 亚洲综合精品久久| 成人午夜激情福利片| 国产91色在线i免费| 久久国产精品人妻酒店| 亚洲欧洲av在线| 久久久久国产精品夜夜夜| av熟妇翔田千里俱乐部| av日韩中文字幕人妻| 在线人妻国产精品| 蜜臀av 麻豆av| 明天我们好好过高清免费| 亚洲一线产区二线产区区| 少妇人妻成人在线| 97cao瑟瑟在线观看| 伊人久久婷婷av| 午夜国产福利电影| www.199麻豆在线视频| 欧美精品一区二区三区蜜臀| 91麻豆精品91久久久久同性| 中文字幕亚洲专区欧美| 日韩欧美 国产精品| 亚洲中文字幕福利视频| 91熟女视频在线观看| 久久伊人精品青青草原| 国产一区二中文字幕在线免费观看 | 88av亚洲精品日韩一区二区| 久久精品色婷婷国产网站| 天天日天天干天天爱天天| 亚洲欧美在线制服丝袜| 亚洲自拍偷拍 av| 91欧美亚洲综合网| 亚洲av亚洲av亚洲| 日本久久久大片中文字幕| 欧美自拍 亚洲偷拍| www.亚洲成人色| 欧美日韩亚洲国产ay| 99久久国语露脸精彩对白| 国产精品久久久久国产| 成人黄视频在线播放| 中文字幕av久久爽爽| 亚洲五月婷婷视频| 亚洲一区二区三二区厕所偷拍 | 国产亚洲欧美日韩在线首页| 中文字幕亚洲专区欧美| 天天插天天日天天舔| 亚洲综合成人久久av| 91人妻露出精品在线| 国产欧美版日韩综合| 97色视频在线看视频| 日韩a视频在线播放视频| 天天在线天天综合网色| 日韩欧美综合一区二区在线| 久久精品国产91久久麻豆自制| 欧美中文字幕在线观看视频| 丰满熟女一区二区三区在线| 久久蜜臀精品一区二区| 日韩国产91综合精品| 精品99国内中文字幕| 玖玖玖玖日在线视频| 日韩电影黄色免费| 久久久久精美免费观看视频| 久久国产精品色av免费看| 亚洲情欲大片在线观看| 91偷伦一区二区三区蜜臀| 国产一级av国产免费| 国产麻豆剧传媒精品视频| 欧美一区二区三区激情无套| 免费精品国产日韩热久久| 亚洲综合色激情五月| jizzhd国产剧情| 玖玖玖玖日在线视频| 超碰97在线观看国产| 久久精品国产久精果冻传媒| 91人妻露出精品在线| 五月天色婷婷av在线| 日韩av在线专区| 91高级会所在线播放| 成人黄片av在线播放| 国产欧美精品久久无广告| 亚洲欧美日韩在线中文字幕小| 久久精品人妻中文字幕一区| 99久久久99久久91熟女| 日韩一区二区三区水蜜桃| 成人黄视频在线播放| 91国产手机视频在线观看| 91人妻精品久久久久久久久| av成人教育在线播放| 天天日天天干天天爱天天| av蜜臀懂色啊啊啊| 天美麻豆成人av精品小说| 亚洲欧美av在线观看| 熟女激情一区二区三区| 久久99永久免费看| 人人妻人人澡人人爽国产一区| 亚洲一区二区三区久久aa| 制服巨乳人妻在线| 久久精品国产亚洲av不卡性色| 日韩 美女 在线观看| 日韩精品在线视频播放| 日日碰狠狠躁久久躁一区二区| 999精品插丰满少妇人妻| 久久av一区中文字幕| 99久久久99久久91熟女| 青青草青青操在线播放| 日韩在线免费视频精品| 美女在线观看亚洲一区| 欧美人妻系列,中文字幕| 日韩av在线精品观看| 亚洲av色图com| 2001年亚洲区十强赛| 91久久精品日日躁夜夜躁| 99精品视频69v精品视频| 国产熟女高潮av77777| 亚洲欧美日韩一二三四五六七区| av传媒高清影院免费| 青青草成人影院在线观看| 久久久久久久免费女人体| 91人妻人人妻人人爽| 久久久久久精品日韩| youwu视频在线| 91综合精品国产丝袜长腿| 国产99不卡免费在线观看| 一区二区三区内射美女毛片| 97网视频免费在线观看| 麻豆精品一区在线免费观看| 国产又大又猛又黄的视频| 五月综合缴情婷婷六月| 精品日韩色国产在线观看| 9久热这里有国产精品| 色综合色综合色综合久久| 中文字幕亚洲中文字幕| 欧美日韩国产一区二区三区免费 | 久久伊人亚洲综合网| 国产三级久久久999111| 日本亚洲天堂久久| 亚洲成人av久久久久| 久久久久999久久日| 国产高潮好爽受不了了视频| 欧美一区二区精品人妻免费视频 | 女人体内射精一区二区三区| 久久在线人妻熟女高清完整版 | 乱女乱妇熟女熟妇综合站| 精品人妻久久久久中文字幕19禁| 国产成人无码AA精品一区| 亚洲一级av大片| japanese 在线中文字幕| 亚洲成人久久久久| 精品人妻二区中文字幕| 成人免费av在线网站| 亚洲国产精品久久久久婷婷av| 91中文字幕制服诱惑| 人妻日韩精品在线观看视频 | 日韩有码视频在线免费观看| 国产又粗又黄又大又长视频| 国产黄色主播网址大全在线播放| 日韩在线免费视频精品| 福利一福利二福利三| 日韩精品综合免费视频| 亚洲视频欧美视频另类| 亚洲激情有码一区二区| 五月婷婷六月丁香资源| 99爱99久久久久久久久久| 人人狠狠久久综合网| 日本中文字幕久久免费精品| 中文字幕一区二区三区六区9区| 一区二区三区精品乱子伦……| 亚洲熟妇av日韩熟妇在线| 亚洲男人天堂久久| 免费色婷婷在线视频| 欧美熟女人妻一区二区三区| 久久视频免费有精品| av一级二级三级久久久| 九九re精品免费视频| 久久一本麻豆天美欧美日韩| 高潮久久久久久久av免费| www.视频一区二区三区| 麻豆网站在线免费看| 午夜三级中文字幕视频网址大全| 国产精品首页在线播放| 欧美人妻系列,中文字幕| 在线不卡日韩视频播放| 亚洲综合成人久久av| 日本女优中文字幕在线| 日韩av中文字幕一区| 国产一区二区高清在线播放| 另类h小视频在线观看| 久久精品国产91久久麻豆自制| 亚洲五月婷婷视频| 日韩成人av影视在线观看| av国偷自产自拍自在线| 亚洲.欧美.日韩.| 婷婷亚洲免费基地| 国产精品久久久久成人片| 国产 日韩 欧美 日本| 国产又大又猛又黄的视频| 久久久久久添逼视频| 久久综合中文字幕一区二区三区| 中文字幕亚洲欧美国产| 日产av一区二区在线观看| 五月婷婷久久久久久久久| 欧美一区二区理论片在线观看| 综合久久综合久久综合久久| 欧美日韩激情在线视频观看| 亚洲人妻中文字幕一区二区| 欧美人妻系列,中文字幕| 日韩男女av在线观看| 日本精品久久久久中人妻| 91免费版下载成人| 亚洲一区二区三二区厕所偷拍 | 亚洲一线产区二线产区区| 五月天丁香婷婷国产| 人人妻人人澡人人看| 日韩欧美国产成人一区| 亚洲视频另类专区| 久久久久国产精品夜夜夜| 最新精品成人在线| 精品国产麻豆免费成人网| 亚洲欧洲黄色图区| 欧美熟女人妻一区二区三区 | 福利小视频国产一区| 成人av电影免费版| 日韩精品综合免费视频| 草裙成人精品一区二区三区| 欧美爱情动作片在线一区| 97网视频免费在线观看| 风间由美交换夫中文字幕| 熟女大白屁股在线播放| 日韩a大片在线观看| 久久精品琪琪男人的天堂| 七十路熟女俱乐部| 国产精品久久久久久xxx| 亚洲成a人片7777| 麻豆视传媒官网直接进入免费观看 | 又爽又黄的免费视频91| 日韩精品福利性无码专区| 国产人妻另类综合专区| 日韩在线播放视频1区| 成年人晚上免费看的视频| 欧美视频 亚洲视频| 国产成人无码AA精品一区| 久久久亚洲熟妇熟女ⅹx| 91超碰免费在线播放| 午夜无人影视在线| 久久99精品国产91| 麻豆视传媒官网直接进入免费观看| 日本中文字幕久久免费精品| 高清一区二区三区日本4| 91在线精品国自产拍| 亚洲av电影在线一区二区| 亚洲 欧美 日本 国产| 欧美一级黄片视频看看| 初撮日本五十路人妻| 少妇一区二区在线免费观看 | 亚洲欧美日韩综合专区| 日韩在线免费视频精品| 91人妻九色大屁股| 亚洲国产精品成人精品软件| 99热2这里只有精品| 欧美日韩精品一区电影| 中文字幕一区二区三区六区9区| 亚洲成年人电影天堂| 99免费观看视频在线| 亚洲日韩视频高清在线观看| 久久久久999久久日| 精品一区二区三区四区| 日韩av电影com| 国产一级av国产免费| 久久久亚洲熟妇熟女ⅹx| 欧美日韩国产综合aⅴ| 亚洲制服欧美丝袜| 欧美日韩少妇一二三| 人妻日韩精品在线观看视频 | 成年美女黄色av网站| 亚洲精品久久久久久久久蜜桃| 搡老熟女一区二区三区四区视频| 亚洲国产aⅴ精品一区二区欧美 | 久久午夜福利电影免费试看| 欧美一二三区在线观看| 亚洲国产精品成人精品软件| 国产一区二区三区四区中文字幕 | 七十路熟女俱乐部| 免费色婷婷在线视频 | 国产丝袜香蕉在线观看| 欧美最猛性亚洲精品推荐| 欧美日韩精品亚洲欧美| 亚洲狠狠久久综合一区| 久久五月天天婷婷激情综合| 我要看一级国产黄色绿像| 午夜寻花美女在线| 91porny国产九色| 亚洲欧美国产另类91综合| 日韩av手机在线电影| 91中文字幕制服诱惑| 18禁成年av网站免费看| 制服丝袜亚洲欧美第一| 乱丰满的岳伦在线观看| 女人体内射精一区二区三区| 日韩中文字幕在线网站| 少妇高潮喷水久久久久久桃花| 五月天丁香婷婷国产| 日韩中文字幕有码人妻在线| 999热精品在线观看| 久久久久精美免费观看视频| 国产精品久久久久久xxx| 日韩av福利大片在线观看| 国产精品一区二区三区三级| 天天操天天干天天色| wwxxx中文字幕| 五月综合婷婷婷婷婷婷| 激情黄色开心五月天| 少妇激情视频一区二区| 成人黄片av在线播放| 国产精品99久久电影| 久久行黑国产露脸精品| 一区二区 熟女人妻| 亚洲av微乳在线| 亚洲视频另类专区| 国产美女深喉口爆吞精免费| 国产 欧美 日韩 视频| 成人黄色国产网站在线观看| 91九色porny国产视频| 少妇人妻视频在线观看| 91九色porny国产视频| 国产高潮国产高潮久久久久久91| 国产黄色主播网址大全在线播放| 婷婷免费精品视频在线| 中文字幕婷婷网站| 青青草青青操在线播放| 韩国女团午夜大尺度福利| 自拍偷拍亚洲欧美另类| 国产欧美日韩制服丝袜在线| 日本中文国产字幕| 日本午夜在线免费观看| 亚洲视频另类专区| 中文字幕版婷婷久久| 久久国产精品人妻酒店| 久久五月天天婷婷激情综合| 欧美激情电影在线观看不卡| 91丝袜放荡丝袜脚交| 我要看一级国产黄色绿像| 亚洲日韩视频高清在线观看| 久久一本麻豆天美欧美日韩| 玖玖资源站中文字幕一区二区| 亚洲国模在线视频| 日本av男优巧克力| 欧美日韩精品亚洲欧美| 九九re精品免费视频| 国产中文字幕在线91| 色婷婷精品午夜在线播放| 日韩欧美颜色渔网| 风间由美交换夫中文字幕| 首页国产中文字幕av| 免费精品国产日韩热久久| 91九色porny国产视频| 91在线观看视频,| 欧美日韩激情在线视频观看| 久久久精品国产亚洲av网深田| 亚洲欧洲国产一区二区| 久久人妻久久人妻一区| 国产91久久精品一区二区老| 天天做天天舔天天射| 在线中文字幕第二页| 美女免费一二三区视频| 日韩av中文字幕一区| 日韩欧美三级一区二区在线观看| 亚洲日韩视频高清在线观看| 91国偷自产一区二区三区偷拍| 91在线观看视频,| 色婷婷精品午夜在线播放| 日韩av一区中文| 日韩欧美一级在线视频| 日韩精品综合视频在线| 国产一区二区三区女同| 中文字幕一区二区三区中文字幕| 国产日韩亚洲大尺度高清| 亚洲综合成人久久av| 欧美日韩少妇一二三| 免费看久久久久久久性大片| 久久精品国产亚洲av久丨| 久久精品人人看人人爽| 91在线精品一区二区网站| 中文字幕人妻互换久久视频| 午夜寻花美女在线| 精品一区二区三区四区| 亚洲青青青国产观看视频| 青青青青青欧美在线视频观看| 国产日韩av免费一区二区三区| 91大神精品大长腿在线观看| 亚洲欧洲色图动图| 五月天色图婷婷亚洲| 伊人久久中文字幕综合观看| 亚洲天堂性色综合| 激情黄色开心五月天| 日韩久久久三级电影| 久久久久久网站精品免费| 日韩男女av在线观看| 欧美日韩v中文在线| w疯狂的少妇2做爰韩国| 欧美亚洲av日韩综合一区| 色综合精品一区二区三区| 热久久免费频精品18| 亚洲精品网站成人久久综合| 色婷婷综合免费在线视频| 国产中文字幕在线91| 久久人人爽爽人人爽av| 亚州av一区二区三区.| 日韩国产精品电影网| 日韩欧美一级在线视频| 日本aaaa视频在线观看| 亚洲欧美日韩国产精品综合| 国产精品一二三四在线| 久久人妻少妇嫩草av蜜桃动态图 | 日韩精品福利性无码专区| 国产精品一区二区亚瑟不卡 | 久久久久久精品日韩| 久久97久久免费视频| 亚洲国产欧美日本视频| 国产成人免费精品视频大全| 精品蜜臀久久久久抄底| 99re在线精品国产欧美久久| 天天操,天天干,天天| 久久久久久精品国产成人| 国产精品成人av在线网站| 婷婷激情五月天图片| 日韩av网址在线播放| 中文字幕一线一区和二区| 黑人粗大精品一区二区| 中文字幕人妻一区二区在线看| 日韩欧美xxxx大片| 乱女乱妇熟女熟妇综合站| 亚洲欧美av在线观看| 日本久久久大片中文字幕| 91亚洲精品成人在线| 久久九特黄的免费大片| 中文字幕av最新资源| 91精品国产综合久久久久久粉嫩| 日韩厕所偷拍美女| 日韩人妻插舔激情午夜| 人妻中文字幕一二三区| 伊人久久热青青草| av日韩在线有码a区| 97久久碰人妻一区二区三区四| 秋霞在线观看色哟哟视频| 少妇人妻一区2区中文字幕| 思思久久国产精品视频| 蜜桃精品一区二区三区在| 久久久久999蜜桃视频| 91在线精品国自产拍| 日韩日韩av在线| 色图av亚洲综合| 国产精品欧美日韩五月香蕉| 在线免费观看日韩精品视频| 亚洲中文字幕成人久久| 92视频影院视频影院麻豆| 日韩一级黄色大片免费观看 | 2020日韩中文字幕| 91精品一二三区在线观看| 久久精品久久一区二区三区| 久久久亚洲熟妇熟女ⅹx| 风间由美交换夫中文字幕| 99爱99久久久久久久久久| 国产三级久久久999111| 最美人妻一区二区三区| 日韩av在线观看卡一卡| 欧美日本韩国乱搞视频| 色播网站在线播放| 综合 另类 自拍| 亚洲av色图com| 成人黄色午夜污网站在线观看| 久久久久精美免费观看视频| 91精品欧美久久久久视频| 久久激情毛片大放送| 亚洲制服欧美丝袜| 久久久久久人妻无码| 男人的天堂久久久亚洲| 色yeye香蕉凹凸人妻三区| 欧美人妻一区二区三区在线播放| 草裙成人精品一区二区三区| 日韩精品在线视频播放| 婷婷丁香花五月天| 丰满人妻一区二区三区视频看看| 天天色天天日天天操| 日韩欧美激情入口| 久久婷婷亚洲中文一区二区 | 少妇高潮喷水久久久久久桃花| 丰满少妇精品一区二区| 日韩精品午夜免费观看| 在线国产小视频麻豆| 亚洲熟妇av熟妇在线| 亚洲成人日韩丶av| 97偷拍视频在线观看| 亚洲精品一区二区三区丝袜| 日本av熟女人妻| 丰满大屁股熟妇猛交xxx| 三级亚洲天堂亚洲天堂| 成人黄色国产网站在线观看| 亚洲成a人片,77777| 精品国产久久久久蜜臀| 亚洲欧美日韩国产另类专区| av岛国不卡在线观看| 精品一区二区三区四区| 一级片一级片久久精品电影网电影 | 久久伊人精品青青草原| 亚洲av不卡码在线看| 91九色porny国产视频| 另类h小视频在线观看| 日韩中文字幕在线综合网| 亚洲精品图片第十八页| 久久国产精品——国产精品| 成人午夜激情福利片| 日韩国产91综合精品| 国产精品久久久久久久久久网站| 久久视频免费有精品| 久久这里只有欧美精品| av传媒高清影院免费| 日韩精品刺激视频| 亚洲 欧美 制服 人妻| 日韩美女主播人体视频自拍首页| 在线观看日韩美视频一区| 亚洲视频欧美视频另类| 国产熟女高潮av77777| 亚洲自拍偷拍色图区| 99re热在线精品视频9| 久久成人福利视频资源| 天天色天天干天天舔| japanese 在线中文字幕| 精品无码久久久久久毛片| 精品国产精品视频免费在线观看| 国产麻豆一级美女精品| 亚洲精品久久第一页| 国产精品久久欠久久al换脸综合| 日韩欧美亚州综合久久| 91久久亚洲成人精品| 超碰在线免费成人午夜剧场97| 素人阁久久久久精品人妻| 日韩精品福利性无码专区| 色视频精品视频在线观看| 日韩av中文网址| 婷婷在线综合观看视频| 99国产在线 精品 视频| 天天干天天天天射天天操| 丰满少妇精品一区二区| 久久久亚洲精品久久仙| 日本vs欧美一区二区三区| 中文字幕国产在线观看| 制服丝袜亚洲欧美第一| 色男人天堂东京热| 久久久久国产麻豆婷婷| 久久久久久少妇被弄高潮| 乱女乱妇熟女熟妇综合站| 日韩一区二区三区乱码| 久久视频黄色观看网站| 91沈先生探花极品在线| 日韩中文字幕有码人妻在线| 亚洲制服高清中文字幕| av岛国不卡在线观看| 91人妻精品久久久久久久久| 丰满少妇精品一区二区| 成人av激情网一区二区三区| 亚洲欧美自拍偷拍在线观看| 人人妻人人爱碰千| 国产91久久精品一区二区老| 国产一区二区高清在线播放| 欧美一区二区三区aa大片| 欧美一区二区三区综合色| 日韩av午夜精品| 玖玖资源站中文字幕一区二区 | 在线观看色有小视频| 91国产手机视频在线观看| 久久免费视频精彩视频| 人妻人人揉人人澡人人| 亚洲少妇黄色一级片| 亚洲情色av网站| av蜜臀懂色啊啊啊| 91久久久久久久久久粉嫩| 玖玖玖玖日在线视频| 久久婷婷激情综合色综合俺也去| 久久久久中文字幕免费久久久久久| 视频免费在线观看91| 欧美日韩精品综合在线一区二区| 91精品久久久久久五月天| 久久久久久久久久久久久熟女a∨| 国产一区二区久久久久久| 国产精品一区二区亚瑟不卡| 丝袜日韩中文字幕| 亚洲欧洲黄色图区| 综合 另类 自拍| 婷婷亚洲免费基地| 日韩中文字幕有码人妻在线| 九九re精品免费视频| 午夜精品久久婷婷蜜桃| 免费精品国产日韩热久久| 99re在线精品国产欧美久久| 99精品视频69v精品视频| 玖玖资源站中文字幕一区二区| 91欧美亚洲综合网| 久久久久久久久久无吗| 日日碰狠狠躁久久躁一区二区| 欧美一区二区理论片在线观看| 午夜在线看1000集| 日本美女大学生一区二区三区| 视频免费在线观看91| 亚洲中文字幕成人久久| w疯狂的少妇2做爰韩国| 国产欧美精品久久无广告| 91亚洲精品成人在线| 成年人晚上免费看的视频| 久久精品人人看人人爽| 精品国产久久久久99| 天堂av最新资源在线| 午夜在线观看高清完整版| 日韩av在线观看免费看看| 88在线观看91蜜桃国自产| 99精品高清视频一区二区| 日韩精品久久久久久久软件| 国产精品福利久久久久久久| 日本精品久久久久中人妻| 国产91极品身材白皙| 五月爱婷婷六月丁香性| 亚洲综合在线伊人| 热香蕉和冷香蕉功效一样吗| 日本av都有哪些系列| 免费av网站在线浏览| 68国产成人综合久久精品| 中文字幕日韩久久精品tv| 国产自拍 偷拍 在线| 午夜国产福利电影| 国产麻豆一级美女精品| 蜜臀av 麻豆av| 久久久久精美免费观看视频| 日本av都有哪些系列| 国语一区二区在线观看| 欧美精品国产精品久久久| 最新美女激情av| 久久这里只有精品久| 中文字幕一区二区不卡顿| 欧美日韩精品一区电影| 91中文字幕制服诱惑| 2020日本中文字幕| 日本精品久久久久中人妻| 日韩中文字幕在线综合网| 欧美不卡高清一区二区三区 | 制服丝袜亚洲欧美第一| 色婷婷综合免费在线视频| 人妻办公室被强d在线电影| 国产三级久久久999111| 亚洲熟妇免费在线视频| 热香蕉和冷香蕉功效一样吗| 福利小视频国产一区| 91国偷自产一区二区三区老熟女| 七十路熟女俱乐部| 人妻办公室被强d在线电影| 久久精品熟女人妻一区二区三区| 亚洲欧洲色图动图| 色综合久久999| 玖玖资源站中文字幕一区二区| 久久五月婷婷综合视频| 日韩午夜激情福利免费| 日韩av在线不卡网站| 久久av资源男人站| 秋霞电影韩国一区二区二区三区 | 亚洲精品一区二区三区丝袜| 中文字幕一区二区三区六区9区| 久久99精品久久久久久三级| 久久免费视频精彩视频 | 中文字幕av久久爽爽| 日本高清理论片中文字幕| 日本午夜在线免费观看| 97久久碰人妻一区二区三区四| 国产99成人自拍视频| 日韩草比网站在线免费观看| av青青草原在线观看| 久久精品熟女人妻一区二区三区| 国产一级av国产免费| 91在线精品一区二区网站| 欧美人妻a∨中文字幕在线| 亚洲伊人网在线观看| 亚洲激情 欧美激情| 蜜臀av日韩特黄大片| 91中文字幕制服诱惑| 精品一区二区国产在线观看| 亚洲 欧洲 日韩 人妻| 国语黄色淫秽录像带| 天美麻豆成人av精品小说| 亚洲 欧美 自拍 中文| 在线不卡日韩视频播放| 亚洲图色91东京热| 国产精品福利久久久久久久| 欧美最猛性亚洲精品推荐| 亚洲视频另类专区| 91高级会所在线播放| 91偷伦一区二区三区蜜臀| 久久久96精品久久久| 国产成人精品久久综合| 国产欧美日韩亚洲另类第一第二页 | 18禁成年av网站免费看| 91精品久久久久久五月天| 国产精品久久久久久久久久网站 | 中文字幕+人妻熟女| 国产欧美版日韩综合| 国产视频av一区二区| 日韩手机在线一区二区三区| 亚洲国产aⅴ精品一区二区欧美| 日韩欧美不卡一区二区三区五区| 久久精品美国亚洲av伦理| 青青青在线视频自拍| 免费av网站在线浏览| 久久免费视频精彩视频| 88av亚洲精品日韩一区二区| 婷婷激情免费视频| 国产激情综合视频在线观看| 青草青草视频免费2在线观看 | 91九色porny国产视频| 亚洲激情国产一区| 在线观看日韩中文| 亚洲最黄色的视频| 99热这里只有的精品| 亚洲国产精品国自产拍av麻豆| 五月婷婷久久久久久久久| 婷婷激情免费视频| 欧美一二三区在线观看| 亚洲视频另类专区| 青青草久久大香蕉| 色综合久久999| 国产99成人自拍视频| 成人黄色国产网站在线观看| 最新美女激情av| 人人狠狠久久综合网| 国产自拍 偷拍 在线| 国产精品色呦呦视频免费看| 91天仙tv国产福利精品| 99热在线精品免费观看| 欧美日韩综合国产精品| 91九色porny国产视频| 蜜桃av 1区二区| 人人妻人人澡人人爽dv| 久久久久久添逼视频| 亚洲国产aⅴ精品一区二区欧美| 亚洲成年人黄色片| 少妇人妻视频在线观看| 日韩a大片在线观看| 麻豆免费国产福利免费国产福利| 亚洲.欧美.日韩.| 天天操天天干天天妻| 亚洲欧洲黄色图区| 亚洲欧洲黄色图区| 欧美高清在线视频99| 亚洲香蕉av电影| av福利网站在线观看| 91九色蝌蚪熟妇出轨| 日韩a v日日夜夜| 日本女同性恋视频| 国产精品一区二区三区三级| 久久精品琪琪男人的天堂| 日韩欧美xxxx大片| 国产成人精品久久久久久蜜臀| 精品无人区一区二区三区竹菊| 伊人久久婷婷色综合98网| av在线免费在线观看av| 自拍偷拍亚洲欧美另类| 久久五月天天婷婷激情综合| 日韩欧美一级在线视频| 亚洲精品熟女中文字幕| 性欧美另类sex极品free| 日韩av中文字幕一区| 日产av一区二区在线观看| 精品国产一区二区三区无码蜜桃 | 亚洲 欧美 制服 人妻| 亚洲欧美日韩一二三四五六七区| 亚洲一级av大片| 99热在线精品免费观看| 午夜精品久久久久久久久二区三区 | 青草青草视频免费2在线观看 | av成人教育在线播放| 亚洲五月婷婷视频| 日韩av午夜免费| 日韩欧美颜色渔网| 337p亚洲精品色噜噜| 亚洲国产精品五月天久久久| 国产精品午夜蜜av| 韩国女团午夜大尺度福利| 欧美高清在线视频99| 国产免费一级a男人的天堂| 亚洲伊人网在线观看| 国产又大又长又粗又硬免费视频| 亚洲国产aⅴ精品一区二区欧美| 日本午夜在线免费观看| 亚洲精品久久久久久无几年桃| 天天日天天干天天色| 99国产在线拍91揄自揄视| 成人免费av在线网站| jizzhd国产剧情| 综合久久综合久久综合久久| 精品人妻久久久久中文字幕19禁 | 日韩成人av在线电影观看| 综合激情五月天久久| 久久激情毛片大放送| 十八禁久久久久久久久久久久久久| 日本精品久久久久中人妻| av在线免费观看网站大全| 日韩精品久久久久久久软件| www.199麻豆在线视频| 久久成人网男人的天堂| 天天干天天草天天日天天天射伊人| 我要看一级国产黄色绿像| 99九九99九九热视频| 精品人妻二区中文字幕| 91精品久久久久久久久不卡网站| 日韩a大片在线观看| 国产91极品身材白皙| 欧美中文字幕视频网| 福利日韩精品中文字幕专区| 国产又大又长又粗又硬免费视频 | 亚洲人妻中文字幕av首页| 亚洲欧洲av在线| 成人av激情网一区二区三区| 欧美激情 另类视频 亚洲| 久久这里只有欧美精品| 最美人妻一区二区三区| 麻豆中文字幕av在线| 中文字幕国产在线观看| 国内精品久久久久久久久久清纯 | 天天操天天爽天天舔天天操一操| 厕所偷拍视频一区二区三区| 天天干天天天天射天天操| 男人亚洲天堂2018| 国产成人av最新网址| 天天操,天天干,天天| 精品乱码一区二区三区四区| 婷婷免费精品视频在线| 伊人久久婷婷色综合98网| 久久久精品99国产国产精| 精品欧美日韩国产在线| 中文字幕精品久久伊人| 亚洲国模私拍视频| 日韩草比网站在线免费观看| 玖玖资源站中文字幕一区二区| 精品人妻一区二区三区√| 91久久国产综合久久91在线| 欧美日韩精品在线观看免费| 初撮日本五十路人妻| 91一区二区精品在线| 精品人妻熟女在线视频| 日韩厕所偷拍美女| 少妇高潮喷水久久久久久桃花| 亚洲精品,欧美日韩| 美国av 在线播放| 久久久久女优免费视频| 国产人妻另类综合专区| 人妻一区二区中文字幕在线| 中文字幕熟女人妻在线网页| 日韩在线播放视频1区| 亚洲精品熟女中文字幕| 一区二区三区四区中文字幕| 亚洲人妻中文字幕一区二区| 亚洲自拍偷拍 av| av色香蕉一区二区三区| 色男人天堂东京热| 欧美一级黄片视频看看| 国产日韩欧美春色另类小说| 日本av男优巧克力| 国产欧美一区二区二区精品| 精品成人1区2区3区在线看片| 亚洲香蕉av电影| 日韩欧美三级一区二区在线观看| 久久av资源男人站| 久久久国产精品尤物av| 初撮日本五十路人妻| 成人黄片av在线播放| 久久人妻久久人妻一区| 国产一区二区视频大全床| 亚洲欧美丝袜精品久久直播| 亚洲不卡一区av| 日韩精品少妇人妻熟女| 中文字幕熟女人妻乳一区二区| 久久男人精品男人天堂免费视频 | 青青草久久大香蕉| 91久久国产综合久久91在线| 91人妻精品久久久久久久久| 国产激情综合视频在线观看| 久久视频精彩在线观看| 久久亚洲精品日韩高清| 亚洲青青青国产观看视频| 亚洲女人中文字幕在线| 精品人妻一区二区三区√| 国产91在线播放精品| 国产精品成人av麻豆| 欧美日韩精品成人在线| 日韩中文字幕在线综合网| 国产成人精品视频免费网站| 欧美日韩精品成人在线| 亚洲久久久久久久人妻| 久久久久国产精品夜夜夜| 草裙成人精品一区二区三区| av日韩在线免费观看网站| 色婷婷久久久swag精品| av在线免费播放成人| 88av亚洲精品日韩一区二区| 精品国产一区二区三区无码蜜桃| 中文字幕熟女人妻乳一区二区| 亚洲 欧洲 日韩 人妻| 中文字幕亚洲欧美国产| 精品乱码久久久久久蜜臀| 清纯唯美激情五月| 97cao瑟瑟在线观看| 亚洲天堂av电影免费在线| 99久久久99久久91熟女| 免费麻豆国产一区二区三区| 亚洲情色av网站| av日韩中文字幕人妻| 欧美性久久久久久久久久久| 先锋男人资源中文字幕| 99精品高清免费在线视频| 日本女优中文字幕在线| 伊人久久婷婷av| 国产精品一区二区三区三级| 久久久久久久精品综合| 美日韩美女三级电影| 国产乱人妻精品久久久| 亚洲av综合久久伊人| 91中日在线中文字幕| 嫩草一区二区三区四区中文| 久久av一区中文字幕| 中文字幕人妻一区二区在线看| 日韩精品综合视频在线| 日韩美女主播人体视频自拍首页 | av日韩在线有码a区| 精品国产乱码久久久久夜深| 亚洲久久精品午夜| 丰满人妻av白石茉莉奈电影| 国产精品久久久久久久网站门| 日韩在线中文字幕不卡| 日韩欧美一级在线视频| 亚洲成a人片7777| 久操免费福利在线视频观看视频 | 亚洲 免费 在线 观看| 日日夜夜夜视频伊人久久| 篠田优中文字幕在线播 | 在线免费观看日韩精品视频| 日韩欧美激情入口| 99免费观看视频在线| 国产成人免费精品视频大全 | 日韩在线播放视频1区| 久久成人福利视频资源| 欧美日韩在线卡一卡二卡三| 在线国产小视频麻豆| 中文字幕在线有码二区| a级黄片在线免费观看 | 国产av一区二区三区天美| 亚洲精品熟女中文字幕| 91人妻人人澡.人人精品| 秋霞电影韩国一区二区二区三区| 国产精品亚洲精品成人 | japanese 在线中文字幕| 国产精品福利久久久久久久| 亚洲国模在线视频| 日韩欧美综合一区二区在线| 欧美视频 亚洲视频| 麻豆亚州av熟女国产一区二| 日本黄页在线播放日本网站| 日本a级2020在线观看| 97色视频在线看视频| 中文字幕人妻互换久久视频| 高清视频在线观看一区二区三区| 久久亚洲精品无码系列客服| 久久99精品国产91| 午夜在线观看高清完整版| 中文字幕熟女人妻乳一区二区| 免费精品国产日韩热久久| 国产亚洲天堂sss| 国产一级av国产免费| 亚洲av微乳在线| 日韩国产精品电影网| 精品无码久久久久久毛片| 日韩视频在线播放一区二区| youwu视频在线| 色播五月激情四射| 人妻夜夜爽天天爽麻豆| 香蕉久久a v一区二区三区| 88av亚洲精品日韩一区二区| 亚洲天堂av电影免费在线| 日韩成人免费电影三区| 国产精品亚洲精品成人| 三级亚洲天堂亚洲天堂| 国产精品久久久久久久网站门| 欧美一区二区精品人妻免费视频 | 日韩av 自拍偷拍| 亚洲av综合久久伊人| 日韩欧美不卡一区二区三区五区| 国产又粗又硬又长又爽视频| 日韩中文字幕有码人妻在线| 色播五月激情四射| 国产剧情高清在线观看| 91一区二区三区精华液| 日本av都有哪些系列| 大尺度av一区二区三区| 五月婷婷激情四射综合网| 欧洲av偷拍亚洲av偷拍| 91高级会所在线播放| 欧美区 日韩区 国产区| 日韩a v日日夜夜| 99精品高清视频一区二区| 亚洲欧美日韩一区17c| 国产日韩亚洲大尺度高清| 亚洲天堂黄色免费| 欧美爱情动作片在线一区| 日韩草比网站在线免费观看| 激情五月天狠婷婷| 五月爱婷婷六月丁香性| 久久97久久免费视频| 欧美三级中文字幕久久精品| 成人国产一区二区免费| 国产精品首页在线播放| 少妇人妻给我内射视频| 亚洲国模私拍视频| 国产日本精品久久久久| 福利日韩精品中文字幕专区| 日韩美女主播人体视频自拍首页| 亚洲乱精品中文字字幕| 国产精品一区二区久久精品蜜臀| 日韩欧美三级一区二区在线观看| 色播五月激情四射| 久久99永久免费看| 影音在线精品免费国产资源| 偷偷夜夜精品一区二区三区蜜桃 | 三级亚洲天堂亚洲天堂| 精品一区二区国产在线观看| 亚洲图色91东京热| 91免费版下载成人| 日韩欧美在线视频第一页| wwxxx中文字幕| 亚洲激情熟女色图| 成人av电影免费版| 天天色天天干天天舔| 91一区二区精品在线| av青青草原在线观看| 日韩欧美 国产精品| 日韩一区二区三区乱码| 国产欧美精品久久无广告| 精品人妻一区二区三区√| 日本女优中文字幕在线| 欧美日韩成人精品视频| 国产一区二区三区a级毛片| 欧美一区二区三区激情啪啪啪| 日韩精品福利性无码专区| 欧美最猛性亚洲精品推荐| 亚洲乳大丰满中文字幕少妇av| 午夜精品福利小视频| 日韩乱妇乱女熟妇熟女网红| 91中日在线中文字幕| 久久精品美国亚洲av伦理| 国产一区二区三区女同| 国产欧美版日韩综合| 欧美精品国产精品久久久| 日韩欧美颜色渔网| 丰满熟女一区二区三区在线| 视频在线观看黄页| 日韩手机无线看视频| 97人人人欧美人人妻人人| 日韩在线啊啊啊的视频| 亚洲 自拍偷拍 欧美| 清纯唯美激情亚洲综合另类| 国产精品一二三四在线| 亚洲青青青国产观看视频| av蜜臀懂色啊啊啊| 成人在线观看黄色片| 日韩在线播放视频1区| 亚洲精品图片第十八页|