亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? b-.cpp

?? 有關B-樹的刪除添加修改操作
?? CPP
字號:

#define M 3 
/* B 樹的階,即非根節點中鍵的最小數目*/ 
typedef int typekey; 
typedef struct btnode {    /* B-Tree 節點 */ 
    int d;    /* 節點中鍵的數目 */ 
    typekey k[2*M];    /* 鍵 */ 
    char *v[2*M];    /* 值 */ 
    struct btnode *p[2*M+1];    /* 指向子樹的指針 */ 
} node, *btree; 
/* 
* 每個鍵的左子樹中的所有的鍵都小于這個鍵, 
* 每個鍵的右子樹中的所有的鍵都大于等于這個鍵。 
* 葉子節點中的每個鍵都沒有子樹。 
*/ 

/* 當 M 等于 1 時也稱為 2-3 樹 
*    +----+----+ 
*    | k0 | k1 |                     
*  +-+----+----+--- 
*  | p0 | p1 | p2 | 
*  +----+----+----+ 
*/ 
extern int btree_disp; /* 查找時找到的鍵在節點中的位置 */ 
extern char * InsValue; /* 與要插的鍵相對應的值 */ 

 btree search(typekey, btree); 
 btree insert(typekey,btree); 
 btree deleteB(typekey,btree); 
 int height(btree); 
 int count(btree); 
 double payload(btree); 
 btree deltree(btree); 
/* end of btrees.h */ 

/*******************************************************/ 

/* btrees.c */ 
#include <stdlib.h> 
#include <stdio.h> 


btree search(typekey, btree); 
btree insert(typekey,btree); 
btree deleteB(typekey,btree); 
int height(btree); 
int count(btree); 
double payload(btree); 
btree deltree(btree); 

static void InternalInsert(typekey, btree); 
static void InsInNode(btree, int); 
static void SplitNode(btree, int); 
static btree NewRoot(btree); 

static void InternalDelete(typekey, btree); 
static void JoinNode(btree, int); 
static void MoveLeftNode(btree t, int); 
static void MoveRightNode(btree t, int); 
static void DelFromNode(btree t, int); 
static btree FreeRoot(btree); 

static btree delall(btree); 
static void Error(int,typekey); 

int btree_disp; /* 查找時找到的鍵在節點中的位置 */ 
char * InsValue = NULL; /* 與要插的鍵相對應的值 */ 
static int flag; /* 節點增減標志 */ 
static int btree_level = 0; /* 多路樹的高度 */ 
static int btree_count = 0; /* 多路樹的鍵總數 */ 
static int node_sum = 0;  /* 多路樹的節點總數 */ 
static int level; /* 當前訪問的節點所處的高度 */ 
static btree NewTree; /* 在節點分割的時候指向新建的節點 */ 
static typekey InsKey; /* 要插入的鍵 */ 

btree search(typekey key, btree t) 
{ 
    int i,j,m; 
    level=btree_level-1; 
    while (level >= 0){ 
        for(i=0, j=t->d-1; i<j; m=(j+i)/2, (key > t->k[m])?(i=m+1):(j=m)); 
        if (key == t->k [ i ]){ 
            btree_disp = i; 
            return t; 
        } 
        if (key > t->k [ i ]) /* i == t->d-1 時有可能出現 */ 
            i++; 
        t = t->p[ i ]; 
        level--; 
    } 
    return NULL; 
} 

btree insert(typekey key, btree t) 
{ 
    level=btree_level; 
    InternalInsert(key, t); 
    if (flag == 1)  /* 根節點滿之后,它被分割成兩個半滿節點 */ 
        t=NewRoot(t);    /* 樹的高度增加 */ 
    return t; 
} 

