日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++:哈希(闭散列、开散列)

發布時間:2024/1/18 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++:哈希(闭散列、开散列) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 哈希概念
      • 哈希沖突
      • 哈希函數
  • 哈希沖突解決
    • 閉散列
      • 什么時機增容,如何增容?
        • 線性探測的實現
    • 開散列
        • 開散列增容
        • 開散列的實現
      • 開散列與閉散列比較
    • unordered_map模擬實現(應用開散列)
    • 知識點習題:


哈希概念

順序結構以及平衡樹中,元素關鍵碼與其存儲位置之間沒有對應的關系,因此在查找一個元素時,必須要經過關鍵碼的多次比較。順序查找時間復雜度為O(N),平衡樹中為樹的高度,即O(log2N),搜索的效率取決于搜索過程中元素的比較次數。

理想的搜索方法:不經過任何比較,一次直接從表中得到要搜索的元素。 如果構造一種存儲結構,通過某種函數(hashFunc)使元素的存儲位置與它的關鍵碼之間能夠建立一一映射的關系,那么在查找時通過該函數可以很快找到該元素。

當向該結構中:

  • 插入元素

    根據待插入元素的關鍵碼,以此函數計算出該元素的存儲位置并按此位置進行存放

  • 搜索元素

    對元素的關鍵碼進行同樣的計算,把求得的函數值當做元素的存儲位置,在結構中按此位置取元素比較,若關鍵碼相等,則搜索成功

該方式即為哈希(散列)方法,哈希方法中使用的轉換函數稱為哈希(散列)函數,構造出來的結構稱為哈希表 (Hash Table)(或者稱散列表)

例如:數據集合{1,7,6,4,5,9};

哈希函數設置為:hash(key) = key % capacity; capacity為存儲元素底層空間總的大小。

