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

淺析數據結構棧和隊列的相互實現

開發 前端
" 編程的本質來源于算法,而算法的本質來源于數學,編程只不過將數學題進行代碼化。"算法,一門既不容易入門,也不容易精通的學問。

[[358323]]

" 編程的本質來源于算法,而算法的本質來源于數學,編程只不過將數學題進行代碼化。"

算法,一門既不容易入門,也不容易精通的學問。

棧和隊列都是用來保存數據的,無論底層是使用數組還是鏈表來實現,其基本原理是不變的,那就是棧的特點的先進后出,隊列的特點是先進先出。

棧 (Stack)是一種后進先出(last in first off,LIFO)的數據結構。線性表是用數組來實現的,對于棧這種只能一頭插入刪除的線性表來說,用數組下標為0(棧底不變,只需要跟蹤棧頂的變化即可)的一端作為棧底比較合適。


列表封裝的這些方法,實現棧這個常用的數據結構比較容易。棧是一種只能在列表一端進出的特殊列表,pop方法正好完美實現:

  1. In [1]: stack=[1,3,5] 
  2.  
  3. In [2]: stack.append(0) # push元素0到尾端,不需要指定索引 
  4.  
  5. In [3]: stack 
  6. Out[3]: [1, 3, 5, 0] 
  7.  
  8. In [4]: stack.pop() # pop元素,不需指定索引,此時移出尾端元素 
  9. Out[4]: 0 
  10.  
  11. In [5]: stack 
  12. Out[5]: [1, 3, 5] 

由此可見Python的列表當做棧用,完全沒有問題,push 和 pop 操作的時間復雜度都為 O(1)

隊列

隊列(Queue)則是一種先進先出 (fisrt in first out,FIFO)的結構.。使用順序表存儲隊列時,隊列元素的出隊是在隊頭,即下標為0的地方,當有元素出隊時,出隊元素后面的所有元素都需要向前移動,保證隊列的隊頭始終處在下標為0的位置,此時會大大增加時間復雜度。


使用列表模擬隊列,需要借助Python的collections模塊中的雙端隊列deque實現。如下模擬隊列的先進先出,后進后出:

  1. In [1]: from collections import deque 
  2.  
  3. In [2]: queue = [1,3,5] 
  4.  
  5. In [3]: deq = deque(queue) 
  6.  
  7. In [4]: deq.append(0)  
  8.  
  9. In [5]: deq 
  10. Out[5]: deque([1, 3, 5, 0]) # 后進插入到隊列尾部 
  11.  
  12. In [6]: deq.popleft()   
  13. Out[6]: 1 
  14.  
  15. In [7]: deq 
  16. Out[7]: deque([3, 5, 0])# 先進的先出 

LeetCode 第 225題:用隊列實現棧#使用隊列實現棧

  1. #使用隊列實現棧的下列操作:  
  2. # push(x) -- 元素 x 入棧  
  3. # pop() -- 移除棧頂元素  
  4. top() -- 獲取棧頂元素  
  5. # empty() -- 返回棧是否為空  
  6. # 注意:  
  7. # 你只能使用隊列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 這些操作是合法的。  
  8. # 你所使用的語言也許不支持隊列。 你可以使用 list 或者 deque(雙端隊列)來模擬一個隊列 , 只要是標準的隊列操作即可。  
  9. # 你可以假設所有操作都是有效的(例如, 對一個空的棧不會調用 pop 或者 top 操作)。  
  10. # Related Topics 棧 設計 

根據題意,我們只能使用隊列的基本操作,隊列因為是先進先出,要實現先進后出的棧。

無論是用隊列實現棧,還是用棧實現隊列。常見的解法方法是使用兩個隊列或者兩個棧。

假設有q1,q2兩個隊列,我們先初始化隊列。

  1. from collections import deque 
  2. class MyStack: 
  3.     def __init__(self): 
  4.         ""
  5.         Initialize your data structure here. 
  6.         ""
  7.         self.q1 = deque() 
  8.         self.q2 = deque() 

push(x) :元素 x 入棧 時和隊列添加元素的方法一樣。