void InternalInsert(typekey key, btree t) 
{ 
    int i,j,m; 

    level--; 
    if (level < 0){ /* 到達了樹的底部: 指出要做的插入 */ 
        NewTree = NULL; /* 這個鍵沒有對應的子樹 */ 
        InsKey = key; /* 導致底層的葉子節點增加鍵值+空子樹對 */ 
        btree_count++; 
        flag = 1; /* 指示上層節點把返回的鍵插入其中 */ 
        return; 
    } 
    for(i=0, j=t->d-1; i<j; m=(j+i)/2, (key > t->k[m])?(i=m+1):(j=m)); 
    if (key == t->k[ i ]) { 
        Error(1,key); /* 鍵已經在樹中 */ 
        flag = 0; 
        return; 
    } 
    if (key > t->k[ i ]) /* i == t->d-1 時有可能出現 */ 
        i++; 
    InternalInsert(key, t->p[ i ]); 

    if (flag == 0) 
        return; 
    /* 有新鍵要插入到當前節點中 */ 
    if (t->d < 2*M) {/* 當前節點未滿 */ 
        InsInNode(t, i); /* 把鍵值+子樹對插入當前節點中 */ 
        flag = 0; /* 指示上層節點沒有需要插入的鍵值+子樹,插入過程結束 */ 
    } 
    else /* 當前節點已滿,則分割這個頁面并把鍵值+子樹對插入當前節點中 */ 
        SplitNode(t, i); /* 繼續指示上層節點把返回的鍵值+子樹插入其中 */ 
} 

/* 
* 把一個鍵和對應的右子樹插入一個節點中 
*/ 
void InsInNode(btree t, int d) 
{ 
    int i; 
    /* 把所有大于要插入的鍵值的鍵和對應的右子樹右移 */ 
    for(i = t->d; i > d; i--){ 
        t->k[ i ] = t->k[i-1]; 
        t->v[ i ] = t->v[i-1]; 
        t->p[i+1] = t->p[ i ]; 
    } 
    /* 插入鍵和右子樹 */ 
    t->k[ i ] = InsKey; 
    t->p[i+1] = NewTree; 
    t->v[ i ] = InsValue; 
    t->d++; 
} 
/* 
* 前件是要插入一個鍵和對應的右子樹,并且本節點已經滿 
* 導致分割這個節點,插入鍵和對應的右子樹, 
* 并向上層返回一個要插入鍵和對應的右子樹 
*/ 
void SplitNode(btree t, int d) 
{     
    int i,j; 
    btree temp; 
    typekey temp_k; 
    char *temp_v; 
    /* 建立新節點 */ 
    temp = (btree)malloc(sizeof(node)); 
    /* 
     *   +---+--------+-----+-----+--------+-----+ 
     *   | 0 | ...... |  M  | M+1 | ...... |2*M-1| 
     *   +---+--------+-----+-----+--------+-----+ 
     *   |<-      M+1     ->|<-        M-1     ->|   
     */ 
    if (d > M) { /* 要插入當前節點的右半部分 */ 
        /* 把從 2*M-1 到 M+1 的 M-1 個鍵值+子樹對轉移到新節點中, 
         * 并且為要插入的鍵值+子樹空出位置 */ 
        for(i=2*M-1,j=M-1; i>=d; i--,j--) { 
            temp->k[j] = t->k[ i ]; 
            temp->v[j] = t->v[ i ]; 
            temp->p[j+1] = t->p[i+1]; 
        } 
        for(i=d-1,j=d-M-2; j>=0; i--,j--) { 
            temp->k[j] = t->k[ i ]; 
            temp->v[j] = t->v[ i ]; 
            temp->p[j+1] = t->p[i+1]; 
        } 
        /* 把節點的最右子樹轉移成新節點的最左子樹 */ 
        temp->p[0] = t->p[M+1]; 
        /* 在新節點中插入鍵和右子樹 */ 
        temp->k[d-M-1] = InsKey; 
        temp->p[d-M] = NewTree; 
        temp->v[d-M-1] = InsValue; 
        /* 設置要插入上層節點的鍵和值 */ 
        InsKey = t->k[M]; 
        InsValue = t->v[M]; 

    } 
    else { /* d <= M */ 
        /* 把從 2*M-1 到 M 的 M 個鍵值+子樹對轉移到新節點中 */ 
        for(i=2*M-1,j=M-1; j>=0; i--,j--) { 
            temp->k[j] = t->k[ i ]; 
            temp->v[j] = t->v[ i ]; 
            temp->p[j+1] = t->p[i+1]; 
        } 
        if (d == M) /* 要插入當前節點的正中間 */ 
            /* 把要插入的子樹作為新節點的最左子樹 */ 
            temp->p[0] = NewTree; 
            /* 直接把要插入的鍵和值返回給上層節點 */ 
        else { /* (d<M) 要插入當前節點的左半部分 */ 
            /* 把節點當前的最右子樹轉移成新節點的最左子樹 */ 
            temp->p[0] = t->p[M]; 
            /* 保存要插入上層節點的鍵和值 */ 
            temp_k = t->k[M-1]; 
            temp_v = t->v[M-1]; 
            /* 把所有大于要插入的鍵值的鍵和對應的右子樹右移 */ 
            for(i=M-1; i>d; i--) { 
                t->k[ i ] = t->k[i-1]; 
                t->v[ i ] = t->v[i-1]; 
                t->p[i+1] = t->p[ i ]; 
            } 
/* 在節點中插入鍵和右子樹 */ 
            t->k[d] = InsKey; 
            t->p[d+1] = NewTree; 
            t->v[d] = InsValue; 
            /* 設置要插入上層節點的鍵和值 */ 
            InsKey = temp_k; 
            InsValue = temp_v; 
        } 
    } 
    t->d =M; 
    temp->d = M; 
    NewTree = temp; 
    node_sum++; 
} 

