日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > C# > 正文

C#數據結構與算法揭秘二

2020-01-24 03:40:09
字體:
來源:轉載
供稿:網友

上文對數據結構與算法,有了一個簡單的概述與介紹,這篇文章,我們介紹一中典型數據結構――線性結構。

什么是線性結構,線性結構是最簡單、最基本、最常用的數據結構。線性表是線性結構的抽象(Abstract), 線性結構的特點是結構中的數據元素之間存在一對一的線性關系。 這

種一對一的關系指的是數據元素之間的位置關系,即: (1)除第一個位置的數據元素外,其它數據元素位置的前面都只有一個數據元素; (2)除最后一個位置的數據元素外,其它數據元素位置的后面都只有一個元素。也就是說,數據元素是一個接一個的排列。因此,可以把線性結構想象為一種數據元素序列的數據結構。

線性結構(List)是由 n(n≥0)個相同類型的數據元素構成的有限序列。對于這個定義應該注意兩個概念:一是“有限” ,指的是線性表中的數據元素的個數是有限的,線性表中的每一個數據元素都有自己的位置(Position)。本書不討論數據元素個數無限的線性表。二是“相同類型” ,指的是線性表中的數據元素都屬于同一種類型。這體現在我們常用的數據結構就是數組,泛型等等他們都是線性結構的。

他們之間的關系 是:線性表的形式化定義為:線性表(List)簡記為 L,是一個二元組, L = (D, R) 其中:D 是數據元素的有限集合。 R 是數據元素之間關系的有限集合。

線性結構的基本操作如下:

public interface IListDS<T> {
int GetLength(); //求長度
void Clear(); //清空操作
bool IsEmpty(); //判斷線性表是否為空
void Append(T item); //附加操作
void Insert(T item, int i); //插入操作
T Delete(int i); //刪除操作
T GetElem(int i); //取表元
int Locate(T value); //按值查找
}

這里為什么是IListDS是與。net自帶IList相區別。對每個方法解釋如下:

1、求長度:GetLength()
初始條件:線性表存在;
操作結果:返回線性表中所有數據元素的個數。
2、清空操作:Clear()
初始條件:線性表存在且有數據元素;
操作結果:從線性表中清除所有數據元素,線性表為空。
3、判斷線性表是否為空:IsEmpty()
初始條件:線性表存在;
操作結果:如果線性表為空返回 true,否則返回 false。
4、附加操作:Append(T item)
初始條件:線性表存在且未滿;
操作結果:將值為 item 的新元素添加到表的末尾。
5、插入操作:Insert(T item, int i)
初始條件:線性表存在,插入位置正確()(1≤i≤n+1,n 為插入前的表長)。
操作結果:在線性表的第 i 個位置上插入一個值為 item 的新元素,這樣使得原序號為 i,i+1,…,n 的數據元素的序號變為 i+1,i+2,…,n+1,插入后表長=原表長+1。 
6、刪除操作:Delete(int i)
初始條件:線性表存在且不為空,刪除位置正確(1≤i≤n,n 為刪除前的表長)。
操作結果:在線性表中刪除序號為 i 的數據元素,返回刪除后的數據元素。刪除后使原序號為 i+1,i+2,…,n 的數據元素的序號變為 i,i+1,…,n-1,刪除后表長=原表長-1。
7、取表元:GetElem(int i)
初始條件:線性表存在,所取數據元素位置正確(1≤i≤n,n 為線性表的表長) ; 操作結果:返回線性表中第 i 個數據元素。
8、按值查找:Locate(T value)
初始條件:線性表存在。
操作結果:在線性表中查找值為 value 的數據元素,其結果返回在線性表中首次出現的值為 value 的數據元素的序號,稱為查找成功;否則,在線性表中未找到值為 value 的數據元素,返回一個特殊值表示查找失敗。

先看最簡單的線性結構――順序表

什么是順序表,線性結構的順序存儲是指在內存中用一塊地址連續的空間依次存放線性表的數據元素,用這種方式存儲的線性就叫順序表(Sequence List)。

順序表儲存結構如圖所示

假設順序表中的每個數據元素占w個存儲單元, 設第i個數據元素的存儲地址為Loc(ai),則有: Loc(ai)= Loc(a1)+(i-1)*w 1≤i≤n 式中的Loc(a1)表示第一個數據元素a1的存儲地址,也是順序表的起始存儲地址,稱為順序表的基地址(Base Address). 這里我們舉個例子吧,比如你去酒店的時候,知道101號房間的基準的位置,你要去111號房間,你知道每個房間之間的距離是5,那里只需要前進50米。順序表的地址運算就這么簡單。