壓入棧時,加入到q1的末尾,那么q1末尾的元素就是棧頂元素。因此只需要append(x)即可。

  1. def push(self, x: int) -> None: 
  2.     ""
  3.     Push element x onto stack. 
  4.     ""
  5.     self.q1.append(x) 

對于pop刪除元素,我們可以使用q2保存q1的最后的元素之前的元素,然后將q1的元素進行刪除,最后將兩個隊列進行互換。

我們需要彈出棧頂元素,也就是q1最后的元素,隊列只能是先進先出,我們得用q2把q1出隊的元素裝著,最后一個出隊元素就是棧頂元素。

因此,代碼需要對q1的長度進行判斷,如果q1的長度大于1,那么將q1的頭部元素添加到q2,直到q1只有最后一個元素。

  1. def pop(self) -> int
  2.     ""
  3.     Removes the element on top of the stack and returns that element. 
  4.     ""
  5.     while len(self.q1) > 1: 
  6.         self.q2.append(self.q1.popleft()) 
  7.     tmp = self.q1.popleft() 
  8.     self.q2, self.q1 = self.q1, self.q2 
  9.     return tmp 

判斷是否為空,只需要判斷q1的隊列是否為空。

  1. def empty(self) -> bool: 
  2.     ""
  3.     Returns whether the stack is empty. 
  4.     ""
  5.     return not bool(self.q1) 

取棧頂元素。這里其實可以巧妙地解決,我們直接調用pop方法進行刪除,在pop進行刪除時用一個變量進行保存,還需要對該元素重新進行插入操作。

  1. def top(self) -> int
  2.     ans = self.pop() 
  3.     self.q1.append(ans) 
  4.     return ans 

下面就是用隊列實現棧完整代碼

  1. from collections import deque 
  2. class MyStack: 
  3.     def __init__(self): 
  4.         ""
  5.         Initialize your data structure here. 
  6.         ""
  7.         self.q1 = deque() 
  8.         self.q2 = deque() 
  9.  
  10.  
  11.     def push(self, x: int) -> None: 
  12.         ""
  13.         Push element x onto stack. 
  14.         ""
  15.         self.q1.append(x) 
  16.  
  17.  
  18.     def pop(self) -> int
  19.         ""
  20.         Removes the element on top of the stack and returns that element. 
  21.         ""
  22.         while len(self.q1) > 1: 
  23.             self.q2.append(self.q1.popleft()) 
  24.         tmp = self.q1.popleft() 
  25.         self.q2,self.q1 = self.q1, self.q2 
  26.         return tmp 
  27.  
  28.  
  29.     def top(self) -> int
  30.         ""
  31.         Get the top element. 
  32.         ""
  33.         ans = self.pop() 
  34.         self.q1.append(ans) 
  35.         return ans 
  36.  
  37.  
  38.     def empty(self) -> bool: 
  39.         ""
  40.         Returns whether the stack is empty. 
  41.         ""
  42.         return not bool(self.q1) 

LeetCode 第232題:用棧實現隊列

  1. #使用棧實現隊列的下列操作: 
  2. # push(x) -- 將一個元素放入隊列的尾部。  
  3. # pop() -- 從隊列首部移除元素。  
  4. # peek() -- 返回隊列首部的元素。  
  5. # empty() -- 返回隊列是否為空。 
  6. # 示例: 
  7. # MyQueue queue = new MyQueue(); 
  8. #queue.push(1); 
  9. #queue.push(2);   
  10. #queue.peek();  // 返回 1 
  11. #queue.pop();   // 返回 1 
  12. #queue.empty(); // 返回 false 
  13. # 說明: 
  14. # 你只能使用標準的棧操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。  
  15. # 你所使用的語言也許不支持棧。你可以使用 list 或者 deque(雙端隊列)來模擬一個棧,只要是標準的棧操作即可。  
  16. # 假設所有操作都是有效的 (例如,一個空的隊列不會調用 pop 或者 peek 操作)。 
  17. # Related Topics 棧 設計 

最簡單的方法使用list表示一個棧,只能使用棧的相關方法,如append(),pop(),s[-1],分別是棧頂追加元素,刪除棧頂元素,取出棧頂元素.。

  1. class MyQueue: 
  2.     def __init__(self): 
  3.         self.s = [] 
  4.     def push(self, x: int) -> None: 
  5.         self.s.append(x) 
  6.     def pop(self) -> int:     
  7.         return self.s.pop(0) 
  8.     def peek(self) -> int
  9.         return self.s[0] 
  10.     def empty(self) -> bool: 
  11.         return not bool(self.s) 