btree deleteB(typekey key, btree t) 
{ 
    level=btree_level; 
    InternalDelete(key, t); 
    if (t->d == 0) 
    /* 根節點的子節點合并導致根節點鍵的數目隨之減少, 
     * 當根節點中沒有鍵的時候,只有它的最左子樹可能非空 */ 
        t=FreeRoot(t); 
    return t; 
} 

void InternalDelete(typekey key, btree t) 
{ 
    int i,j,m; 
    btree l,r; 
    int lvl; 

    level--; 
    if (level < 0) { 
        Error(0,key); /* 在整個樹中未找到要刪除的鍵 */ 
        flag = 0; 
        return; 
    } 
    for(i=0, j=t->d-1; i<j; m=(j+i)/2, (key > t->k[m])?(i=m+1):(j=m)); 
    if (key == t->k[ i ]) { /* 找到要刪除的鍵 */ 
        if (t->v[ i ] != NULL) 
            free(t->v[ i ]); /* 釋放這個節點包含的值 */ 
        if (level == 0) { /* 有子樹為空則這個鍵位于葉子節點 */ 
            DelFromNode(t,i); 
            btree_count--; 
            flag = 1; 
            /* 指示上層節點本子樹的鍵數量減少 */ 
            return; 
        } else { /* 這個鍵位于非葉節點 */ 
            lvl = level-1; 
            /* 找到前驅節點 */ 
            r = t->p[ i ]; 
            while (lvl > 0)  { 
                r = r->p[r->d]; 
                lvl--; 
            } 
            t->k[ i ]=r->k[r->d-1]; 
            t->v[ i ]=r->v[r->d-1]; 
            r->v[r->d-1]=NULL; 
            key = r->k[r->d-1]; 
        } 
    } 
    else if (key > t->k[ i ]) /* i == t->d-1 時有可能出現 */ 
        i++;          
    InternalDelete(key,t->p[ i ]); 
    /* 調整平衡 */ 
    if (flag == 0) 
        return; 
    if (t->p[ i ]->d < M) { 
        if (i == t->d) /* 在最右子樹中發生了刪除 */ 
            i--; /* 調整最右鍵的左右子樹平衡 */ 
        l = t->p [ i ]; 
        r = t->p[i+1]; 
        if (r->d > M) 
            MoveLeftNode(t,i); 
        else if(l->d > M) 
            MoveRightNode(t,i); 
        else { 
            JoinNode(t,i); 
            /* 繼續指示上層節點本子樹的鍵數量減少 */ 
            return; 
        } 
        flag = 0; 
        /* 指示上層節點本子樹的鍵數量沒有減少,刪除過程結束 */ 
    } 
} 