而順序表是繼承與線性結構,他的源代碼又是這個樣子的。

public class SeqList<T> : IListDS<T> {
private int maxsize; //順序表的容量   順序表的最大容量
private T[] data; //數組,用于存儲順序表中的數據元素 用于存儲順序表的結構 
private int last; //指示順序表最后一個元素的位置  

//索引器
public T this[int index]
{
get
{
return data[index];
}
set
{
data[index] = value;
}
}

//最后一個數據元素位置屬性
public int Last
{
get
{
return last;
}
}

//容量屬性
public int Maxsize
{
get
{
return maxsize;
}

set
{
maxsize = value;
}
}

//構造器 進行函數初始化工作

public SeqList(int size) 

{
data = new T[size];
maxsize = size;
last = -1;
}

//求順序表的長度
public int GetLength()
{
return last+1;
}

//清空順序表

//清除順序表中的數據元素是使順序表為空,此時,last 等于-1。

public void Clear()
{
last = -1;
}

//判斷順序表是否為空

//如果順序表的 last 為-1,則順序表為空,返回 true,否則返回 false。
public bool IsEmpty()
{
if (last == -1)
{
return true;
}
else
{
return false;
}
}


//判斷順序表是否為滿

//如果順序表為滿,last 等于 maxsize-1,則返回 true,否則返回 false。
public bool IsFull()
{
if (last == maxsize-1)
{
return true;
}
else
{
return false;
}
}
//附加操作是在順序表未滿的情況下,在表的末端添加一個新元素,然后使順序表的last加1。

//在順序表的末尾添加新元素
public void Append(T item)
{
if(IsFull())
{
Console.WriteLine("List is full");
return;
}

data[++last] = item;
}
//順序表的插入是指在順序表的第i個位置插入一個值為item的新元素, 插入后使 原 表 長 為 n 的 表 (a1,a2, … ,ai-1,ai,ai+1, … ,an) 成 為 表 長 為 n+1 的 表(a1,a2,…,ai-1,item,ai,ai+1,…,an)。i的取值范圍為 1≤i≤n+1,i為n+1 時,表示在順序表的末尾插入數據元素。 順序表上插入一個數據元素的步驟如下: 

//(1)判斷順序表是否已滿和插入的位置是否正確,表滿或插入的位置不正確不能插入;
//(2)如果表未滿和插入的位置正確,則將an~ai依次向后移動,為新的數據元素空出位置。在算法中用循環來實現;
//(3)將新的數據元素插入到空出的第 i 個位置上;
//(4)修改 last(相當于修改表長) ,使它仍指向順序表的最后一個數據元素。

//在順序表的第i個數據元素的位置插入一個數據元素
public void Insert(T item, int i)
{
if (IsFull())
{
Console.WriteLine("List is full");
return;
}

if(i<1 | i>last+2)
{
Console.WriteLine("Position is error!");
return;
}

if (i == last + 2)
{
data[last+1] = item; 
}
else
{
for (int j = last; j>= i-1; --j)
{
data[j + 1] = data[j];
}

data[i-1] = item;
}
++last;
}

算法的時間復雜度分析:順序表上的插入操作,時間主要消耗在數據的移動上, 在第i個位置插入一個元素, 從ai到an都要向后移動一個位置, 共需要移動n-i+1
個元素,而i的取值范圍為 1≤i≤n+1,當i等于 1 時,需要移動的元素個數最多,為n個;當i為n+1 時,不需要移動元素。設在第i個位置做插入的概率為pi,則平
均移動數據元素的次數為n/2。這說明:在順序表上做插入操作平均需要移動表中一半的數據元素,所以,插入操作的時間復雜度為O(n) 。

 

//順序表的刪除操作是指將表中第i個數據元素從順序表中刪除, 刪除后使原表長 為 n 的 表 (a1,a2, … ,ai-1,ai, ai+1, … ,an) 變 為 表 長 為 n-1的 表(a1,a2,…,ai-1,ai+1,…,an)。i的取值范圍為 1≤i≤n,i為n時,表示刪除順序表末尾的數據元素。 

順序表上刪除一個數據元素的步驟如下:
(1)判斷順序表是否為空和刪除的位置是否正確,表空或刪除的位置不正
確不能刪除;
(2)如果表未空和刪除的位置正確,則將ai+1~an依次向前移動。在算法中
用循環來實現;
(3)修改 last(相當于修改表長) ,使它仍指向順序表的最后一個元素。

//刪除順序表的第i個數據元素
public T Delete(int i)
{
T tmp = default(T);
if (IsEmpty())
{
Console.WriteLine("List is empty");
return tmp;
}

if (i < 1 | i > last+1)
{
Console.WriteLine("Position is error!");
return tmp;
}

if (i == last+1)
{
tmp = data[last--];
}
else
{
tmp = data[i-1];
for (int j = i; j <= last; ++j)
{
data[j] = data[j + 1];
}
}

--last;
return tmp;
}

算法的時間復雜度分析:順序表上的刪除操作與插入操作一樣,時間主要消耗在數據的移動上。在第i個位置刪除一個元素,從ai+1到an都要向前移動一個位置,共需要移動n-i個元素,而i的取值范圍為 1≤i≤n,當i等于 1 時,需要移動的元素個數最多,為n-1 個;當i為n時,不需要移動元素。設在第i個位置做刪除的概率為pi,則平均移動數據元素的次數為(n-1)/2。這說明在順序表上做刪除操作平均需要移動表中一半的數據元素,所以,刪除操作的時間復雜度為O(n) 。

//取表元運算是返回順序表中第 i 個數據元素,i 的取值范圍是 1≤i≤last+1。由于表是隨機存取的,所以,如果 i 的取值正確,則取表元運算的時間復雜度為O(1) 。

//獲得順序表的第i個數據元素 
public T GetElem(int i)
{
if (IsEmpty() | | (i<1) | | (i>last+1))
{
Console.WriteLine("List is empty or Position is error!");
return default(T);
}

return data[i-1];
}
//順序表中的按值查找是指在表中查找滿足給定值的數據元素。 在順序表中完成該運算最簡單的方法是:從第一個元素起依次與給定值比較,如果找到,則返回在順序表中首次出現與給定值相等的數據元素的序號,稱為查找成功;否則,在順序表中沒有與給定值匹配的數據元素,返回一個特殊值表示查找失敗。

//在順序表中查找值為value的數據元素
public int Locate(T value)
{
if(IsEmpty())
{
Console.WriteLine("List is Empty!");
return -1;
}

int i = 0;
for (i = 0; i <= last; ++i)
{
if (value.Equals(data[i]))
{
break;
}
}

if (i > last)
{
return -1;
}
return i;
}
}