當然也可以使用兩個棧,這個是比較復雜的操作,「但也是比較常見的算法考點。」

(1)初始化兩個棧結構,s1為主棧,s2為輔助棧。

(2)push往s1末尾添加元素,利用append即可實現。

(3)pop時候,先將s1元素向s2轉移,知道s1只剩下一個元素時候(這就是我們要返回的隊列首部元素),然后我們再把2中的元素轉移回s1中即可。

(4)返回隊列首部的元素,類似于步驟(3)的操作,唯一不同是這里我們需要將elenment先添加回stack2,然后再將stack2的元素轉移回stack1中,因為peek操作不需要刪除隊列首部元素

(5)empty判斷stack1尺寸即可。

出隊操作首先判斷緩存棧s2是否有元素,有的話直接取出s2棧頂元素;若s2為空并且s1中有元素,將s1中元素全部轉移到s2中,再取出s2棧頂元素,即可模擬隊列出隊操作;本例中沒有出現s2和s1都為空的情況。

  1. class MyQueue: 
  2.     def __init__(self): 
  3.         ""
  4.         Initialize your data structure here. 
  5.         ""
  6.         self.s1 = [] 
  7.         self.s2 = [] 
  8.          
  9.     def push(self, x: int) -> None: 
  10.         ""
  11.         Push element x to the back of queue. 
  12.         ""
  13.         self.s1.append(x) 
  14.  
  15.     def pop(self) -> int
  16.         ""
  17.         Removes the element from in front of queue and returns that element. 
  18.         ""
  19.         if self.s2: 
  20.             return self.s2.pop() 
  21.         else
  22.             if  self.s1 : 
  23.                 while self.s1: 
  24.                     self.s2.append(self.s1.pop()) 
  25.                 return self.s2.pop() 
  26.  
  27.     def peek(self) -> int
  28.         ""
  29.         Get the front element. 
  30.         ""
  31.         if self.s2: 
  32.             return self.s2[-1] 
  33.         else
  34.             if  self.s1 : 
  35.                 while self.s1: 
  36.                     self.s2.append(self.s1.pop()) 
  37.                 return self.s2[-1] 
  38.  
  39.     def empty(self) -> bool: 
  40.         ""
  41.         Returns whether the queue is empty. 
  42.         ""
  43.         if self.s1 or self.s2: 
  44.             return False 
  45.         else
  46.             return True 
  47.  
  48. # Your MyQueue object will be instantiated and called as such: 
  49. # obj = MyQueue() 
  50. # obj.push(x) 
  51. # param_2 = obj.pop() 
  52. # param_3 = obj.peek() 
  53. # param_4 = obj.empty() 

本文已收錄 GitHub:

https://github.com/MaoliRUNsen/runsenlearnpy100

 

責任編輯:姜華 來源: Python之王
相關推薦

2012-05-16 17:05:33

Java數據結構

2011-04-11 11:23:17

隊列數據結構

2009-08-11 14:51:11

C#數據結構與算法

2009-08-11 14:43:42

C#數據結構與算法

2023-11-12 21:49:10

Redis數據庫

2023-09-25 12:23:18

Python

2020-10-28 10:10:03

Java單鏈表數據結構

2022-09-01 16:27:19

JavaScriptWeb開發

2015-08-06 15:20:21

runtimeIOS開發

2021-03-01 23:31:48

隊列實現棧存儲

2021-03-29 08:01:20

JavaScript數據結構

2024-01-15 06:01:36

C++數組

2021-07-16 07:57:34

Python數據結構

2010-06-11 14:15:23

WAP協議棧

2022-08-11 08:03:43

隊列

2020-03-27 14:29:30

數據結構

2023-10-18 17:49:58

數據結構隊列結構

2019-08-13 09:40:55

數據結構算法JavasCript

2015-09-10 08:46:15

Java面試題

2021-03-09 06:30:32

JAVA數據結構算法
點贊
收藏

51CTO技術棧公眾號