/* 
* 合并一個節點的某個鍵對應的兩個子樹 
*/ 
void JoinNode(btree t, int d) 
{ 
    btree l,r; 
    int i,j; 
    l = t->p[d]; 
    r = t->p[d+1]; 

    /* 把這個鍵下移到它的左子樹 */ 
    l->k[l->d] = t->k[d]; 
    l->v[l->d] = t->v[d]; 
    /* 把右子樹中的所有鍵值和子樹轉移到左子樹 */ 
    for (j=r->d-1,i=l->d+r->d; j >= 0 ; j--,i--) { 
        l->k[ i ] = r->k[j]; 
        l->v[ i ] = r->v[j]; 
        l->p[ i ] = r->p[j]; 
    } 
    l->p[l->d+r->d+1] = r->p[r->d]; 
    l->d += r->d+1; 
    /* 釋放右子樹的節點 */ 
    free(r); 
    /* 把這個鍵右邊的鍵和對應的右子樹左移 */ 
    for (i=d; i < t->d-1; i++) { 
        t->k[ i ] = t->k[i+1]; 
        t->v[ i ] = t->v[i+1]; 
        t->p[i+1] = t->p[i+2]; 
    } 
    t->d--; 
    node_sum--; 
} 
/* 
* 從一個鍵的右子樹向左子樹轉移一些鍵,使兩個子樹平衡 
*/ 
void MoveLeftNode(btree t, int d) 
{ 
    btree l,r; 
    int m; /* 應轉移的鍵的數目 */ 
    int i,j; 
    l = t->p[d]; 
    r = t->p[d+1]; 
    m = (r->d - l->d)/2; 

    /* 把這個鍵下移到它的左子樹 */ 
    l->k[l->d] = t->k[d]; 
    l->v[l->d] = t->v[d]; 
    /* 把右子樹的最左子樹轉移成左子樹的最右子樹 
     * 從右子樹向左子樹移動 m-1 個鍵+子樹對 */ 
    for (j=m-2,i=l->d+m-1; j >= 0; j--,i--) { 
        l->k[ i ] = r->k[j]; 
        l->v[ i ] = r->v[j]; 
        l->p[ i ] = r->p[j]; 
    } 
    l->p[l->d+m] = r->p[m-1]; 
    /* 把右子樹的最左鍵提升到這個鍵的位置上 */ 
    t->k[d] = r->k[m-1]; 
    t->v[d] = r->v[m-1]; 
    /* 把右子樹中的所有鍵值和子樹左移 m 個位置 */ 
    r->p[0] = r->p[m]; 
    for (i=0; i<r->d-m; i++) { 
        r->k[ i ] = r->k[i+m]; 
        r->v[ i ] = r->v[i+m]; 
        r->p[ i ] = r->p[i+m]; 
    } 
    r->p[r->d-m] = r->p[r->d]; 
    l->d+=m; 
    r->d-=m; 
} 
/* 
* 從一個鍵的左子樹向右子樹轉移一些鍵,使兩個子樹平衡 
*/ 
void MoveRightNode(btree t, int d) 
{ 
    btree l,r; 
    int m; /* 應轉移的鍵的數目 */ 
    int i,j; 
    l = t->p[d]; 
    r = t->p[d+1]; 

    m = (l->d - r->d)/2; 
    /* 把右子樹中的所有鍵值和子樹右移 m 個位置 */ 
    r->p[r->d+m]=r->p[r->d]; 
    for (i=r->d-1; i>=0; i--) { 
        r->k[i+m] = r->k[ i ]; 
        r->v[i+m] = r->v[ i ]; 
        r->p[i+m] = r->p[ i ]; 
    } 
    /* 把這個鍵下移到它的右子樹 */ 
    r->k[m-1] = t->k[d]; 
    r->v[m-1] = t->v[d]; 
    /* 把左子樹的最右子樹轉移成右子樹的最左子樹 */ 
    r->p[m-1] = l->p[l->d]; 
    /* 從左子樹向右子樹移動 m-1 個鍵+子樹對 */ 
    for (i=l->d-1,j=m-2; j>=0; j--,i--) { 
        r->k[j] = l->k[ i ]; 
        r->v[j] = l->v[ i ]; 
        r->p[j] = l->p[ i ]; 
    } 
    /* 把左子樹的最右鍵提升到這個鍵的位置上 */ 
    t->k[d] = l->k[ i ]; 
    t->v[d] = l->v[ i ]; 
    l->d-=m; 
    r->d+=m; 
} 
/* 
* 把一個鍵和對應的右子樹從一個節點中刪除 
*/ 
void DelFromNode(btree t, int d) 
{ 
    int i; 
    /* 把所有大于要刪除的鍵值的鍵左移 */ 
    for(i=d; i < t->d-1; i++) { 
        t->k[ i ] = t->k[i+1]; 
        t->v[ i ] = t->v[i+1]; 
    } 
    t->d--; 
} 
/* 
* 建立有兩個子樹和一個鍵的根節點 
*/ 
btree NewRoot(btree t) 
{ 
    btree temp; 
    temp = (btree)malloc(sizeof(node)); 
    temp->d = 1; 
    temp->p[0] = t; 
    temp->p[1] = NewTree; 
    temp->k[0] = InsKey; 
    temp->v[0] = InsValue; 
    btree_level++; 
    node_sum++; 
    return(temp); 
} 
/* 
* 釋放根節點,并返回它的最左子樹 
*/ 
btree FreeRoot(btree t) 
{ 
    btree temp; 
    temp = t->p[0]; 
    free(t); 
    btree_level--; 
    node_sum--; 
    return temp; 
} 