算法的時間復雜度分析:順序表中的按值查找的主要運算是比較,比較的次數與給定值在表中的位置和表長有關。當給定值與第一個數據元素相等時,比較次數為 1;而當給定值與最后一個元素相等時,比較次數為 n。所以,平均比較次數為(n+1)/2,時間復雜度為 O(n) 。

如:已知順序表 L,寫一算法將其倒置,即實現如圖 2.4 所示的操作,其中(a)為倒置前,(b)為倒置后。

我思考的思路就是以所在的中間數進行前后調換。相應的源代碼如下:

public void ReversSeqList(SeqList<int> L)
{
int tmp = 0;
int len = L.GetLength();
for (int i = 0; i<= len/2; ++i)
{
tmp = L[i];
L[i] = L[len - i];
L[len - i] = tmp;
}
}

該算法只是對順序表中的數據元素順序掃描一遍即完成了倒置, 所以時間復雜度為 O(n)。其中運行效果如圖所示:

還譬如,我就我開發親身經歷而言  在俄羅斯方塊這個項目中,我的順序結構用的確實很多譬如初始化過程中。

// 初始化形狀集合,共七種形狀
_pieces = new List<PieceBase> { new I(), new L(), new I2(), new L2(), new N(), new N2(), new O(), new T() };
// 初始化方塊容器(用 Block 對象填滿整個容器)
Container = new Block[_rows, _columns];
for (int i = 0; i < _rows; i++)
{
for (int j = 0; j < _columns; j++)
{
var block = new Block();
block.Top = i * block.rectangle.ActualHeight;
block.Left = j * block.rectangle.ActualWidth;
block.Color = null;
Container[i, j] = block;
}
}