手机看片日韩国产| 91久久精品国产91久久| 三级男人添奶爽爽爽视频| 中国字幕a在线看韩国电影| 久久综合色一综合色88| 国产一区红桃视频| 国产在线观看你懂的| 亚洲三级网页| 91精品国产综合久久蜜臀| 国产精品无码人妻一区二区在线| 免费毛片在线| 极品少妇xxxx偷拍精品少妇| 欧美黑人巨大xxx极品| 国产又爽又黄无码无遮挡在线观看| www.成人在线视频| 亚洲成人第一页| 性欧美videosex高清少妇| 亚洲国产精品欧美久久 | 成人av免费网站| 国产精品国产三级国产aⅴ浪潮| 欧美成人精品一区二区免费看片| 国产成人高清| 欧美精品一区二区三区久久久| 我看黄色一级片| 伦理在线一区| 综合久久国产九一剧情麻豆| 欧美日韩国产不卡在线看| 成人黄色在线观看视频| 美女免费视频一区| 青青草国产精品一区二区| 久久久久亚洲AV| 午夜影院欧美| 伊人青青综合网站| 一本色道久久综合亚洲精品图片| 欧美xxxxxxxx| 亚洲综合中文字幕在线| 国产又大又粗又爽| 午夜精品999| 色综合伊人色综合网| 男生裸体视频网站| 草草视频在线一区二区| 欧美一级黄色录像| 亚洲视频一二三四| 成人黄页网站视频| 在线看不卡av| 午夜免费高清视频| 中文另类视频| 欧美日韩精品一区二区三区四区 | www.97视频| 成人女性视频| 中文字幕国产日韩| 懂色av蜜桃av| 欧洲美女日日| 中文字幕日韩电影| 在线视频这里只有精品| 成人一二三区| 精品国产视频在线| 亚洲波多野结衣| 亚洲欧美在线专区| 色综合男人天堂| 国产亚洲欧美精品久久久www | 亚洲国产精品久久久久婷蜜芽| 女同视频在线观看| 亚洲aⅴ怡春院| 欧美综合在线播放| 芒果视频成人app| 在线免费视频一区二区| 中文字幕av不卡在线| a成人v在线| 制服丝袜中文字幕亚洲| 欧美一区二区三区影院| 免费观看在线一区二区三区| 欧美岛国在线观看| 亚洲av成人精品一区二区三区| 欧美一级全黄| 国产一区二区三区在线观看网站| 欧美成人国产精品一区二区| 精品一区二区三区中文字幕老牛| 色老头一区二区三区| 欧美日韩成人免费观看| 中文精品视频一区二区在线观看| 超碰在线网址| 亚洲成人av福利| 日韩av播放器| 日韩精品视频一区二区三区| 亚洲国产精品一区二区久| 亚洲精品乱码久久久久久久久久久久| 久久国产成人午夜av影院宅| 欧美大胆在线视频| 毛片基地在线观看| 久久精品国产精品亚洲红杏| 91一区二区三区| 美州a亚洲一视本频v色道| 国产女人aaa级久久久级| av磁力番号网| 在线最新版中文在线| 欧美人与禽zozo性伦| 亚洲AV成人精品| 免费看av成人| 久久久国产精品x99av | 国产女人水真多18毛片18精品| 水中色av综合| 亚洲欧美在线另类| 男人亚洲天堂网| 国产精品白丝久久av网站| 亚洲精品成人久久久| 你懂得在线观看| 亚洲永久字幕| www 成人av com| av在线天堂播放| 性做久久久久久免费观看| www.亚洲高清| 亚洲永久精品唐人导航网址| 欧美xxxx综合视频| 中文字幕第99页| 91蜜桃免费观看视频| 国产日产欧美一区二区| 91精品韩国| 亚洲黄色av女优在线观看| 三级黄色在线观看| 日本女人一区二区三区| 国产精品对白刺激久久久| 日韩在线观看www| 欧美性猛交xxxx免费看漫画 | 中文字幕一区二区三区四区视频 | 国产一区二区三区精品在线| 亚洲三级色网| av一区二区三区在线观看| 欧美边添边摸边做边爱免费| 91电影在线观看| 好吊日免费视频| 亚洲精选久久| 国产偷久久久精品专区| 日本无删减在线| 欧美一区日本一区韩国一区| 成年人视频软件| 免费成人美女在线观看.| 免费成人在线观看av| 9lporm自拍视频区在线| 日韩欧美国产一区二区三区 | 亚洲自拍小视频| 在线免费观看的av网站| 欧美色综合天天久久综合精品| 91精彩刺激对白露脸偷拍| 亚洲美女少妇无套啪啪呻吟| 国产精品成人一区二区三区| 欧美aaaaaaa| 亚洲国产欧美一区二区三区同亚洲 | 亚洲va久久久噜噜噜久久| 69av在线播放| 毛片在线免费| 欧美亚洲一区二区在线| 美国美女黄色片| 美女视频网站黄色亚洲| 欧美一级免费在线观看| 日韩黄色av| 97精品免费视频| 天天影院图片亚洲| 色老汉av一区二区三区| 成人午夜免费影院| 国产一区二区三区久久悠悠色av| 青青在线免费视频| 国产伦理久久久久久妇女| 欧美亚洲另类制服自拍| 精品av中文字幕在线毛片| 欧美视频完全免费看| 国产色无码精品视频国产| 国产成人a级片| 18禁免费观看网站| 精品国产一区二区三区久久久蜜臀| 国产精品69精品一区二区三区| av在线电影免费观看| 欧美丰满少妇xxxbbb| 久久久久久蜜桃| 久久女同互慰一区二区三区| 我看黄色一级片| 欧美日韩亚洲一区| 久久精品五月婷婷| 成人黄色免费观看| 高清视频欧美一级| 国产在线中文字幕| 91精品国产综合久久福利软件| 日本中文字幕免费| 中文无字幕一区二区三区| 性高潮久久久久久| 久久综合中文| 欧美 日韩 国产精品| 久草精品在线| 51精品国产人成在线观看| sm捆绑调教国产免费网站在线观看| 亚洲网址你懂得| 朝桐光av在线一区二区三区| 精品国产鲁一鲁一区二区张丽| 国产在线免费av| 成人黄色大片在线观看 | 亚洲日本精品| 免费萌白酱国产一区二区三区| 国产精品揄拍一区二区| gogo高清在线播放免费| 在线中文字幕日韩| 少妇又色又爽又黄的视频| 欧美久久久久久久久中文字幕| 国产大片中文字幕| 中文字幕一区二区三区在线观看 | 日韩视频免费在线播放| 欧美日韩伊人| 先锋影音欧美| 噜噜噜狠狠夜夜躁精品仙踪林| 国产在线精品成人一区二区三区| 麻豆成全视频免费观看在线看| 久久久999精品免费| 国产综合视频一区二区三区免费| 精品国产乱码91久久久久久网站| 五月激情丁香网| 天天综合色天天综合| 久久精品视频免费在线观看| 久久精品免视看| 国产福利在线观看视频| 国产精品一级黄| 国产精品v日韩精品v在线观看| 性伦欧美刺激片在线观看| 日韩国产小视频| 中国精品18videos性欧美| 亚洲精品成人自拍| 国产九一精品| 欧美激情第一页在线观看| 久9re热视频这里只有精品| 亚洲影视中文字幕| 四虎国产精品免费久久| 国产精品久久久久久久久粉嫩av | 色嗨嗨av一区二区三区| 国产精品自拍视频一区| 一区二区三区免费网站| 亚洲一二三在线观看| 国产精品不卡一区| 亚洲一级理论片| 亚洲国产高清在线| 亚洲精品91在线| 国产日韩欧美一区二区三区综合| 国内精品久久99人妻无码| 99re免费视频精品全部| 免费的av网站| 99久久国产综合精品女不卡| 妖精视频一区二区| 99视频精品免费视频| 国产免费一区二区三区最新6| 国产91精品露脸国语对白| 日本少妇一级片| 成人涩涩免费视频| 美女网站视频在线观看| 成人avav在线| 久久一区二区电影| 久久亚洲综合色一区二区三区| 三级男人添奶爽爽爽视频 | 日韩欧美国产精品一区| 亚洲av无码乱码国产精品久久 | 青青草视频在线观看| 亚洲欧美变态国产另类| 大胆av不用播放器在线播放| 中文字幕在线成人| 欧美另类极品| 久久91亚洲精品中文字幕| 超碰在线最新网址| 5278欧美一区二区三区| 免费看av不卡| 国产精品入口日韩视频大尺度| 先锋影音网一区二区| 亚洲综合在线小说| 老牛影视av一区二区在线观看| 久久这里精品国产99丫e6| 国产探花一区在线观看| 在线视频一区观看| 激情一区二区| 国产1区2区在线| 久久99精品一区二区三区三区| 在线成人免费av| 99久久精品国产精品久久| 天天干天天舔天天操| 亚洲乱码一区二区三区在线观看| 日本三级一区二区| 欧美亚洲动漫另类| 精品人妻aV中文字幕乱码色欲| 亚洲第一精品福利| 大乳在线免费观看| 欧美精品在线视频观看| 91精品论坛| 成人有码在线播放| 久久久免费毛片| 在线视频亚洲自拍| 国产精品综合| 三级黄色片免费观看| 91网站在线播放| 91高清免费观看| 欧美性猛交xxxx偷拍洗澡| 99在线观看免费| 亚洲欧美国产另类| 羞羞污视频在线观看| 日韩av手机在线观看| 国产欧美日韩电影| 欧美一区二区视频在线| 欧美久色视频| 日韩一区二区三区不卡视频| av激情综合网| tube国产麻豆| 欧美伊人精品成人久久综合97| 人妻无码一区二区三区久久99| 在线观看久久av| av色在线观看| 666精品在线| 久久综合99| 国产偷人视频免费| 不卡免费追剧大全电视剧网站| 登山的目的在线| 91国内精品野花午夜精品| 高潮一区二区三区乱码| 久久精品最新地址| 成人在线视频免费看| 久久久久久一区| 极品日韩av| 国内av免费观看| 1000精品久久久久久久久| 天堂av免费在线观看| 日韩成人在线视频| 国产精品186在线观看在线播放| 成人午夜在线影院| 成人在线亚洲| 日韩在线第三页| 97久久人人超碰| 黄色小说在线观看视频| 精品三级在线看| 在线看一级片| 亚洲一区二区三区香蕉| 99精品视频在线观看播放| www.com黄色片| 欧美国产在线观看| 国产乱码77777777| 亚洲日韩中文字幕| 日韩高清中文字幕一区二区| 欧美久久综合性欧美| 国产一区二区你懂的| 中文文字幕文字幕高清| 天天亚洲美女在线视频| 色哟哟国产精品色哟哟| 97香蕉久久超级碰碰高清版| 北条麻妃一区二区三区在线观看| 日本a在线天堂| 成人黄色在线看| 国产精品久久久免费视频| 日韩精品日韩在线观看| 午夜激情在线播放| 欧美日韩亚洲一区二区三区四区| 久久都是精品| 五月天综合视频| 欧美日韩国产一区| 在线看福利影| 国产日韩三区| 亚洲一区二区三区高清| 国产av自拍一区| 精品视频色一区| 免费在线观看黄色网| 91精品黄色| 日韩天堂av| 日本人亚洲人jjzzjjz| 欧美日韩精品一区二区三区| 久久77777| 国产精品9999久久久久仙踪林| 在线国产日韩| 90岁老太婆乱淫| 欧美人与性动xxxx| 俄罗斯一级**毛片在线播放| 久久手机视频| 久久精品国产第一区二区三区| 国产精品丝袜一区二区| 精品国产一区二区在线观看| 成人片免费看| 中文字幕欧美人与畜| 成人午夜免费视频| 久久久久久无码午夜精品直播| 日韩中文字幕视频在线| 1769国产精品视频| 天天爱天天操天天干| 亚洲免费在线电影| 青青草在线播放| 91久久久久久久久久久| 99成人在线| av在线免费播放网址| 亚洲国产欧美自拍| 97色婷婷成人综合在线观看| 69sex久久精品国产麻豆| 国产亲近乱来精品视频| 亚洲国产福利视频| 国产精品美女免费视频| 欧美日本中文| 在线免费观看视频| 精品国精品国产| 欧美91在线|欧美| 男女猛烈激情xx00免费视频| 国产午夜精品久久久久久久| 性欧美8khd高清极品| 国产精品免费久久久久久|