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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? hashfm.cpp

?? 數(shù)據(jù)結(jié)構(gòu)算法vc++6.0少有的特別好的程序集part9 強(qiáng)烈推薦,特別好,特別適合學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),有向動(dòng)手實(shí)踐的,把數(shù)據(jù)結(jié)構(gòu)的算法都用vc實(shí)現(xiàn)了,經(jīng)典經(jīng)典經(jīng)典經(jīng)典經(jīng)典經(jīng)典經(jīng)典!
?? CPP
字號(hào):
//散列文件的插入、刪除和查找操作
//HashFM.cpp
#include<iostream.h>
#include<stdlib.h>
#include<fstream.h>
#include<iomanip.h>
//m為散列表的長(zhǎng)度,確定取值為16
  const int m=16;  
//km為散列主文件中每個(gè)結(jié)點(diǎn)所含的元素個(gè)數(shù),
//取值大于等于1,暫取為3
  const int km=3;  
//定義關(guān)鍵字類(lèi)型為整型
  typedef int KeyType;
//索引主文件中的記錄元素類(lèi)型
struct ElemType {
 int key;    //關(guān)鍵字域
 char rest[10];//其他域,暫用字符數(shù)組表示
};
//索引主文件中的結(jié)點(diǎn)類(lèi)型
struct FLNode {
  ElemType data[km];//值域
  int next; //指向下一個(gè)結(jié)點(diǎn)的指針域
};
//b1為索引表文件中的記錄長(zhǎng)度
  const int b1=sizeof(int);
//b2為索引主文件中的記錄長(zhǎng)度
  const int b2=sizeof(FLNode); 
//NullTag作為空關(guān)鍵字的標(biāo)記,假定用-10表示
  const int NullTag=-10;