// 初始化下一個形狀的容器(用 Block 對象將其填滿)
NextContainer = new Block[4, 4];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
var block = new Block();
block.Top = i * block.rectangle.ActualHeight;
block.Left = j * block.rectangle.ActualWidth;
block.Color = null;
NextContainer[i, j] = block;
}
}

// 創建一個新的形狀
CreatePiece();
// 呈現當前創建出的形狀
AddPiece(0, 0);

// Timer 用于定時向下移動形狀
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMilliseconds(_initSpeed);
_timer.Tick += _timer_Tick;
GameStatus = GameStatus.Ready;

你看看我用的初始化方塊容器,這個容器是二維數組,這就是一種明顯的順序表。將他top位置,left位置賦值,進行一系列初始化工作。這就等同于順序表初始化操作。這個算法的復雜度為O(n²)。

本文中,我們討論了什么是線性結構,線性結構有哪些特點,并且詳細介紹了一個最簡單線性結構順序表,并且通過源代碼對她進行一些列的分析,最后還舉了兩個例子,讓我們更好的理解順序表。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
日韩美女中文字幕| 国产视频1区2区| 国产1区在线| 日本亚洲视频在线| 91精品国产全国免费观看 | 欧美一级免费看| 日韩欧美亚洲国产一区| 在线免费播放av| 中文字幕亚洲二区| 综合图区亚洲白拍在线 | 久久精品国产91精品亚洲| 美女免费视频一区| 日韩av一区二区在线| 日韩中文字幕在线视频播放 | 中文字幕国产视频| 日韩免费电影网站| 欧美日韩综合在线观看| 成片免费观看| 国产成人精品免费网站| 欧美日韩三级在线| 亚洲最大黄色| 日本免费在线视频不卡一不卡二| 婷婷中文字幕综合| 欧美日韩精品免费在线观看视频| 欧美国产日韩综合| 在线视频三区| 欧美日韩视频在线| 日韩视频中文字幕| 欧美日韩在线观看成人| 欧美日韩国产中文精品字幕自在自线| 久久久另类综合| 久久精品视频免费看| 一区在线免费| 一区二区三区免费看视频 | 中文字幕99| 日韩在线视频免费观看| 亚洲最新免费视频| 亚洲欧美99| 顶级网黄在线播放| 久久99久久久久久久噜噜| 中文字幕在线精品| 欧美日韩在线不卡| 高清日韩中文字幕| 国产午夜精品视频| 一区二区三区高清在线| 亚洲精品欧美二区三区中文字幕| www.久久草| 中文字幕五月天| 中文字幕在线日韩| 久久久91精品| 在线不卡日本| 久久福利视频一区二区| 精品亚洲国内自在自线福利| 99精品免费观看| 日韩一级在线视频| 欧美中文字幕在线观看视频| 日韩欧美不卡在线| 最新中文字幕在线播放 | 亚洲日本精品视频| 日韩在线精品| 国产亚洲短视频| 国产95在线|亚洲| 天堂精品高清1区2区3区| 最新日韩中文字幕| 国产一级免费在线观看| 粉嫩喷白浆久久| 欧美日韩国产第一页| 国产色在线视频| 欧美 日韩 中文字幕| 国产高清一区| 伊人www22综合色| 国产黄色片大全| 国产美女主播视频一区| 亚洲免费在线视频一区 二区| 国产成人精品免费在线| 91精品无人成人www| 欧美日韩亚洲国内综合网俺| 日韩精品福利视频| 国产一级片网站| 日韩欧美在线不卡| 不卡一二三区| 日韩在线视频二区| 国产成人精品三级| wwwwww国产| 日韩精品欧美| 午夜国产视频 | 伊人网站在线| 91精品国产综合久久精品| 日韩精品在线视频| 日韩影院二区| 午夜国产福利一区二区| 国产在线第一页| 视频在线一区二区| 精品1区2区3区| 免费视频一区三区| 中文字幕在线亚洲| 日韩中文在线中文网三级| 欧美 日韩 中文字幕| 久草亚洲一区| 国产免费永久在线观看| 午夜成人鲁丝片午夜精品| 欧美日本精品在线| 国产不卡在线| 国产激情在线观看| 亚洲一卡二卡在线观看| 拍真实国产伦偷精品| 亚洲羞羞网站| 午夜国产视频| 中文字幕精品一区二| 亚洲黄色一区二区| 日韩欧美在线第一页| 精品久久久网| 日韩字幕在线观看| 日韩精品在线私人| 亚洲欧美999| 中文字幕在线中文字幕二区| 中文字幕国产亚洲| 在线看的av| 国产欧美日韩亚洲| 日韩精品大片| 日韩av不卡在线观看| 国产欧美日韩在线观看| 亚洲视频资源在线| 日韩欧美99| 亚洲a级在线播放观看| 国产成人精品三级| 91精品国产丝袜白色高跟鞋| 顶级网黄在线播放| 天堂中文在线视频| 国产在线欧美日韩| 日韩视频在线免费看| 一区在线视频观看| 视频一区不卡| 香蕉人人精品| 99热最新网址| 精品人妻二区中文字幕| 一区二区视频在线| 日韩在线视频观看正片免费网站| 天堂在线视频中文网| 日韩三级高清在线| 日韩欧美专区在线| 91精品国产自产在线丝袜啪| 91精品国产综合久久福利| 日韩精品在线免费播放| 中文字幕在线精品| 国产三级中文字幕| 在线视频不卡国产V| 91精品国产91久久久久| 国产不卡一区| 中文字幕欧美日韩va免费视频| 久草中文在线观看| 日韩av一区二区在线| 中文字幕在线观看欧美| 成人一区二区不卡免费| 中文字幕在线观看欧美| 天堂在线视频中文网| 欧美国产亚洲一区| 91精品国产色综合久久不卡蜜臀| 中文字幕久久av| 亚洲欧洲国产视频| 欧美日韩国产高清| 亚洲成在线观看| 免费中文字幕日韩欧美| 日韩在线a电影| 黄色在线资源| 久久久精品国产免费观看同学| 中文字幕国产亚洲| 国产高清精品在线| 日韩精品视频免费| 日韩www在线| 91精品国产自产| 日韩中文字幕视频在线| 国产不卡一区二区在线观看| 国产免费播放一区二区| 大香一本蕉伊线亚洲网| www.中文字幕在线观看| 精品在线网站观看| 亚洲黄色在线观看| 快she精品国产999| 一区二区三区免费看视频| 日韩专区视频网站| 一级国产黄色片| 日韩三级视频在线播放| 99久热re在线精彩视频| 最新中文在线视频| 在线精品日韩| 午夜一区二区三区| 中文av字幕一区| 国产无套粉嫩白浆在线2022年| 亚洲羞羞网站| 亚洲 欧美 精品| 欧美区高清在线| 欧美 亚洲 精品 三区| 国产在线播放一区二区| 精品调教chinesegay| 在线不卡日本| 日韩国产91| 欧美日韩精品高清| 一级日韩一级欧美| 91精品国产综合久久香蕉的特点 | 正在播放日韩精品| 国产婷婷精品| 亚洲视频色图| 亚洲一区资源| 久草视频在线看| 日韩久久精品成人| 日本va欧美va精品发布| 精品在线99| 欧美一级二级三级区| 国产日韩在线亚洲字幕中文| 日韩久久99| 日韩福利视频导航| 日韩免费视频一区二区| 亚洲视频日韩| 日韩在线视频网| 欧洲精品在线一区| 黄色一区二区在线观看| 国产亚洲一级| 日韩一级在线免费观看| 国产欧美三级| 一级特黄大欧美久久久| 欧美在线中文字幕| 久久精品黄色片| 欧美日韩中文字幕在线| 91精品国产经典在线观看| 国产中文在线观看| 欧美一级免费看| 欧美一级在线免费| 91精品国产丝袜白色高跟鞋| 日韩欧美亚洲日产国| 欧美日韩午夜在线| 国产午夜精品久久| 国产91大片| 91精品高清| 在线观看免费国产成人软件| 国产视频一区三区| 日韩中文欧美| www在线播放| 日韩国产在线不卡视频| 欧美日韩91| 91精品国产亚洲| 日韩精品视频在线观看免费| 91精品国产91久久久久| 国产 欧美 日韩 在线| 福利一区二区| 国产蜜臀在线| 欧美三级网址| 日韩欧美亚洲国产一区| 免费高清特黄a大片| 免费国产h视频在线观看86| 日韩精品视频免费| 一区二区三区视频网站| 视频一区二区中文字幕| 欧美日韩在线不卡一区| 麻豆精品99| 91精品国产综合久久久久久漫画| 日韩一级在线视频| 91欧美日韩麻豆精品| 九九精品调教| 本道综合精品| 成人一区二区不卡免费| 日韩 欧美 亚洲| 国内不卡的二区三区中文字幕| 日韩欧美综合在线视频| 欧美三级在线播放| 最近中文字幕第一页| 精品视频在线导航| 日本精品在线播放| 国产自产视频| 欧美日韩国产亚洲一区| 欧美一级免费观看| 九一精品国产| 91精品视频观看| 亚洲视频中文字幕| 午夜视频在线观看一区| 欧美日韩在线播放一区| 亚洲永久字幕| 亚洲国产欧美91| 欧美日韩中文字幕| 欧美日韩在线不卡视频| 国产一级免费看| 国产在线视频不卡| 国产成人中文字幕| 91精品国产综合久久久久久漫画 | 欧美日韩国产成人| 韩日中文字幕第一页| 久久精品卡一| 亚洲一区激情| 国产黄色片中文字幕| 亚洲一区在线观看免费| 精品欧美日韩| 日韩在线 中文字幕| 中文字幕国产亚洲| 国产欧美三级| 精品国自产在线观看| 国产三级中文字幕| wwwav91com| 黄色一区二区在线观看| 日韩中文字幕在线视频观看| 欧美日韩中文字幕精品| 中文字幕日韩国产| 国产午夜精品久久| 欧美亚洲综合视频| 午夜视频在线观看一区| 欧美三级日韩三级国产三级| 国产福利久久| 成人欧美亚洲| 亚洲欧美小说国产图片| 国产成人综合精品| 日韩你懂的电影在线观看| 在线视频你懂得一区| 国产91久久久久| a视频免费在线观看| 国产偷国产偷亚洲清高网站| 亚洲 欧美综合在线网络| 亚洲一区日韩在线| 亚洲女人天堂色在线7777| 国产欧美在线观看| 国产一卡2卡3卡免费网站 | 欧美日韩国产综合视频在线观看中文| 亚洲一级特黄| 在线中文字幕视频| 国产在线二区| 91亚洲欧美| 在线日韩精品视频| 国产羞羞视频在线播放| 日韩在线视频网| 国产一二三精品| 亚洲成年人在线播放| 国内精品99| 蜜桃视频中文字幕| 精品国产乱码久久久久久蜜臀| 国产成人精品三级| 久久久精品欧美| 国产一级在线| 日韩精品资源二区在线| 日韩欧美在线视频| 欧美日韩国产免费| 91精品国产自产在线丝袜啪| 国产一级在线免费观看| 久久久精品免费免费| 久99久视频| 成人a在线视频免费观看| 91精品在线观| 欧美久久在线| 91精品国产综合久久久久| 久久99久久久久久久噜噜| 91精品国产综合久久蜜臀| 欧美久久久网站| 精品国产999| 日韩欧美色综合网站| 午夜影院在线观看欧美| 亚洲最大黄色| 日韩不卡一区二区| 久久夜色精品国产欧美乱极品| 中文字幕日韩精品在线| 欧美日韩国产在线看| 久久激情一区| 亚洲欧洲日韩精品在线| 日韩欧美国产免费播放| 欧美日韩视频免费| 一区二区在线看| 久久韩国免费视频| 精品视频资源站| 亚洲中文字幕在线一区| 国产一区免费视频| 久久人人精品| 亚州福利视频| 精品调教chinesegay| 中文字幕精品一区二| 亚洲欧洲三级| 国产激情久久| 91精品国产综合久久久蜜臀粉嫩| 91久久精品国产91性色69| 91精品国产免费久久综合| 天堂在线一区二区三区| 在线视频国内一区二区| 91麻豆精品国产91久久久使用方法| 一区二区国产在线| 中文字幕欧美日韩在线| 中文字幕日韩高清| 亚洲乱码在线观看| 国产激情久久久| 国产一卡2卡3卡免费网站| 一区在线免费| 99久热re在线精彩视频| 天天综合色天天| 精人妻一区二区三区| 不卡一区二区三区视频| 91精品999| 欧美日韩综合色| 国产拍揄自揄精品视频麻豆| 欧美在线中文字幕| 天堂精品高清1区2区3区| 婷婷中文字幕在线观看| 国产欧美综合在线| 日韩不卡在线观看| 国产高清不卡av| 99精品免费观看| 日韩免费电影网站|