用該方法進行搜索不必進行多次關鍵碼的比較,因此搜索的速度比較快。 問題:按照上述哈希方式,向集合中插入元素44,會出現什么問題?(哈希沖突

哈希沖突

對于兩個數據元素的關鍵字ki和 kj(i != j),有 ki != kj ,但有:Hash( ki ) == Hash( kj ),即:不同關鍵字通過相同哈希哈數計算出相同的哈希地址,該種現象稱為哈希沖突或哈希碰撞。

把具有不同關鍵碼而具有相同哈希地址的數據元素稱為“同義詞”。 發生哈希沖突該如何處理呢?

哈希函數

引起哈希沖突的一個原因可能是:哈希函數設計不夠合理。 哈希函數設計原則:

  • 哈希函數的定義域必須包括需要存儲的全部關鍵碼,而如果散列表允許有m個地址時,其值域必須在0 到m-1之間

  • 哈希函數計算出來的地址能均勻分布在整個空間中

  • 哈希函數應該比較簡單

常見哈希函數

  • 直接定制法
  • 取關鍵字的某個線性函數為散列地址:Hash(Key)= A*Key + B

    • 優點:簡單、均勻
    • 缺點:需要事先知道關鍵字的分布情況 使用場景:適合查找比較小且連續的情況
  • 除留余數法
  • 設散列表中允許的地址數為m,取一個不大于m,但最接近或者等于m的質數p作為除數,按照哈希函數:Hash(key) = key% p(p<=m),將關鍵碼轉換成哈希地址

  • 平方取中法
  • 假設關鍵字為1234,對它平方就是1522756,抽取中間的3位227作為哈希地址; 再比如關鍵字為 4321,對它平方就是18671041,抽取中間的3位671(或710)作為哈希地址

    平方取中法比較適合:不知道關鍵字的分布,而位數又不是很大的情況

  • 折疊法
  • 折疊法是將關鍵字從左到右分割成位數相等的幾部分(最后一部分位數可以短些),然后將這幾部分疊加求和,并按散列表表長,取后幾位作為散列地址。

    折疊法適合事先不需要知道關鍵字的分布,適合關鍵字位數比較多的情況

  • 隨機數法
  • 選擇一個隨機函數,取關鍵字的隨機函數值為它的哈希地址,即H(key) = random(key),其中random為隨機數函數。

    通常應用于關鍵字長度不等時采用此法

  • 數學分析法
  • 設有n個d位數,每一位可能有r種不同的符號,這r種不同的符號在各位上出現的頻率不一定相同,可能在某些位上分布比較均勻,每種符號出現的機會均等,在某些位上分布不均勻只有某幾種符號經常出現。可根據散列表的大小,選擇其中各種符號分布均勻的若干位作為散列地址。例如:

    假設要存儲某家公司員工登記表,如果用手機號作為關鍵字,那么極有可能前7位都是相同的,那么我們可以選擇后面的四位作為散列地址,如果這樣的抽取工作還容易出現沖突,還可以對抽取出來的數字進行反轉(如1234改成4321)、右環位移(如1234改成4123)、左環移位、前兩數與后兩數疊加(如1234改 成12+34=46)等方法。

    數字分析法通常適合處理關鍵字位數比較大的情況,如果事先知道關鍵字的分布且關鍵字的若干位分布較均勻的情況

    注意:哈希函數設計的越精妙,產生哈希沖突的可能性就越低,但是無法避免哈希沖突

    哈希沖突解決

    閉散列

    也叫開放定址法,當發生哈希沖突時,如果哈希表未被裝滿,說明在哈希表中必然還有空位置,那么可以把key存放到沖突位置中的“下一個” 空位置中去。 那如何尋找下一個空位置呢?

  • 線性探測
  • 比如

    現在需要插入元素44,先通過哈希函數計算哈希地址,hashAddr為4,因此44理論上應該插在該位置,但是該位置已經放了值為4的元素,即發生哈希沖突。

    線性探測:從發生沖突的位置開始,依次向后探測,直到尋找到下一個空位置為止。

    • 插入

      通過哈希函數獲取待插入元素在哈希表中的位置

      如果該位置中沒有元素則直接插入新元素,如果該位置中有元素發生哈希沖突,使用線性探測找到下一個空位置,插入新元素

    • 刪除

    采用閉散列處理哈希沖突時,不能隨便物理刪除哈希表中已有的元素,若直接刪除元素會影響其他元素的搜索。比如刪除元素4,如果直接刪除掉,44查找起來可能會受影響。因此線性探測采用標記的偽刪除法來刪除一個元素。

    // 哈希表每個空間給個標記// EMPTY此位置空, EXIST此位置已經有元素, DELETE元素已經刪除 enum State{EMPTY, EXIST, DELETE};

    什么時機增容,如何增容?

    線性探測的實現

    #pragma once#include <map> #include <vector> using namespace std;namespace dg {enum State {EMPTY,EXIST,DELETE };// 整形數據不需要轉化 class dealInt { public:int operator()(int n){return n;} };// key為字符串類型,需要將其轉化為整形 class dealString { public:int operator()(const string& n){int sum = 0;int seed = 131; // 131進制for (const char& c : n){sum = sum * seed + c;}return sum & 0x7FFFFFFF; // 為了保證得到的index的第一位為0,也就是為了得到一個正數。} };template<class K, class V, class SW = dealInt> class hashTable {struct elem{pair<K, V> m_val;State m_state;elem(const K& key = K(), const V& val = V(), State state = EMPTY) :m_val(key, val),m_state(state){}};vector<elem> m_table;size_t m_size;static long long s_m_primeTable[30];int m_primePos; public:hashTable(size_t capacity = s_m_primeTable[0]) :m_table(capacity),m_size(0),m_primePos(0){}size_t capacity(){return m_table.size();}private:int hashFunc(const K& key){SW func;return func(key) % capacity();}void reserve(){vector<elem> tmp;m_table.swap(tmp);m_table.resize(s_m_primeTable[++m_primePos]);m_size = 0;for (auto& e : tmp){if (e.m_state == EXIST){insert(e.m_val);}}}public:bool insert(const pair<K, V>& val){if ((long long)size() * 100 / capacity() >= 75){reserve();}int n = hashFunc(val.first);while (m_table[n].m_state == EXIST){if (m_table[n].m_val.first == val.first){return false;}n++;if (n == capacity()){n = 0;}}m_table[n].m_val = val;m_table[n].m_state = EXIST;m_size++;return true;}int find(const K& key){int n = hashFunc(key);while (m_table[n].m_state != EMPTY){if (m_table[n].m_state == EXIST && m_table[n].m_val.first == key){return n;}n++;if (n == capacity()){n = 0;}}return -1;}bool erase(const K& key){int ret = find(key);if (ret < 0){return false; // 不存在}else{m_table[ret].m_state = DELETE;m_size--;}}size_t size(){return m_size;}bool empty(){return m_size == 0;}// 交換兩個表(容器)void Swap(hashTable<K, V>& ht){m_table.swap(ht.m_table);size_t tmp;tmp = m_size;m_size = ht.m_size;ht.m_size = tmp;} };// 素數表(除留余數法,最好模一個素數) template<class K, class V, class SW> long long hashTable<K, V, SW>::s_m_primeTable[30] = {11, 23, 47, 89, 179,353, 709, 1409, 2819, 5639,11273, 22531, 45061, 90121, 180233,360457, 720899, 1441807, 2883593, 5767169,11534351, 23068673, 46137359, 92274737, 184549429,369098771, 738197549, 1476395029, 2952790016u, 4294967291u };};

    線性探測優點: 實現非常簡單,

    線性探測缺點: 一旦發生哈希沖突,所有的沖突連在一起,容易產生數據“堆積”,即:不同關鍵碼占據 了可利用的空位置,使得尋找某關鍵碼的位置需要許多次比較,導致搜索效率降低。 如何緩解呢?

  • 二次探測
  • 線性探測的缺陷是產生沖突的數據堆積在一塊,這與其找下一個空位置有關系,因為找空位置的方式就 是挨著往后逐個去找,因此二次探測為了避免該問題,找下一個空位置的方法為:Hi = (H0 + i2)% m, 或者: Hi= ( H0 - i2 )% m。其中:i = 1,2,3…, 是通過散列函數Hash(x)對元素的關鍵碼 key 進行 計算得到的位置,m是表的大小。

    研究表明:當表的長度為質數且表裝載因子a不超過0.5時,新的表項一定能夠插入,而且任何一個位置都不會被探查兩次。因此只要表中有一半的空位置,就不會存在表滿的問題。在搜索時可以不考慮表裝 滿的情況,但在插入時必須確保表的裝載因子a不超過0.5,如果超出必須考慮增容。

    因此:閉散列最大的缺陷就是空間利用率比較低,這也是哈希的缺陷。

    開散列

    開散列法又叫鏈地址法(開鏈法),首先對關鍵碼集合用散列函數計算散列地址,具有相同地址的關鍵碼歸于同一子集合,每一個子集合稱為一個桶,各個桶中的元素通過一個單鏈表鏈接起來,各鏈表的頭結點存儲在哈希表中。

    從上圖可以看出,開散列中每個桶中放的都是發生哈希沖突的元素

    開散列增容

    桶的個數是一定的,隨著元素的不斷插入,每個桶中元素的個數不斷增多,極端情況下,可能會導致一個桶中鏈表節點非常多,會影響的哈希表的性能,因此在一定條件下需要對哈希表進行增容,那該條件怎么確認呢?開散列最好的情況是:每個哈希桶中剛好掛一個節點,再繼續插入元素時,每一次都會發生哈希沖突,因此,在元素個數剛好等于桶的個數時,可以給哈希表增容。

    開散列的實現

    #pragma once #include <vector> using namespace std;template<class T> class HashBucketNode {T m_val;HashBucketNode<T>* m_next;HashBucketNode(const T& val = T()) :m_val(val),m_next(nullptr){}template<class T, class SW>friend class HashSet; };class dealInt { public:int operator()(int n){return n;} };template<class T, class SW = dealInt> class HashSet {vector<HashBucketNode<T>*> m_data;size_t m_size;static long long s_m_primeTable[30];int m_primePos; public:HashSet(size_t capacity = s_m_primeTable[0]) :m_data(capacity, nullptr),m_size(0),m_primePos(0){}private:int hashFunc(const T& key){SW func;return func(key) % capacity();}void checkCapacity(){if (m_size == capacity()){int mcapa = capacity();vector<HashBucketNode<T>*> tmp(s_m_primeTable[++m_primePos], nullptr);m_data.swap(tmp);m_size = 0;int i;HashBucketNode<T>* cur;for (i = 0; i < mcapa; i++){for (cur = tmp[i]; cur; cur = cur->m_next){insert(cur->m_val);}}}}public:bool insert(const T& val){checkCapacity();int hashnum = hashFunc(val);HashBucketNode<T>* tmp;if (m_data[hashnum]){for (tmp = m_data[hashnum]; tmp; tmp = tmp->m_next){if (tmp->m_val == val){return false;}}}tmp = new HashBucketNode<T>(val);tmp->m_next = m_data[hashnum];m_data[hashnum] = tmp;m_size++;return true;}bool erase(const T& val){int hashnum = hashFunc(val);HashBucketNode<T>* tmp;if (!m_data[hashnum]){return false;}if (m_data[hashnum]->m_val == val){tmp = m_data[hashnum];m_data[hashnum] = tmp->m_next;delete tmp;m_size--;return true;}else{for (tmp = m_data[hashnum]; tmp->m_next; tmp = tmp->m_next){if (tmp->m_next->m_val == val){HashBucketNode<T>* cur;cur = tmp->m_next;tmp->m_next = cur->m_next;delete cur;m_size--;return true;}}return false;}}HashBucketNode<T>* find(const T& val){int hashnum = hashFunc(val);HashBucketNode<T>* cur;for (cur = m_data[hashnum]; cur; cur = cur->m_next){if (cur->m_val == val){return cur;}}return nullptr;}void clear(){HashBucketNode<T>* tmp;for (auto& head : m_data){while (head){tmp = head;head = head->m_next;delete tmp;}}m_size = 0;}size_t capacity(){return s_m_primeTable[m_primePos];} };template<class T, class SW> long long HashSet<T, SW>::s_m_primeTable[30] = {11, 23, 47, 89, 179,353, 709, 1409, 2819, 5639,11273, 22531, 45061, 90121, 180233,360457, 720899, 1441807, 2883593, 5767169,11534351, 23068673, 46137359, 92274737, 184549429,369098771, 738197549, 1476395029, 2952790016u, 4294967291u };

    開散列與閉散列比較

    應用鏈地址法處理溢出,需要增設鏈接指針,似乎增加了存儲開銷。事實上: 由于開地址法必須保持大 量的空閑空間以確保搜索效率,如二次探查法要求裝載因子a <= 0.5,而表項所占空間又比指針大的多,所以使用鏈地址法反而比開地址法節省存儲空間。

    unordered_map模擬實現(應用開散列)

    main函數文件

    #include "unordered_map.h" #include <iostream> using namespace std;int main() {dg::unordered_map<int, int> hb;hb[2] = 7;hb[4] = 6;hb[11] = 14;hb[7] = 9;hb[5] = 1;for (auto& e : hb){cout << e.first << ' ' << e.second << endl;}return 0; }

    unordered_map頭文件

    #include "HashBucket.h"namespace dg {template <class K, class V, class HF = dealInt> class unordered_map {class KeyofValue{public:const K& operator()(const pair<K, V>& data){return data.first;}};HashBucket<K, pair<K, V>, KeyofValue, HF> m_hb;public:// typename 是為了識別類型typename typedef HashBucket<K, pair<K, V>, KeyofValue, HF>::iterator iterator;unordered_map() :m_hb(){}~unordered_map(){m_hb.~HashBucket();}iterator begin(){return m_hb.begin();}iterator end(){return m_hb.end();}iterator size(){return m_hb.size();}iterator find(const V& val){return m_hb.find(val);}size_t count(const K& key){return m_hb.count(key);}void clear(){return m_hb.clear();}bool empty(){return m_hb.empty();}pair<iterator, bool> insert(const pair<K, V> val){return m_hb.insert(val);}V& operator[](const K& key){pair<iterator, bool> ptmp = m_hb.insert(pair<K, V>(key, V()));iterator itmp = ptmp.first;return (*itmp).second;}const V& operator[](const K& key) const{return (*(m_hb.insert(pair<K, V>(key, V()))).first).second;} };};

    哈希桶頭文件

    #pragma once #include <vector> using namespace std;namespace dg {template<class T>class HashBucketNode{T m_val;HashBucketNode<T>* m_next;HashBucketNode(const T& val = T()) :m_val(val),m_next(nullptr){}template<class K, class V, class KeyofValue, class HF>friend class HashBucket;};class dealInt{public:int operator()(int n){return n;}};template<class K, class V, class KeyofValue, class HF = dealInt>class HashBucket{vector<HashBucketNode<V>*> m_data;size_t m_size;static long long s_m_primeTable[30];int m_primePos;public:HashBucket(size_t capacity = s_m_primeTable[0]) :m_data(capacity, nullptr),m_size(0),m_primePos(0){}~HashBucket(){clear();}class iterator{public:HashBucket<K, V, KeyofValue, HF>* m_hb;HashBucketNode<V>* m_node;iterator(HashBucketNode<V>* node = nullptr,HashBucket<K, V, KeyofValue, HF>* hbpos = nullptr) :m_node(node),m_hb(hbpos){}iterator(const iterator& it) :m_node(it.m_node),m_hb(it.m_hb){}V& operator*(){return m_node->m_val;}V* operator->(){return &m_node->m_val;}// 前置++iterator operator++(){V val = m_node->m_val;m_node = m_node->m_next;if (!m_node){int bucketno = m_hb->hashFunc(KeyofValue()(val)) + 1;for (; bucketno < m_hb->capacity(); bucketno++){if (m_hb->m_data[bucketno]){m_node = m_hb->m_data[bucketno];break;}}}return *this;}iterator operator++(int){HashBucket<K, V, KeyofValue, HF> tmp = *this;++(*this);return tmp;}bool operator==(const iterator& data) const{return m_node == data.m_node && m_hb == data.m_hb;}bool operator!=(const iterator& data) const{return m_node != data.m_node || m_hb != data.m_hb;}};private:int hashFunc(const K& key){HF func;return func(key) % capacity();}void checkCapacity(){if (m_size == capacity()){int mcapa = capacity();vector<HashBucketNode<V>*> tmp(s_m_primeTable[++m_primePos], nullptr);m_data.swap(tmp);m_size = 0;int i;HashBucketNode<V>* cur;for (i = 0; i < mcapa; i++){for (cur = tmp[i]; cur; cur = cur->m_next){insert(cur->m_val);}}}}public:iterator begin(){int bucketno = 0;for (; bucketno < capacity(); bucketno++){if (m_data[bucketno]){return iterator(m_data[bucketno], this);}}return iterator(nullptr, this);}iterator end(){return iterator(nullptr, this);}pair<iterator, bool> insert(const V& val){checkCapacity();int hashnum = hashFunc(KeyofValue()(val));HashBucketNode<V>* tmp;if (m_data[hashnum]){for (tmp = m_data[hashnum]; tmp; tmp = tmp->m_next){if (tmp->m_val == val){pair<iterator, bool> pairtmp;pairtmp.first = end();pairtmp.second = false;return pairtmp;}}}tmp = new HashBucketNode<V>(val);tmp->m_next = m_data[hashnum];m_data[hashnum] = tmp;m_size++;pair<iterator, bool> pairtmp;iterator it(m_data[hashnum], this);pairtmp.first = it;pairtmp.second = true;return pairtmp;}iterator erase(const V& val){int hashnum = hashFunc(KeyofValue()(val));HashBucketNode<V>* tmp;if (!m_data[hashnum]){return end();}if (m_data[hashnum]->m_val == val){iterator res(m_data[hashnum], this);++res;tmp = m_data[hashnum];m_data[hashnum] = tmp->m_next;delete tmp;m_size--;return res;}else{for (tmp = m_data[hashnum]; tmp->m_next; tmp = tmp->m_next){if (tmp->m_next->m_val == val){iterator res(tmp->m_next, this);++res;HashBucketNode<V>* cur;cur = tmp->m_next;tmp->m_next = cur->m_next;delete cur;m_size--;return res;}}return end();}}iterator find(const V& val){int hashnum = hashFunc(KeyofValue()(val));HashBucketNode<V>* cur;for (cur = m_data[hashnum]; cur; cur = cur->m_next){if (cur->m_val == val){return iterator(cur, this);}}return iterator(nullptr, this);}void clear(){HashBucketNode<V>* tmp;for (auto& head : m_data){while (head){tmp = head;head = head->m_next;delete tmp;}}m_size = 0;}size_t capacity(){return s_m_primeTable[m_primePos];}size_t size(){return m_size;}bool empty(){return m_size == 0;}size_t count(const K& kv){int bucketno = hashFunc(kv);HashBucketNode<V>* cur;for (cur = m_data[bucketno]; cur; cur = cur->m_next){if (KeyofValue()(cur->m_val) == kv){return 1;}}return 0;}size_t bucketCount(){return capacity();}size_t bucketSize(size_t bucketno){HashBucketNode<V>* cur;int count = 0;for (cur = m_data[bucketno]; cur; cur = cur->next){count++;}return count;}};template<class K, class V, class KeyofValue, class HF>long long HashBucket<K, V, KeyofValue, HF>::s_m_primeTable[30] = {11, 23, 47, 89, 179,353, 709, 1409, 2819, 5639,11273, 22531, 45061, 90121, 180233,360457, 720899, 1441807, 2883593, 5767169,11534351, 23068673, 46137359, 92274737, 184549429,369098771, 738197549, 1476395029, 2952790016u, 4294967291u};};

    代碼生成圖

    知識點習題:

  • 下面哪個說法是錯誤的
  • A. 哈希表不可以用數組實現
    B. 隊列可以用數組實現
    C. 二叉樹可以用數組來實現
    D. 棧可以用單項鏈表來實現

    正確答案: A

  • hash map 線程不安全的原因,錯誤的是
  • A. jbk1.7中,在多線程環境下,擴容時會造成數據丟失
    B. jbk1.7中,在多線程環境下,擴容時會造成環形鏈
    C. jbk1.8中,在多線程環境下,擴容時會造成環形鏈
    D. jbk1.8中,在多線程環境下,會發生數據覆蓋的情況

    正確答案: C

    答案解析:

    HashMap的線程不安全體現在會造成死循環、數據丟失、數據覆蓋這些問題。其中死循環和數據丟失是在JDK1.7中出現的問題,在JDK1.8中已經得到解決,然而1.8中仍會有數據覆蓋這樣的問題。(Java 方面)


    如有不同見解,歡迎留言討論

    總結

    以上是生活随笔為你收集整理的C++:哈希(闭散列、开散列)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产特级毛片 | 91探花系列在线播放 | 久久久香蕉视频 | 97国产电影 | 国产99久久精品一区二区300 | 国产国产人免费人成免费视频 | 偷拍福利视频一区二区三区 | 日本最新高清不卡中文字幕 | 综合激情伊人 | av在线免费在线观看 | av日韩在线网站 | 在线看不卡av | 99视频免费 | 亚洲草视频 | 亚洲精品国产精品久久99热 | 狠狠色丁香婷婷综合基地 | 久久精品二区 | 色婷婷综合久久久久中文字幕1 | 午夜精品久久久久久久99水蜜桃 | 美女福利视频 | 欧美大荫蒂xxx | 在线视频观看亚洲 | 国产精品黑丝在线观看 | 久久久久久欧美二区电影网 | 日本黄色免费看 | 天天操天天操天天操天天操天天操 | 久久久高清 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚色视频在线观看 | 欧美精品免费在线观看 | 色婷婷激情四射 | 蜜桃视频在线视频 | 欧美男同视频网站 | 免费黄色a网站 | 欧美色图东方 | 免费日韩一区二区三区 | 99久久久国产精品美女 | 黄色毛片视频免费 | 久久tv | 久久久久国产一区二区三区四区 | 亚洲1区在线 | 欧美日韩亚洲在线 | 成人一区二区三区在线 | 国产一二区视频 | 国产一区 在线播放 | 好看的国产精品视频 | 一区二区三区福利 | 中文在线a天堂 | 天天操天天干天天玩 | av在线在线| 国产一区国产二区在线观看 | 美女亚洲精品 | 911久久香蕉国产线看观看 | 免费视频久久久 | 在线不卡视频 | 欧美与欧洲交xxxx免费观看 | 日本不卡一区二区 | av成人在线播放 | 国产成在线观看免费视频 | 日本中文字幕网址 | 亚洲天堂色婷婷 | 色欧美88888久久久久久影院 | 成年人视频在线免费 | 久久艹在线 | 婷婷电影在线观看 | 免费看成年人 | 国产精品免费一区二区三区在线观看 | 欧美一二三区在线观看 | 国产精品一区二区三区久久 | 国产一区二区三区黄 | 亚洲精品乱码久久久久久久久久 | 国产精品99爱| 国产色女 | 五月激情视频 | 久久综合亚洲鲁鲁五月久久 | 亚洲伦理一区二区 | 欧美极品xxxxx | 黄色在线看网站 | 久久久久久久久久久久影院 | 涩涩网站在线 | 久久国产免费 | 国产一级二级三级在线观看 | 国产99一区| av黄色国产| 国产精品岛国久久久久久久久红粉 | 精品在线播放视频 | 久久久久久久久久免费 | 亚洲欧美日本国产 | 黄色成人在线网站 | 三级黄色网址 | 丁香激情五月 | 久草在线高清视频 | 中文字幕日韩精品有码视频 | 国产一二三精品 | 亚洲va欧美va | 91麻豆精品国产91久久久久久久久 | 国产精品va在线播放 | 久久久www免费电影网 | 色综合五月天 | 最近日本韩国中文字幕 | www亚洲一区 | 日本免费久久高清视频 | 亚洲精品视频 | 久久歪歪 | 97在线观看免费观看 | 国产中的精品av小宝探花 | 色综合天天视频在线观看 | 久久久高清免费视频 | 亚洲成人动漫在线观看 | 欧洲成人免费 | 最近中文字幕在线中文高清版 | av高清在线观看 | 色综合综合| 久久99精品国产99久久6尤 | 国产精品女同一区二区三区久久夜 | 天天综合网~永久入口 | www色网站 | 国模视频一区二区三区 | 国产成人精品久久亚洲高清不卡 | 国产在线精品国自产拍影院 | 丁香色综合 | 国产va饥渴难耐女保洁员在线观看 | 日韩在线中文字幕 | 日本久久影视 | 狠狠干狠狠久久 | 国产亚洲激情视频在线 | 亚洲五月婷婷 | 人人爽人人爽人人片 | 夜又临在线观看 | 国产精品99久久久久久久久久久久 | 99精品在线观看 | 91麻豆免费视频 | 天天操天天操 | 在线视频电影 | 久久精品官网 | 午夜精品久久久久 | 久草在线视频网站 | 在线观看播放av | 国产专区视频在线观看 | 丁香久久婷婷 | 不卡电影一区二区三区 | 亚洲精品福利视频 | 日韩一区二区三区免费视频 | 免费在线激情电影 | 天天射天天干天天插 | 久久免费视频这里只有精品 | 国产99久久久国产精品免费二区 | 亚洲精品美女在线观看播放 | 国产精品久久99综合免费观看尤物 | 午夜视频在线观看一区二区 | 人人爽人人爱 | 亚洲mv大片欧洲mv大片免费 | 探花视频在线观看免费版 | 草久在线视频 | 激情图片区 | 国产传媒中文字幕 | 亚洲精品小视频 | av中文天堂在线 | 亚洲成人999 | 国产精品免费观看网站 | 久久人人97超碰精品888 | 精品一区二区在线免费观看 | 黄色av电影免费观看 | 狠狠色丁香婷婷综合欧美 | 波多野结衣网址 | 色婷婷综合久久久久中文字幕1 | 激情综合网五月婷婷 | 成人午夜影院 | 亚洲精品欧美专区 | 丁香影院在线 | 国产精品一区二区视频 | 99高清视频有精品视频 | 91免费版在线观看 | 91在线永久| 欧美二区视频 | av超碰免费在线 | 特片网久久 | 亚洲精品在线免费观看视频 | 久久成人国产精品入口 | 99在线热播精品免费99热 | 日日爱av | 久久精品激情 | 在线观看第一页 | 国产精品露脸在线 | 特级片免费看 | 国产一区二区精品久久 | 91av在线免费观看 | 免费国产黄线在线观看视频 | 欧美日韩一区二区久久 | www.天堂av| 国产精品日韩久久久久 | 91理论电影| 久久国内视频 | 人人玩人人添人人澡超碰 | 亚洲人人网| 三级黄色网络 | 69亚洲视频| 91激情视频在线 | 久草www| 日操干 | 91在线影视 | 亚洲人人网 | 在线观看蜜桃视频 | 国产日产欧美在线观看 | 日本久久视频 | 欧美另类tv | 九月婷婷人人澡人人添人人爽 | 中文字幕视频 | 国产精品视频全国免费观看 | 精品久久久精品 | 亚洲黄色一级大片 | 偷拍区另类综合在线 | 国产一卡在线 | 久久99久久99精品中文字幕 | 成人黄色小说视频 | 国产精品久久久久久久久久99 | 久影院| 国产一级精品在线观看 | 日韩精品首页 | 视频在线观看91 | 国产在线不卡 | 一区二区激情视频 | 三级黄色在线观看 | 国产午夜精品福利视频 | 伊人五月天综合 | 中文字幕乱码视频 | 国产99久久精品一区二区300 | 国产黄色在线网站 | 日日夜夜网 | 中文字幕中文字幕在线中文字幕三区 | 特级西西444www大胆高清无视频 | av免费看电影 | 9幺看片| 久久高清国产视频 | 中文字幕中文字幕在线中文字幕三区 | 天天综合网国产 | 久久理伦片 | 国产中文字幕在线观看 | 91精品久 | 国产成人精品av在线观 | 最近最新中文字幕 | 国产超碰在线观看 | 99视频在线观看一区三区 | 日韩理论在线 | 亚洲欧美经典 | 精品九九九 | 色婷婷视频在线观看 | 精品免费视频. | 久久久久久高潮国产精品视 | 国产精品久久久久久久久久久久午夜 | 国内精品久久久久久中文字幕 | 播五月综合 | 日韩精品五月天 | 午夜精品福利影院 | 韩国一区二区三区视频 | 欧美日韩一区二区免费在线观看 | 亚洲精品国产精品国产 | 色网站免费在线观看 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 韩国av永久免费 | 五月天天天操 | 国产精品一区二区久久精品爱涩 | 免费久久99精品国产婷婷六月 | 91精品一区国产高清在线gif | 一区在线观看 | 综合在线观看 | 综合色中文 | 久久 地址| 久久伊人综合 | 日韩免费一区 | 黄色一级免费 | 中文字幕日韩国产 | 成人黄色av网站 | 久久这里只有精品首页 | 日韩精品一区二区三区在线视频 | 久久久久国产一区二区三区四区 | 欧美激情第八页 | 久久69精品久久久久久久电影好 | 国内揄拍国内精品 | 国产精品综合久久久 | 久久最新视频 | 国产精品美女毛片真酒店 | 亚洲国产精品久久久久婷婷884 | 夜夜躁日日躁狠狠久久av | 五月婷婷综合在线观看 | 人人插人人草 | 婷婷久久网 | 精品美女在线视频 | 奇米影视777四色米奇影院 | 天天综合入口 | 天天干夜夜想 | 国产免费又黄又爽 | 曰本三级在线 | 日韩一级黄色大片 | 久久99在线| 欧美性做爰猛烈叫床潮 | 久久国产一区 | 日本黄色免费大片 | 激情六月婷婷久久 | 黄网站色欧美视频 | 日本中文字幕视频 | 亚洲欧洲精品一区二区精品久久久 | 欧美色黄| 波多野结衣在线观看一区二区三区 | 91成人精品在线 | 草久视频在线 | 国产精品亚洲片夜色在线 | 99久久久久久国产精品 | 亚洲综合在线五月天 | 欧美精品乱码久久久久久按摩 | 免费热情视频 | 一区二区三区四区五区六区 | 亚洲综合欧美日韩狠狠色 | 97在线免费观看 | 日韩大片在线播放 | 91麻豆免费版 | 天天色草 | 日本爱爱免费 | 欧美亚洲xxx | 久久人人看 | 色婷婷免费 | 色视频网址 | 香蕉视频啪啪 | 中文资源在线观看 | 久久国产福利 | 91黄色小视频 | 在线成人免费电影 | 成人精品一区二区三区中文字幕 | 久久久久综合 | 国产精品亚洲人在线观看 | 国产黄免费在线观看 | 欧美一级性| 91成人免费视频 | 91视频免费网站 | 色天天综合久久久久综合片 | 欧美另类一二三四区 | 92国产精品久久久久首页 | 中文日韩在线视频 | 亚洲欧洲精品视频 | 亚洲免费av一区二区 | 六月激情久久 | 成人毛片一区二区三区 | 亚洲欧美日韩精品久久久 | 精品国产欧美 | 国产在线不卡 | 国产日韩av在线 | 亚洲视频www | 97色婷婷 | 日韩视频一区二区 | 中文字幕在线看视频国产中文版 | 91爱看片 | 午夜精品久久久久久久久久久久 | 综合色狠狠 | 狠狠狠狠狠干 | 麻豆免费视频网站 | 手机看国产毛片 | 久草免费在线观看 | 中文字幕网址 | 精品一二三四在线 | 免费在线激情视频 | 青青五月天 | 狠狠躁天天躁综合网 | 天堂av高清 | 国产不卡免费 | 国产玖玖精品视频 | 国产精品视频永久免费播放 | 日日草天天草 | 亚洲成av人片在线观看www | 成人av影视在线 | 99精品国产兔费观看久久99 | 在线观看免费91 | 久久精选| 国产一区二区三区免费在线观看 | 亚洲国产中文字幕在线 | 中文字幕在线观看日本 | 97超碰人人澡人人爱 | 久久精品久久久久电影 | 天天做天天爱天天爽综合网 | 午夜骚影| 亚洲国产大片 | 免费在线观看日韩欧美 | 亚洲精品在线观看免费 | 久久9999久久免费精品国产 | 日本性动态图 | 黄污网| 国产精品美乳一区二区免费 | 久久视频在线观看 | 色香网 | 九九免费视频 | 免费在线观看日韩欧美 | 亚洲欧美精品一区 | 中文字幕在 | 天天干一干 | 国产大片免费久久 | 999久久久久久久久 69av视频在线观看 | 精品国产一区二区三区久久 | 毛片一区二区 | 免费在线色 | 麻豆91在线 | 91cn国产在线| 免费激情网 | 久久黄色精品视频 | 免费高清在线观看成人 | 日本中文字幕在线播放 | 国产亚洲字幕 | 9在线观看免费高清完整版在线观看明 | 欧美日韩国产精品一区二区三区 | 免费h在线观看 | 国产剧情久久 | 最近中文字幕免费av | 日本免费久久高清视频 | 日韩视频在线观看视频 | 99re在线视频观看 | 97免费在线观看视频 | 91麻豆精品国产91久久久久久久久 | 在线你懂 | 日韩免费大片 | 国产黄在线 | 狠狠操影视 | 亚洲成人网在线 | 麻豆国产精品va在线观看不卡 | 国内小视频在线观看 | 摸阴视频| 久久黄色影视 | 手机在线欧美 | 天天色.com| 成 人 免费 黄 色 视频 | 狠狠网站 | a级一a一级在线观看 | 日韩中文字幕在线看 | 五月天久久婷 | 国产精品日韩高清 | 精品久久精品久久 | 亚洲国产精品va在线看黑人 | 国产不卡一二三区 | 免费黄色网止 | 黄色小网站在线观看 | 久久人人爽人人爽人人片av免费 | 日韩va欧美va亚洲va久久 | 99亚洲国产 | 久久精品视频在线播放 | 久久国产精品久久久久 | 久久久www成人免费精品 | 欧美国产日韩一区 | 玖玖视频网 | 国产黄色精品视频 | 亚洲成a人片综合在线 | 国产成人不卡 | 久久这里只有精品首页 | 亚洲夜夜综合 | 欧美一级性视频 | 8x成人免费视频 | 成x99人av在线www | 久草视频中文在线 | 久草视频在线免费播放 | 人人插人人玩 | 亚洲国产人午在线一二区 | 色综合天天综合网国产成人网 | 三级黄色在线观看 | 激情综合色综合久久综合 | 欧美日韩不卡在线视频 | 国产手机视频在线播放 | 午夜影院日本 | 国产一级在线观看视频 | 国产黑丝一区二区三区 | 欧美精品一区二区在线播放 | 久久久久国产精品免费网站 | 久久精品一区二区三区中文字幕 | 丁香五月亚洲综合在线 | 91麻豆精品国产91久久久使用方法 | 日韩,精品电影 | 婷婷av网站 | 亚洲视频综合 | 日韩精品一区二区三区视频播放 | 91视频首页 | av看片在线 | 婷婷丁香色 | 国产精品久久久久久超碰 | 日韩特黄一级欧美毛片特黄 | 日韩精品一卡 | 天天婷婷| 91av资源网| 日韩动漫免费观看高清完整版在线观看 | 高清免费在线视频 | 99re热精品视频 | 69av在线播放 | 国产不卡在线观看视频 | 在线免费av播放 | 亚洲精品激情 | www.天天成人国产电影 | www久草 | 久久精品综合网 | 黄色三级免费观看 | 国产网红在线 | 亚洲乱亚洲乱亚洲 | 国产香蕉久久精品综合网 | 国产成人精品综合久久久久99 | 久久久久成人精品免费播放动漫 | 亚洲综合色视频 | 久久久www成人免费精品 | 国产精品99久久久 | 懂色av懂色av粉嫩av分享吧 | 久久久久亚洲精品男人的天堂 | 综合网伊人 | 99久久精品免费看国产免费软件 | 日韩视频一区二区三区 | 日韩av免费在线电影 | 一级欧美日韩 | 国产亚洲精品日韩在线tv黄 | 久久久久久高潮国产精品视 | 美女久久| www.一区二区三区 | 黄色在线成人 | 黄色毛片在线观看 | 在线观看亚洲免费视频 | 黄色的视频网站 | 国产xxxx性hd极品 | 丁香视频免费观看 | 4438全国亚洲精品在线观看视频 | 美女网站在线免费观看 | 日韩精品一区二区三区免费视频观看 | 国产视频一 | 国产精品久久伊人 | 成人激情开心网 | 九七视频在线 | 欧美在线一 | 国产一区二区综合 | 国产99久 | 成年人在线播放视频 | 国产中文字幕久久 | 九九热在线视频免费观看 | 丁香婷婷色综合亚洲电影 | 一本一道久久a久久精品 | 成 人 a v天堂 | 国产精品久久久久免费 | 日韩精品中文字幕在线不卡尤物 | 激情动态 | 亚洲日本在线视频观看 | 国产理论在线 | 五月激情片 | 日韩免费在线 | 久草网在线 | 久久xx视频 | 中文字幕色综合网 | 天天色视频 | 91精品国产99久久久久 | 久香蕉| 欧美一级性生活视频 | 中文字幕在线观看第二页 | 国产精品18久久久久久久网站 | 国产精品久久久久久久久久新婚 | 中文字幕在线观看完整版 | 超碰官网 | 在线看v片 | 国产精品激情在线观看 | 鲁一鲁影院 | 国内精品久久久久久久久久久 | a在线观看视频 | 一区二区三区 亚洲 | 麻豆免费视频 | 午夜久久| 中文字幕在| 久久这里有精品 | 国产尤物在线观看 | 亚洲国产精品第一区二区 | 久久久免费电影 | 18网站在线观看 | 色婷婷在线观看视频 | 亚洲影院一区 | 最近免费中文字幕 | 国产成人av片 | 日韩成人在线一区二区 | 欧美激精品 | 久久久网页 | 亚洲片在线观看 | 欧美色图东方 | 国产三级久久久 | 国产夫妻性生活自拍 | 免费大片黄在线 | 国产色道| 免费亚洲精品 | 久草免费资源 | 五月婷婷综合网 | 久久视屏网 | 91久草视频 | 国产精品久久网站 | 国产精品99视频 | 国产精品久久一区二区三区, | 国产护士hd高朝护士1 | 看av在线| 天天射网站 | 日韩中字在线 | 人人澡超碰碰97碰碰碰软件 | 丁香综合五月 | 成人免费看黄 | 美女视频黄在线观看 | 国产中文字幕在线免费观看 | 久久一视频 | 天天操天天干天天插 | 午夜神马福利 | 激情www| 国产一区二区不卡视频 | 精品一区av| 狠狠色丁香婷婷综合久小说久 | 国产精品国产三级国产专区53 | 久久人人爽人人片 | 国产高清免费视频 | 亚洲一区二区精品在线 | 97电影院网| 日韩免费视频观看 | 伊人久久国产 | 99精品国产高清在线观看 | 亚洲视频免费视频 | 伊甸园永久入口www 99热 精品在线 | 国产麻豆视频 | 亚洲一区二区三区精品在线观看 | 探花视频在线观看免费 | 亚洲天堂毛片 | 国产99久久精品 | 亚洲精品久久在线 | 久热这里有精品 | 在线观看av大片 | aaa日本高清在线播放免费观看 | 欧美另类v| 99热这里只有精品1 av中文字幕日韩 | 精品毛片久久久久久 | 三级免费黄色 | 日日干日日色 | av在线免费不卡 | 久久久久久久精 | 丝袜足交在线 | 久久9999久久免费精品国产 | 江苏妇搡bbbb搡bbbb | 久久超级碰视频 | 99久久久久国产精品免费 | www激情com| 欧美先锋影音 | 亚洲视频免费在线看 | 夜夜爽88888免费视频4848 | 天天干,天天干 | 国产精品美女999 | 一区二区视频在线播放 | 久久久久久网 | 五月婷婷开心中文字幕 | 日韩av伦理片 | 探花视频免费在线观看 | 国产精品久久久久永久免费观看 | 亚洲经典精品 | 色狠狠综合天天综合综合 | 国产 在线 高清 精品 | 激情五月在线观看 | 精品视频专区 | 免费看国产视频 | 久久久精品亚洲 | 免费在线观看黄色网 | 青草视频免费观看 | 天天天干夜夜夜操 | 人人澡人人爱 | 狠狠色噜噜狠狠 | 日韩高清一区二区 | 夜添久久精品亚洲国产精品 | 亚洲一区二区精品3399 | 亚洲午夜精品一区二区三区电影院 | 亚洲成人黄色在线 | 奇米导航 | 在线观看www视频 | 久久综合久久鬼 | 视频三区在线 | 久久国产高清视频 | 成人精品国产免费网站 | 亚洲精品久久久蜜臀下载官网 | 在线中文字幕观看 | 亚洲专区路线二 | 久久你懂的 | 国产伦精品一区二区三区… | 成年人三级网站 | 午夜精品久久久久久 | 人人干网 | 日本精品小视频 | 五月开心婷婷 | 亚洲婷婷在线视频 | 日本一区二区三区免费看 | 在线欧美日韩 | 最近中文字幕高清字幕在线视频 | 久久综合色综合88 | 国产在线观看你懂得 | 人人干网站 | 午夜精品一区二区三区在线播放 | 国产一区在线免费观看 | 99视频99 | 亚洲精品久 | 国产视频中文字幕 | 日韩色综合网 | 久久中文网 | www.五月天激情 | 精品国产伦一区二区三区 | 麻豆精品传媒视频 | 美女黄频视频大全 | 国产区欧美 | 国产一区网址 | 久久不卡av | 免费在线播放视频 | 婷婷中文字幕在线观看 | 国产视频一区二区三区在线 | 69xx视频 | 二区三区中文字幕 | 中文字幕亚洲精品日韩 | 国产日韩欧美在线播放 | 久久久精品一区二区三区 | 91大神dom调教在线观看 | 亚洲伦理中文字幕 | 午夜av影院| 日日干av | 日韩一区二区三区免费视频 | 91福利在线导航 | 99热国内精品 | 一区二区av | 免费精品人在线二线三线 | 四虎8848免费高清在线观看 | 国产成人av一区二区三区在线观看 | 九九热在线精品 | 国产日韩欧美在线一区 | 亚洲精品高清视频在线观看 | 国产福利一区在线观看 | 亚洲精品在线视频网站 | 九九九热精品免费视频观看网站 | 人人射人人爱 | 天天操天天干天天操天天干 | 美女久久久久久久久久久 | 在线观看一区二区视频 | 丁香高清视频在线看看 | 欧美激情视频一二区 | 成人在线视频网 | 国产69精品久久久久久久久久 | 亚洲激情在线观看 | 91视频中文字幕 | 91精品视屏| 国产日韩精品一区二区三区在线 | 808电影免费观看三年 | 丁香六月天婷婷 | 98超碰在线 | 天天综合网~永久入口 | 欧美激情综合五月色丁香 | 成人丁香花 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 婷婷激情站 | 五月婷婷在线播放 | www成人av| 精品国产一区二区三区免费 | 久久九九久久九九 | 欧美成年黄网站色视频 | 久久爱资源网 | av日韩在线网站 | 久久人人爽人人片 | 91精品国产网站 | 六月天色婷婷 | 日本激情中文字幕 | 色偷偷88888欧美精品久久久 | 中文字幕在线观看一区 | 伊人激情综合 | 中文字幕视频三区 | 亚洲日本欧美 | 午夜三级影院 | 二区三区在线视频 | 国产最新视频在线观看 | 日韩欧美一区二区三区视频 | 亚洲最大成人网4388xx | 91香蕉久久| 公开超碰在线 | 日韩av一区二区三区在线观看 | 成年人免费看的视频 | 91在线日韩| 亚洲欧洲一区二区在线观看 | 午夜视频导航 | 久久久久久免费毛片精品 | 精品久久久久久亚洲综合网站 | 99热这里只有精品国产首页 | 久久丝袜视频 | 精品一区二区在线观看 | 久久99久久99精品中文字幕 | 亚洲无吗av | 96精品在线| 中文字幕av有码 | 亚洲精品视频免费在线观看 | 久久久麻豆视频 | 欧美综合在线视频 | 精品视频免费观看 | 亚洲精品999 | 中文字幕在线观看91 | 久久久精品影视 | 一区二区三区污 | 欧美成人一区二区 | 久草视频在线观 | 婷婷社区五月天 | 麻豆视频在线免费 | 亚洲精品视频在线观看视频 | 精品久久久久久综合 | 色综合久久中文字幕综合网 | 久久久久久免费毛片精品 | 人人看人人艹 | 99精品国产视频 | 成人免费共享视频 | 综合久久久久久 | av不卡网站| 日韩成人看片 | 婷婷视频在线观看 | 亚洲国产激情 | 久久在线免费观看视频 | 亚洲黄色三级 | 日韩视频一区二区 | 日本久久精品 | 九九免费在线观看 | 国产精品乱码高清在线看 | 日韩在线观看中文 | aaa黄色毛片 | 欧美日韩精品在线观看 | 中文字幕在线中文 | 在线成人免费电影 | 久久99精品国产91久久来源 | 黄色字幕网 | 免费一级特黄毛大片 | 成人av资源网站 | 国内视频在线观看 | 久草视频首页 | 国产不卡av在线播放 | 亚洲精品乱码久久久久久 | 欧美日韩国产成人 | а天堂中文最新一区二区三区 | av免费看在线 | 免费视频黄色 | 久久国产日韩 | 久久久久久网站 | www.伊人网| www.69xx| 日日夜夜狠狠干 | 久久a久久| 久久久久久久久综合 | 亚洲综合成人专区片 | 精品视频成人 | 97超级碰碰碰视频在线观看 | 色在线高清 | 久久久黄色免费网站 | 午夜久久电影网 | 国产精品 日韩 欧美 | 欧洲黄色片 | 在线观看一级片 | 亚洲精品国偷拍自产在线观看 | 国产精品亚洲成人 | 91香蕉视频720p| 国产a网站 | 奇米影视8888在线观看大全免费 | 日韩一级黄色片 | 中文国产成人精品久久一 | 在线免费观看亚洲视频 | 国产精品一区二区免费看 | 五月香婷| 欧美日韩大片在线观看 | 在线影院中文字幕 | 99一级片 | 久久久久久久久免费视频 | 国产视频欧美视频 | 日本久久不卡视频 | 在线超碰av | 一级性生活片 | 美女av电影 | japanesexxxhd奶水 91在线精品一区二区 | 日韩欧美视频在线免费观看 | 91在线看片 | 97超碰人人澡人人 | 久久免费电影网 | 国产一区二区在线免费 | 探花视频在线观看+在线播放 | 欧美最爽乱淫视频播放 | www色网站 | 亚洲aⅴ乱码精品成人区 | 久久黄色美女 | 日韩免费一区二区三区 | 国产黄色片久久久 | 天天爽夜夜爽精品视频婷婷 | 青草草在线 | 久久av网 | 日本久久久久久久久久 | 免费看黄在线 | 久久综合精品一区 | 国产高清免费视频 | 国产精品久久久久影视 | 国产在线看一区 | 一级黄色片网站 | 精品久久久久一区二区国产 | 中文字幕av播放 | 天天色天天搞 | 日韩精品免费一区二区在线观看 | 国产精品久久影院 | 成人九九视频 | 日韩h在线观看 | 国产 日韩 欧美 中文 在线播放 | 毛片无卡免费无播放器 | 日韩中文字幕亚洲一区二区va在线 | 精品国产一区二区三区久久久 | 97超碰国产在线 | 国产一区在线免费 | 2023天天干 | 精品在线观看一区二区 | 国产96av| 高清av网站| 99国产免费网址 | 午夜在线国产 | 久久国产品 | 日本精品视频一区 | 国内久久久 | 日韩在线视频一区二区三区 | 91麻豆精品国产91久久久无需广告 | 国产黄色一级大片 | 国产精品男女 | 涩涩色亚洲一区 | 高清一区二区三区av | 97视频亚洲 | 日韩午夜小视频 | 久草免费在线观看 | 色吊丝在线永久观看最新版本 | 欧美日韩国产精品爽爽 | 国产丝袜美腿在线 | 国产一区在线播放 | 99九九99九九九视频精品 | 久久午夜网 | 99热只有精品在线观看 | 97超碰人人澡 | 中文字幕免费成人 | 国产精品 日韩 欧美 | 久久久午夜精品福利内容 | 96亚洲精品久久久蜜桃 | 国产精品中文 | 色婷婷激情四射 | 欧美一二三区在线播放 | 国产成人av综合色 | 欧美成人在线网站 | 国产啊v在线 | 精品国产大片 | www色综合 | 久久精品国产美女 | 狂野欧美激情性xxxx欧美 | 日韩欧美精品在线观看视频 | 五月婷婷一级片 | 9ⅰ精品久久久久久久久中文字幕 | 色综合久久中文综合久久牛 | 精品久久久久久久久久国产 | 高清不卡免费视频 | 午夜精品久久久久久久久久久久久久 | 五月天亚洲综合 | 国产精品一区二区吃奶在线观看 | 国产精品福利一区 | 久久精品五月 | 日日干天天爽 | 国产v在线 | 亚洲精品美女久久久久网站 | 一级黄色片在线免费观看 | 九九热只有精品 | 中文字幕在线看视频国产中文版 | 日韩一区二区三区免费视频 | 九九热在线视频免费观看 | 四虎影视成人永久免费观看视频 | 色婷婷狠狠五月综合天色拍 | 欧美做受高潮1 | 国产午夜三级 | 欧美日韩国产色综合一二三四 | 亚洲午夜精品电影 | 波多野结衣理论片 | 国产精品免费在线 | 久久视频在线免费观看 | 午夜色场 | 亚洲精品美女免费 | 色综合天天爱 | 日日草av | 精品久久久久久久久久久久久久久久 | 超碰在线观看99 | 亚洲爱爱视频 | 九色视频网址 | 日韩中文字幕免费视频 | 欧美 高跟鞋交 xxxxhd | 亚洲狠狠丁香婷婷综合久久久 | 亚洲天天综合 | 亚洲人在线 | 亚洲人在线7777777精品 | 婷婷精品国产一区二区三区日韩 | 久艹在线观看视频 | 久久福利影视 | 国产不卡精品 | 中文字幕在线视频国产 | 日韩中文字幕亚洲一区二区va在线 | 欧美一区二区三区激情视频 | 亚洲女人天堂成人av在线 | 玖玖在线播放 | 深爱激情五月综合 | 日本激情中文字幕 | 国产精品99久久久精品免费观看 | 九七视频在线 | 久久只精品99品免费久23小说 | 日韩成人看片 |