//散列文件的類(lèi)定義
template<class T>
class HFile
{public:
  //構(gòu)造函數(shù),初始化散列表文件和主文件
  HFile(char* fn1,char* fn2);
  //把元素x插入到按桶散列的文件中
  void THFInsertA(char* fn1,char* fn2,T x);
  //把數(shù)組x中n個(gè)元素插入到按桶散列的文件中
  void THFInsertB(char* fn1,char* fn2,T x[],int n);
  //從按桶散列的文件中刪除關(guān)鍵字為x.key的元素,
  //并由x帶回該元素,若刪除成功則返回1,否則返回0
  bool THFDelete(char* fn1, char* fn2, T& x);
  //從按桶散列的文件中查找關(guān)鍵字為x.key的元素,
  //并由x帶回該元素,若查找成功則返回1,否則返回0
  bool THFSearch(char* fn1,char* fn2,T& x);
  //按單鏈表順序打印出按桶散列主文件中每個(gè)結(jié)點(diǎn)的所有元素值
  void THFPrint(char* fn1,char* fn2);
};
//散列文件的類(lèi)實(shí)現(xiàn)
//初始化散列表文件和主文件
template<class T>
HFile<T>::HFile(char* fn1,char* fn2)
{//以輸出方式打開(kāi)并建立空的散列表文件
 ofstream f1(fn1, ios::out|ios::binary);
 if(!f1) {
   cerr<<fn1<<' '<<"不能打開(kāi)!"<<endl;
   exit(1);}
//以輸出方式打開(kāi)并建立空的散列主文件
 ofstream f2(fn2, ios::out|ios::binary);
 if(!f2) {cerr<<fn2<<' '<<"不能打開(kāi)!"<<endl;
	  exit(1);}
//動(dòng)態(tài)分配具有m+1個(gè)整型存儲(chǔ)空間的數(shù)組A
 int* A=new int[m+1];
 if(!A){cerr<<"申請(qǐng)堆內(nèi)存失敗!"<<endl;
       	exit(1);}
//給數(shù)組A中的每個(gè)元素賦初值-1,表示空指針
 for(int i=0; i<m+1; i++)
   A[i]=-1;
//初始化散列表文件
  f1.write((char*)A, (m+1)*b1);
 //刪除數(shù)組A并關(guān)閉文件
  delete [] A;
  f1.close();
  f2.close();
}
//把元素x插入到按桶散列的文件中
template<class T>
void HFile<T>::THFInsertA(char* fn1, char* fn2, T x)
{//以輸入輸出和不新建方式打開(kāi)散列表文件
 fstream f1(fn1,ios::in|ios::out|ios::binary);
 if(!f1) {cerr<<fn1<<' '<<"不能打開(kāi)!"<<endl;
      exit(1);}
 //以輸入輸出和不新建方式打開(kāi)散列主文件
 fstream f2(fn2, ios::in|ios::out|ios::binary);
 if(!f2){cerr<<fn2<<' '<<"不能打開(kāi)!"<<endl;
         exit(1);}
 //給數(shù)組A中的每個(gè)元素賦初值-1,表示空指針
 int* A=new int[m+1];
 if(!A) {cerr<<"申請(qǐng)堆內(nèi)存失敗!"<<endl;
	 exit(1);}
 //將散列表文件中的內(nèi)容全部讀入到數(shù)組A中
 f1.read((char*)A, (m+1)*b1);
 //以關(guān)鍵字x.key計(jì)算x的散列地址
 int d=x.key%m;
 //將x插入到d單鏈表的表頭結(jié)點(diǎn)中
 int j;
 FLNode temp;
 if(A[d]!=-1)
  {f2.seekg(A[d]*b2);
   f2.read((char*)&temp, b2);
   for(j=0; j<km; j++)
    if(temp.data[j].key==NullTag) break;
    if(j<km) {
      temp.data[j]=x;
      f2.seekg(-b2, ios::cur);
      f2.write((char*)&temp, b2);
      goto END;  //插入表頭結(jié)點(diǎn)后,轉(zhuǎn)去做結(jié)束處理
  }}
  //當(dāng)d單鏈表為空或頭結(jié)點(diǎn)中沒(méi)有空閑位置時(shí)向下執(zhí)行
  //建立待插入d單鏈表表頭的內(nèi)存結(jié)點(diǎn)temp
  temp.data[0]=x;
  for(j=1; j<km; j++)
   temp.data[j].key=NullTag;
  temp.next=A[d];
  //將temp結(jié)點(diǎn)的值寫(xiě)入到f2文件尾并被鏈接到d單鏈表的表頭
  if(A[m]==-1) {
  //將f2中的文件指針移至文件尾
   f2.seekg(0,ios::end);
  //計(jì)算出文件尾的結(jié)點(diǎn)位置序號(hào)
   int len=f2.tellg()/b2;
  //將temp結(jié)點(diǎn)的值寫(xiě)入文件尾
   f2.write((char*)&temp,b2);
  //使A[d]指向新插入的結(jié)點(diǎn)
   A[d]=len;}
  //將temp結(jié)點(diǎn)的值寫(xiě)入到f2文件的一個(gè)空閑結(jié)點(diǎn)中
  //并被鏈接到d單鏈表的表頭
   else {//p指向空閑單鏈表的表頭結(jié)點(diǎn)
     int p=A[m];
   //使空閑單鏈表的表頭指針指向其下一個(gè)結(jié)點(diǎn)
     f2.seekg(p*b2);
     FLNode pn;
     f2.read((char*)&pn, b2);
     A[m]=pn.next;
   //使temp的值寫(xiě)入到p位置的結(jié)點(diǎn)上
     f2.seekg(-b2, ios::cur);
     f2.write((char*)&temp, b2);
   //使A[d]指向新插入的p結(jié)點(diǎn)
     A[d]=p;}
  //將數(shù)組A中的全部?jī)?nèi)容寫(xiě)回到散列表文件f1中
   f1.seekg(0);
   f1.write((char*)A, (m+1)*b1);
  //刪除動(dòng)態(tài)數(shù)組A和關(guān)閉所有文件
   END:
    delete [] A;
    f1.close();
    f2.close();
}
//把數(shù)組x中n個(gè)元素插入到按桶散列的文件中
template<class T>
void HFile<T>::THFInsertB(char* fn1,char* fn2,T x[],int n)
{fstream f1(fn1, ios::in|ios::out|ios::binary);
 if(!f1) {cerr<<fn1<<' '<<"不能打開(kāi)!"<<endl;
	  exit(1);}
 fstream f2(fn2, ios::in|ios::out|ios::binary);
 if(!f2) {cerr<<fn2<<' '<<"不能打開(kāi)!"<<endl;
          exit(1);}
 int* A=new int[m+1];
 if(!A) {cerr<<"申請(qǐng)堆內(nèi)存失敗!"<<endl;
	 exit(1);}
 f1.read((char*)A, (m+1)*b1);
 for(int i=0; i<n; i++)
  {int d=x[i].key%m;
   int j;
   FLNode temp;
   if(A[d]!=-1)
    {f2.seekg(A[d]*b2);
     f2.read((char*)&temp, b2);
     for(j=0; j<km; j++)
      if(temp.data[j].key==NullTag) break;
      if(j<km) {
       temp.data[j]=x[i];
       f2.seekg(-b2, ios::cur);
       f2.write((char*)&temp, b2);
       continue;}}
      temp.data[0]=x[i];
      for(j=1;j<km;j++)
	temp.data[j].key=NullTag;
      temp.next=A[d];
      if(A[m]==-1) {
       f2.seekg(0,ios::end);
       int len=f2.tellg()/b2;
       f2.write((char*)&temp,b2);
       A[d]=len;}
      else {int p=A[m];
	f2.seekg(p*b2);
	FLNode pn;
	f2.read((char*)&pn, b2);
	A[m]=pn.next;
	f2.seekg(-b2, ios::cur);
	f2.write((char*)&temp, b2);
	A[d]=p;}}
    f1.seekg(0);
    f1.write((char*)A, (m+1)*b1);
    delete [] A;
    f1.close();f2.close();
}
//從按桶散列的文件中刪除關(guān)鍵字為x.key的元素,并由x帶回該
//元素,若刪除成功則返回1,否則返回0
template<class T>
bool HFile<T>::THFDelete(char* fn1,char* fn2,T& x)
{fstream f1(fn1,ios::in|ios::out|ios::binary);
 int k;
 if(!f1) {cerr<<fn1<<' '<<"不能打開(kāi)!"<<endl;
	  exit(1);}
 fstream f2(fn2,ios::in|ios::out|ios::binary);
 if(!f2) {cerr<<fn2<<' '<<"不能打開(kāi)!"<<endl;
	  exit(1);}
 int* A=new int[m+1];
 if(!A) {cerr<<"申請(qǐng)堆內(nèi)存失敗!"<<endl;
	 exit(1);}
 f1.read((char*)A, (m+1)*b1);
 int DeleteTag=0;  //用DeleteTag作為刪除是否成功的標(biāo)記
 int d=x.key%m;
 int p=A[d],i=0;  //用p保存d單鏈表的表頭結(jié)點(diǎn)的位置序號(hào),
 //用i保存該結(jié)點(diǎn)中被刪除元素的下標(biāo)或第一個(gè)空元素的下標(biāo)
 FLNode temp;
 //從d單鏈表的表頭結(jié)點(diǎn)中刪除關(guān)鍵字為x.key的元素
 if(p!=-1)
  {f2.seekg(p*b2);
   f2.read((char*)&temp, b2);
   while(i<km && temp.data[i].key!=NullTag)
    if(temp.data[i].key==x.key) break;
    else i++;
    if(i<km && temp.data[i].key==x.key) {
     x=temp.data[i]; //由x帶回被刪除的元素值
    for(k=i+1; k<km; k++)
     if(temp.data[k].key!=NullTag)
       temp.data[k-1]=temp.data[k];
     else break;
   temp.data[k-1].key=NullTag;
   if(k-1==0) { //刪除d單鏈表中表頭空結(jié)點(diǎn)
    A[d]=temp.next;
    temp.next=A[m];
    A[m]=p;}
    f2.seekg(-b2, ios::cur);
    f2.write((char*)&temp, b2);
    DeleteTag=1;//被賦值1表示刪除成功
    goto END;  //轉(zhuǎn)去做結(jié)束處理
  }}
 //若d單鏈表為空,則轉(zhuǎn)去做結(jié)束處理
  else goto END;
  //從d單鏈表的第二個(gè)結(jié)點(diǎn)起順序查找被刪除的元素
  int j,q;
  q=temp.next;  //q初始指向第二個(gè)結(jié)點(diǎn)
  FLNode tq;//用tq保存散列主文件中位置為q的結(jié)點(diǎn)
  while(q!=-1)
    {f2.seekg(q*b2);
     f2.read((char*)&tq, b2);
     for(j=0; j<km; j++)
       if(tq.data[j].key==x.key) {
	 x=tq.data[j];break;}
     if(j<km) break;
     q=tq.next;}
 //若找到了被刪除的元素,則將第一個(gè)結(jié)點(diǎn)中的最后一個(gè)元素
 //移動(dòng)到被刪除元素的位置
  if(q!=-1) {tq.data[j]=temp.data[i-1];
    temp.data[i-1].key=NullTag;
    f2.seekg(q*b2);
    f2.write((char*)&tq, b2);
    if(i==1) {//把空的表頭結(jié)點(diǎn)鏈接到空閑表的表頭
     A[d]=temp.next;
     temp.next=A[m];
     A[m]=p;}
     f2.seekg(p*b2);
     f2.write((char*)&temp, b2);
     DeleteTag=1;}  //置刪除成功標(biāo)志
  //做刪除操作的結(jié)束處理操作
  END:
   if(DeleteTag==1) {
     f1.seekg(0);
     f1.write((char*)A,(m+1)*b1);}
     delete [] A;
     f1.close();
     f2.close();
     if(DeleteTag==1) return true;
     else return false;
}
//從按桶散列的文件中查找關(guān)鍵字為x.key的元素,
//并由x帶回該元素,若查找成功則返回1,否則返回0
template<class T>
bool HFile<T>::THFSearch(char* fn1,char* fn2,T& x)
{//以輸入和不新建方式打開(kāi)散列表文件
 ifstream f1(fn1, ios::in|ios::binary);
 if(!f1) {cerr<<fn1<<' '<<"不能打開(kāi)!"<<endl;
       	exit(1);}
 //以輸入和不新建方式打開(kāi)散列主文件
 ifstream f2(fn2, ios::in|ios::binary);
 if(!f2) {cerr<<fn2<<' '<<"不能打開(kāi)!"<<endl;
	exit(1);}
  //定義數(shù)組A并將f1文件讀入A中
 int* A=new int[m+1];
 if(!A) {cerr<<"申請(qǐng)堆內(nèi)存失敗!"<<endl;
	exit(1);}
 f1.read((char*)A, (m+1)*b1);
  //計(jì)算x元素在散列表中的地址
 int i,d=x.key%m;
  //從d單鏈表中順序查找關(guān)鍵字為x.key的元素
 int p=A[d];
  //從d單鏈表中順序查找關(guān)鍵字為x.key的元素
 FLNode temp;
 while(p!=-1)
   {f2.seekg(p*b2);
    f2.read((char*)&temp, b2);
    for(i=0;i<km;i++)
     if(temp.data[i].key==x.key)
      {x=temp.data[i];//被查找到的元素由x帶回
       	break;}
    if(i<km) break;
    else  p=temp.next;}
  //進(jìn)行查找結(jié)束處理
 delete [] A;
 f1.close();f2.close();
 if(p==-1) return false; else return true;
}
//按單鏈表順序打印出按桶散列主文件中每個(gè)結(jié)點(diǎn)的所有元素值
template<class T>
void HFile<T>::THFPrint(char* fn1, char* fn2)
{ifstream f1(fn1, ios::in|ios::binary);
 if(!f1) {cerr<<fn1<<' '<<"不能打開(kāi)!"<<endl;
   exit(1);}
 ifstream f2(fn2, ios::in|ios::binary);
 if(!f2) {cerr<<fn2<<' '<<"不能打開(kāi)!"<<endl;
   exit(1);}
  int* A=new int[m+1];
  if(!A) {cerr<<"申請(qǐng)堆內(nèi)存失敗!"<<endl;
   exit(1);}
  f1.read((char*)A, (m+1)*b1);
  int p;
  FLNode pn;
  for(int i=0; i<m+1; i++)
    {cout<<setw(2)<<i<<':';
     p=A[i];
     while(p!=-1) {
      f2.seekg(p*b2);
      f2.read((char*)&pn, b2);
      //輸出結(jié)點(diǎn)的位置序號(hào)
      cout<<setw(2)<<p<<"->";
      //輸出結(jié)點(diǎn)中每個(gè)元素的關(guān)鍵字,以此代替結(jié)點(diǎn)的值
      for(int j=0; j<km; j++)
        cout<<pn.data[j].key<<"  ";
      //使p指向下一個(gè)結(jié)點(diǎn)
	p=pn.next;}
     cout<<endl;}
}
//散列文件的類(lèi)實(shí)現(xiàn)的測(cè)試
void main()
{ cout<<"HashFM.cpp運(yùn)行結(jié)果:\n";
  //定義保存記錄的數(shù)組a并初始化
  ElemType a[15]={{13,"li"},{18,"liu"},{17,"wphp"},{37,"menrm"},
  {8,"ytong"},{22,"zhua"},{24,"push"},{48,"qian"},{34,"tang"},
  {57,"shdm"},{55,"kang"},{30,"liuli"},{25,"qiaoh"},
  {31,"dukun"},{17,"haiang"}};
  //定義保存記錄的數(shù)組b并初始化
  ElemType b[16]={{23,"tang"},{38,"suan"},{56,"kony"},
  {55,"shao"},{80,"caik"},{70,"ganwu"},{65,"dukun"},{42,"sini"},
  {29,"liuda"},{43,"xitu"},{71,"taoto"},{77,"shouw"},
  {93,"shum"},{69,"liyz"},{45,"xuyang"},{19,"wxy"}};
  //定義散列表文件和主文件的名字,并由字符指針p1和p2所指向
  char *p1=".\\HFile.idx", *p2=".\\HFile.dat";
  //初始化散列表文件和主文件	
  HFile<ElemType> myfile(p1,p2);
  //向散列文件插入數(shù)組a和b中保存的記錄  
  myfile.THFInsertB(p1,p2,a,15);
  myfile.THFInsertB(p1,p2,b,16);
  //設(shè)mark用于保存刪除或查找函數(shù)返回的值
  int mark;
  //定義x保存一個(gè)待插入的元素值或保存待刪除或查找元素的關(guān)鍵字
  ElemType x;
  //利用鍵盤(pán)輸入操作散列文件
  while(1) {
    cout<<endl<<"功能號(hào)表:"<<endl;
    cout<<"1---向散列文件插入一個(gè)元素"<<endl;
    cout<<"2---從散列文件中刪除一個(gè)元素"<<endl;
    cout<<"3---從散列文件中查找一個(gè)元素"<<endl;
    cout<<"4---輸出散列主文件"<<endl;
    cout<<"5---結(jié)束運(yùn)行"<<endl;
    char ch;
    cout<<"請(qǐng)輸入你的選擇(1-5): ";cin>>ch;
    switch (ch)
     {case '1':
	cout<<"輸入待插入元素x的值(一個(gè)整數(shù)和一個(gè)字符串):";
	  cin>>x.key>>x.rest;
        myfile.THFInsertA(p1,p2,x);break;
      case '2':
        cout<<"輸入待刪除元素x的關(guān)鍵字:";
          cin>>x.key;
	mark=myfile.THFDelete(p1,p2,x);
        if(mark==1) cout<<"刪除成功!"<<x.key<<' '<<x.rest<<endl;
	else cout<<"刪除失敗!"<<endl;break;
      case '3':cout<<"輸入待查找元素x的關(guān)鍵字:";
	        cin>>x.key;
	mark=myfile.THFSearch(p1,p2,x);
        if(mark==1)
	  cout<<"查找成功!"<<x.key<<' '<<x.rest<<endl;
        else cout<<"查找失敗!"<<endl;break;
      case '4':myfile.THFPrint(p1,p2);break;
      case '5':return;
      default:cout<<"輸入選擇錯(cuò)誤,請(qǐng)重輸!"<<endl;
}}}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久超碰国产精品| 日本午夜一区二区| 成熟亚洲日本毛茸茸凸凹| 国产欧美一区二区精品仙草咪 | 亚洲免费资源在线播放| a亚洲天堂av| 一区二区三区四区国产精品| 欧美日韩精品一区二区在线播放| 亚洲一级片在线观看| 制服丝袜av成人在线看| 九九精品一区二区| 国产精品伦一区| 91精彩视频在线观看| 日韩影院在线观看| 久久婷婷国产综合国色天香| 97se亚洲国产综合自在线不卡| 亚洲一区中文在线| 精品日韩一区二区| 91视频一区二区三区| 日韩中文字幕区一区有砖一区| 精品国产区一区| 91农村精品一区二区在线| 亚洲成av人片一区二区三区| 亚洲精品一区二区在线观看| 91伊人久久大香线蕉| 日韩va欧美va亚洲va久久| 久久色成人在线| 欧美午夜电影网| 国产成人免费9x9x人网站视频| 一区二区三区在线播| 精品国产123| 日本乱人伦一区| 国产乱码精品一区二区三区忘忧草 | 欧美久久久久久久久| 国产一区二区三区免费观看| 亚洲综合精品久久| 国产丝袜在线精品| 欧美日本视频在线| 99精品欧美一区二区三区小说| 秋霞成人午夜伦在线观看| 亚洲欧洲日韩av| 久久久三级国产网站| 欧美日韩极品在线观看一区| 成人免费不卡视频| 久久99精品久久久久久| 亚洲国产成人91porn| 国产精品国产三级国产aⅴ原创 | 欧美国产一区二区在线观看| 欧美日韩在线直播| 99久久99精品久久久久久| 精品一区二区三区免费| 午夜欧美在线一二页| 亚洲欧洲日产国码二区| 久久久亚洲综合| 欧美一级黄色录像| 欧美日韩国产首页| 日本黄色一区二区| 97超碰欧美中文字幕| 成熟亚洲日本毛茸茸凸凹| 国产一区二区三区美女| 久久国产福利国产秒拍| 天堂影院一区二区| 亚洲不卡一区二区三区| 亚洲麻豆国产自偷在线| 亚洲欧美在线视频观看| 欧美国产日韩在线观看| 国产午夜精品一区二区三区四区 | 国产亚洲精品免费| 亚洲精品在线观看视频| 日韩精品资源二区在线| 日韩一区二区在线观看| 日韩片之四级片| 精品国一区二区三区| 日韩午夜在线观看| 日韩欧美电影一区| 欧美大黄免费观看| 精品久久久影院| 精品国免费一区二区三区| 久久综合久久综合亚洲| 欧美精品一区二区三区视频| 久久精品夜色噜噜亚洲aⅴ| 久久精品夜色噜噜亚洲a∨| 久久精品在这里| 国产精品入口麻豆九色| 最新不卡av在线| 夜夜精品视频一区二区| 亚洲第一二三四区| 日本最新不卡在线| 国内不卡的二区三区中文字幕| 国产麻豆精品视频| 99re这里只有精品视频首页| 色综合久久综合| 欧美日韩亚洲另类| 日韩精品一区二区三区在线| www国产亚洲精品久久麻豆| 国产色爱av资源综合区| 中文字幕亚洲欧美在线不卡| 亚洲综合免费观看高清完整版| 亚洲第一精品在线| 美女视频免费一区| 国产成人一区二区精品非洲| 色悠悠久久综合| 91精选在线观看| 国产免费观看久久| 一区二区日韩av| 久久国产福利国产秒拍| 91亚洲男人天堂| 91精品久久久久久蜜臀| 日本一区二区高清| 亚洲第一电影网| 国产伦精品一区二区三区免费| 91一区二区三区在线观看| 在线综合视频播放| 国产精品成人在线观看| 天天操天天干天天综合网| 国产精品538一区二区在线| 在线观看www91| 国产片一区二区| 视频一区二区三区中文字幕| 国产成人在线网站| 欧美乱熟臀69xxxxxx| 国产欧美日韩不卡| 天堂一区二区在线| 成人综合婷婷国产精品久久免费| 欧美三级电影在线看| 2023国产精品| 国产成人一区二区精品非洲| 欧美剧在线免费观看网站| 国产精品久久午夜| 蜜臀久久99精品久久久久宅男| 91免费看`日韩一区二区| 精品福利一区二区三区免费视频| 亚洲午夜在线视频| 成人看片黄a免费看在线| 日韩欧美一区二区视频| 一区二区在线观看视频| 国产成人精品亚洲777人妖| 9191久久久久久久久久久| 亚洲欧美日韩人成在线播放| 国产一区二区福利视频| 91精品视频网| 亚洲国产综合在线| 91在线观看下载| 日本一区二区三区四区| 老司机免费视频一区二区三区| 在线观看视频欧美| 国产精品成人一区二区三区夜夜夜 | 香蕉影视欧美成人| 99视频一区二区三区| 欧美国产97人人爽人人喊| 经典三级视频一区| 日韩欧美www| 日本午夜一本久久久综合| 欧美日本在线播放| 亚洲一级电影视频| 色老汉一区二区三区| 亚洲欧美日韩国产成人精品影院| 岛国精品在线播放| 中文字幕不卡在线播放| 国产99久久久国产精品潘金| 精品电影一区二区三区| 激情av综合网| 久久网站热最新地址| 国产麻豆成人精品| 欧美国产1区2区| av高清久久久| 亚洲免费在线电影| 欧美午夜精品理论片a级按摩| 一区二区三区四区不卡视频 | 555夜色666亚洲国产免| 婷婷丁香久久五月婷婷| 777奇米四色成人影色区| 日韩国产一二三区| 日韩西西人体444www| 黑人巨大精品欧美一区| 国产日韩综合av| av男人天堂一区| 综合中文字幕亚洲| 欧亚一区二区三区| 日韩精品成人一区二区在线| 日韩视频一区在线观看| 国产一区福利在线| 国产精品久久看| 在线中文字幕一区二区| 日韩国产精品久久| 精品国一区二区三区| proumb性欧美在线观看| 亚洲综合小说图片| 日韩欧美久久一区| 成人三级伦理片| 一个色综合av| 日韩欧美激情一区| 成人免费高清在线| 亚洲大片精品永久免费| 欧美电影免费观看完整版| 粗大黑人巨茎大战欧美成人| 亚洲高清一区二区三区| 精品盗摄一区二区三区| 97久久超碰精品国产| 日韩精品免费专区|