void Error(int f,typekey key) 
{ 
    if (f) 
        printf("Btrees error: Insert %d!\n",key); 
    else 
        printf("Btrees error: delete %d!\n",key); 
} 

int height(btree t) 
{ 
    return btree_level; 
} 

int count(btree t) 
{ 
    return btree_count; 
} 
double payload(btree t) 
{ 
    if (node_sum==0) 
        return 1; 
    return (double)btree_count/(node_sum*(2*M)); 
} 
btree deltree (btree t) 
{     
    level=btree_level; 
    btree_level = 0; 
    return delall(t); 

} 
btree delall(btree t) 
{ 
    int i; 
    level--; 
    if (level >= 0) { 
        for (i=0; i < t->d; i++) 
            if (t->v[ i ] != NULL) 
                free(t->v[ i ]); 
        if (level > 0) 
            for (i=0; i<= t->d ; i++) 
                t->p[ i ]=delall(t->p[ i ]); 
        free(t); 
    } 
    return NULL; 
} 

/* end of btrees.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日韩一区二区| 国产精品午夜电影| 日韩国产欧美在线视频| 欧美日韩免费视频| 日韩和的一区二区| 欧美成人三级在线| 国产精品1024| 亚洲婷婷综合久久一本伊一区| 91亚洲精品久久久蜜桃| 亚洲午夜影视影院在线观看| 欧美军同video69gay| 国产尤物一区二区| 亚洲视频一区二区在线观看| 欧美日韩国产片| 国产制服丝袜一区| 樱花影视一区二区| 日韩欧美精品三级| 高清成人免费视频| 亚洲国产综合在线| 精品国产一区二区三区不卡| 国产iv一区二区三区| 亚洲黄色免费电影| 亚洲精品在线电影| 色欧美日韩亚洲| 麻豆极品一区二区三区| 亚洲欧美在线另类| 日韩一级高清毛片| 色综合 综合色| 久久99精品久久只有精品| 国产精品视频九色porn| 欧美老肥妇做.爰bbww| 成人免费高清在线| 日本中文字幕一区二区视频| 国产精品久久久久久久第一福利| 91精品国产综合久久久久久漫画| 岛国精品一区二区| 久久精品国产精品亚洲精品| 亚洲裸体在线观看| 久久午夜老司机| 欧美日韩国产免费一区二区| 成人激情校园春色| 国产一区二区三区综合| 亚洲va欧美va天堂v国产综合| 欧美激情一区二区三区四区| 日韩欧美成人激情| 欧美日韩国产bt| 国产91高潮流白浆在线麻豆| 麻豆国产精品一区二区三区 | 久久久亚洲欧洲日产国码αv| 欧美亚洲综合另类| jvid福利写真一区二区三区| 免费成人av在线播放| 亚洲福中文字幕伊人影院| 中文字幕久久午夜不卡| 久久久久综合网| 欧美成人a视频| 欧美日韩国产乱码电影| 欧美在线啊v一区| 色综合中文字幕国产| av在线不卡电影| 国产福利精品一区二区| 蜜桃视频在线观看一区二区| 婷婷国产v国产偷v亚洲高清| 亚洲精品国产a久久久久久 | 国产v综合v亚洲欧| 精东粉嫩av免费一区二区三区| 午夜精品视频在线观看| 亚洲一区二区三区四区五区中文| 亚洲欧洲av色图| 亚洲色图20p| 亚洲人成网站精品片在线观看| 中文字幕一区二区三区在线播放 | 日韩av一级电影| 亚洲国产综合视频在线观看| 一个色在线综合| 亚洲一区二区三区自拍| 亚洲午夜国产一区99re久久| 亚洲国产视频一区| 亚洲国产一区二区在线播放| 亚洲一本大道在线| 日韩精彩视频在线观看| 免费人成在线不卡| 精品在线你懂的| 国产精品一二三在| 9色porny自拍视频一区二区| 99精品视频中文字幕| 一本一道久久a久久精品综合蜜臀| 色婷婷久久99综合精品jk白丝| 欧美性色黄大片| 精品日韩一区二区三区| 国产情人综合久久777777| 中文字幕亚洲综合久久菠萝蜜| 一区二区三区免费在线观看| 亚洲午夜免费视频| 久久99九九99精品| 成人性生交大片免费看中文网站| 99re热视频这里只精品| 欧美美女激情18p| 26uuu成人网一区二区三区| 国产精品网站在线观看| 亚洲已满18点击进入久久| 午夜精品久久久久久久久久久| 久草精品在线观看| 91免费视频观看| 在线播放国产精品二区一二区四区| 日韩欧美在线影院| 中文av字幕一区| 日韩av一区二| 91丨九色丨尤物| 7777精品久久久大香线蕉| 日本一区二区三区dvd视频在线| 中文字幕一区二区三区精华液 | 综合久久一区二区三区| 首页国产欧美久久| 国产成人综合在线观看| 欧洲精品中文字幕| 久久久不卡网国产精品二区| 亚洲综合图片区| 国产美女主播视频一区| 欧美性感一区二区三区| 久久久久成人黄色影片| 午夜精品福利一区二区蜜股av | 成人精品免费网站| 3atv一区二区三区| 国产精品少妇自拍| 老鸭窝一区二区久久精品| 色播五月激情综合网| 久久久国产一区二区三区四区小说 | 青青青爽久久午夜综合久久午夜| 国产精品一二三四五| 欧美日韩日本视频| 国产精品国产a| 麻豆精品一区二区三区| 日本道精品一区二区三区| 久久夜色精品国产噜噜av| 香蕉久久夜色精品国产使用方法| 国产成人综合视频| 日韩欧美自拍偷拍| 亚洲va国产天堂va久久en| 成人动漫视频在线| www精品美女久久久tv| 日韩影院在线观看| 欧洲在线/亚洲| 亚洲欧美国产三级| 高清国产一区二区三区| 日韩女优av电影在线观看| 香蕉久久一区二区不卡无毒影院| 91在线丨porny丨国产| 国产欧美一区二区三区网站| 免费成人深夜小野草| 欧美另类变人与禽xxxxx| 一区二区欧美国产| 色八戒一区二区三区| 亚洲精选视频免费看| 成人avav影音| 亚洲国产电影在线观看| 韩国理伦片一区二区三区在线播放| 91精品一区二区三区在线观看| 亚洲一区二区三区影院| 欧美伊人精品成人久久综合97 | 欧美精品xxxxbbbb| 亚洲网友自拍偷拍| 欧美日韩久久久| 亚洲一区二区三区在线| 欧美丝袜丝nylons| 亚洲成人自拍一区| 欧美日韩国产美女| 日韩不卡一区二区| 欧美电影免费提供在线观看| 麻豆91小视频| 精品国产露脸精彩对白| 韩国精品一区二区| 国产午夜精品美女毛片视频| 福利一区在线观看| 国产目拍亚洲精品99久久精品| 成人一二三区视频| 亚洲毛片av在线| 欧美日韩国产影片| 日韩av成人高清| 久久精品亚洲精品国产欧美kt∨ | 最新日韩在线视频| 在线视频中文字幕一区二区| 亚洲午夜久久久久| 337p亚洲精品色噜噜| 久久99精品国产麻豆婷婷| 久久久亚洲综合| 91香蕉视频污| 日本人妖一区二区| 久久久99久久| 在线亚洲高清视频| 免费观看久久久4p| 国产无遮挡一区二区三区毛片日本| 成人午夜免费视频| 亚洲影视在线播放| 精品国产一区二区三区久久久蜜月 | 国产在线播精品第三| 国产精品超碰97尤物18| 欧美日韩性生活| 国产精品一区免费视频| 亚洲码国产岛国毛片在线|