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

首頁 > 編程 > C# > 正文

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

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

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

什么是線性結構,線性結構是最簡單、最基本、最常用的數據結構。線性表是線性結構的抽象(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²)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
中文字幕视频一区二区三区久| 欧美日韩亚洲一区| av一区在线观看| 国产欧美中文字幕| 日本一级一片免费视频| 在线中文字幕视频| 中文字幕狠狠干| 日韩欧美中文字幕在线观看| 91极品视频在线观看| 国产福利一区二区在线精品| 欧美日韩成人一区二区| 中文字幕欧美日韩| 欧美日韩视频网站| 在线一区av| 九九视频精品免费| 亚洲视频一二三四| 中文字幕欧美日韩| 日韩午夜黄色| 国产在线一区二区视频| 中文字幕亚洲一区二区av在线| 顶级网黄在线播放| 欧美日韩国产在线看| 久久婷婷综合国产| 国产黄色网页| 国产小视频免费在线观看| 欧美日韩中文在线| 午夜伊人狠狠久久| 欧美性极品xxxx做受| 中文字幕在线观看视频www| 91久久精品午夜一区二区| 欧美日韩亚洲不卡| 国产偷久久久精品专区| 亚洲欧美伊人| 一区二区视频在线| 中文字幕日韩欧美在线视频| 在线欧美日韩精品| 狠狠色噜噜狠狠狠狠97| 一区精品在线播放| www.精品视频| 精品三级av| eeuss一区| 白嫩少妇丰满一区二区| 欧美日韩在线播放三区四区| 精品国自产在线观看| 欧美日韩综合在线| 亚洲福利一区二区三区| 97最新国自产拍视频在线完整在线看 | 国产久卡久卡久卡久卡视频精品| 亚洲一区激情| 精品一二三区视频| 日韩中文字幕网| 97天天综合网| 首页国产欧美久久| wwwav在线播放| 国产91大片| 日韩精品在线免费看| 亚洲三级欧美| 91精品国产91久久久久青草| 中文字幕日韩欧美在线| 一区二区不卡在线| 日韩精品福利一区二区三区| 欧美啪啪一区| 天堂在线一区二区三区| 欧美日韩免费精品| 日韩欧美在线视频日韩欧美在线视频| 欧洲精品在线视频| 欧美日本精品| www.狠狠| 中文字幕在线观看欧美| 日韩精品视频在线| 欧美日韩国产黄色| 在线观看91精品国产入口| 国产在线观看黄色| 欧美日韩第一| 日韩在线二区| 日韩免费高清一区二区| 一区在线视频观看| 亚洲日产av中文字幕| 中文字幕精品视频在线| 99中文字幕一区| 91色在线看| eeuss一区| 欧美日韩国产免费观看视频| 欧美日韩国产综合网| 欧美日韩国产123区| 国产最新在线| 大香一本蕉伊线亚洲网| 中文字幕国产视频| 精品三级av| 日韩中文在线中文网三级| 在线看欧美日韩| 一区三区视频| 欧美日韩国产不卡| 国产一区精品| 99久久精品国产成人一区二区| 中文字幕在线播放一区| 欧美日韩国产中文精品字幕自在自线| 精品日韩视频在线观看| 亚洲尤物av| 日韩精品在线免费观看视频| 一级特黄大欧美久久久| 久久视频免费看| 欧美日韩国产系列| 免费视频国产一区| 精品999视频| 丰满少妇一区| 91精品免费观看| 日本a级黄色| 日韩欧美一级精品久久| 久久精品在线观看| 日本免费在线视频不卡一不卡二| 麻豆精品99| 在线看av的网址| 日韩免费视频一区二区视频在线观看| 日韩网站中文字幕| 日韩一二三四区| 欧美在线中文字幕| 中文字幕4区| 日韩欧美中文字幕在线观看| av免费观看国产| 日韩精品首页| 欧美黄页在线免费观看| 91精品国产自产在线观看永久∴ | 国产成人日日夜夜| 亚洲免费精品| 亚洲国产午夜精品| 亚洲一区中文在线| 欧美成人一区二区| 精品福利一区二区三区| 精品久久久网| 国产欧美中文字幕| 国产一区在线精品| 亚洲视频日韩| 亚洲国产福利| 午夜一区二区视频| 中文字幕不卡三区| 国产欧美久久久久久久久| 婷婷久久综合九色国产成人| 国产乱一区二区| 日韩在线观看精品| 欧美日韩精品在线视频| 国产高清视频一区二区| 久久99久久久久久久噜噜| 亚洲午夜91| av免费观看国产| 日韩不卡一二三区| 精品视频999| 日韩欧美综合在线视频| 欧美日韩色综合| 日韩av一区在线| 久久精品一二三| 欧美日韩中文另类| 欧美日韩亚洲不卡| 91精品婷婷国产综合久久| 91精品久久久久久蜜臀| 欧美va亚洲va日韩∨a综合色| 精品日韩在线播放| 婷婷综合福利| 国产真实乱子伦精品视频| 国产三级在线| 国产欧美日韩亚洲| 狠狠色综合色区| 一区二区三区四区五区视频在线观看| 韩国av一区二区| 日韩欧美中文字幕精品| 黄色视屏免费在线观看| 日韩亚洲欧美中文字幕| 欧美三级日韩在线| 国产乱一区二区| 深夜日韩欧美| 欧美在线日韩在线| 天堂在线中文| 深夜福利亚洲| 国产高清在线视频| 欧美日韩中文字幕在线观看| a天堂中文在线官网在线| 日韩免费电影网站| 一本大道一区二区三区| 国产欧美日韩久久| 日韩视频在线免费看| 欧洲精品二区| 中文字幕国产日韩| 中文字幕精品www乱入免费视频| 欧美日韩综合视频| 精品熟女一区二区三区| 日韩视频中文字幕| 最近中文字幕在线中文高清版| 日韩欧美在线不卡| 欧美日韩精品区| 欧美中文字幕视频在线观看| 中文字幕在线导航| 日本亚洲欧美三级| 久久99精品国产| 欧美中文字幕视频| 丰满少妇一区| 日韩欧美国产免费| 一区三区二区视频| 日韩视频精品| 日韩欧美中文在线| 免费精品国产自产拍观看| 二区视频在线观看| 精品中文字幕视频| 中文在线а√在线8| 中文字幕日韩亚洲| 国产欧美日产一区| 日韩欧美专区在线| 久久麻豆视频| 国内精品露脸在线视频播放| 欧美日韩免费视频| 欧洲精品久久久| 一区二区不卡在线| 国产 欧美 在线| 在线中文字幕网站| 日韩在线一区二区| 欧美日韩精品是欧美日韩精品| 精品久久在线观看| 不卡一二三区| 欧美日韩人人澡狠狠躁视频| 韩国一区二区av| 91精选在线| 日韩在线视频免费观看高清中文| √天堂资源中文www| 成人a在线观看| 日韩高清在线一区二区| 国产在线第一页| 中文字幕亚洲国产| 欧美日韩国产区| 精品国产1区2区3区| av免费网站在线观看| 97国产视频| 亚洲a级在线播放观看| 免费在线观看国产黄| 欧美日韩91| 欧美日韩国产系列| 欧美日韩性视频| 国产123在线| 欧美日韩亚洲综合| 日韩免费电影网站| 视频一区二区精品的福利| 欧美日韩高清不卡| 在线视频色在线| 成人一区二区不卡免费| 91精品999| 国产区视频在线观看| 91www成人久久| 一区二区在线看| 中文字幕亚洲国产| 国产一卡二卡3卡4卡四卡在线| av免费在线观看网址| 国产日产一区二区三区 | 欧美日韩综合视频| 91精品国产综合久久久久| 日本精品在线中文字幕| 免费视频最近日韩| 日本亚洲欧美三级| 三级网站免费观看| 国产午夜精品全部视频播放| 91精品国产丝袜白色高跟鞋| 欧美日韩国产免费观看视频| 日韩精品一级| 一区二区三区在线不卡| 在线观看91精品国产入口| 精品久久人人做人人爽| 国产一区在线不卡| 日韩在线视频网| 日韩在线视频中文字幕| 精品欧美久久久| 中文字幕亚洲在| 亚洲成av人片一区二区密柚| 三级网站免费观看| 国产乱码在线观看| 在线观看区一区二| 精品日韩在线观看| 91精品国产乱码久久蜜臀| 日韩在线观看a| 日韩中文字幕在线视频播放| 亚洲国产欧美久久| 欧美日韩精品中文字幕| 国产亚洲人成a一在线v站| 一区二区不卡视频在线观看| 国产欧美日韩亚洲| 中文字幕在线中文字幕二区| 国产手机精品视频| 中文在线日韩| 在线视频你懂得一区| 日韩av不卡在线观看| av免费在线播放| 狠狠色噜噜狠狠狠狠97| 中文字幕不卡三区| 日韩精品―中文字幕| 激情婷婷亚洲| 欧美日韩中文字幕一区| 欧美日韩久久不卡| 日韩视频在线免费播放| 国产美女主播视频一区| 中文字幕精品一区二| 欧美日韩视频免费| 99久久www免费| 在线观看精品国产| 精品欧美久久久| 九九精品调教| 亚洲成人7777| 三级网站免费观看| 高清在线一区| 蜜臀久久精品| 国产乱码在线观看| 国产综合精品在线| 欧美日韩精品高清| 最近中文字幕第一页| 一本一道综合狠狠老| 中文精品电影| 精品日韩欧美在线| 日本亚洲视频在线| 黄色一区二区视频| 欧美一级搡bbbb搡bbbb| 欧美日韩免费不卡视频一区二区三区| 国产欧美久久久| 精品国产欧美成人夜夜嗨| 午夜高潮免费视频| 亚洲一区视频在线观看视频| 日韩 欧美 综合| 欧美高清一区| 国产成人精品综合网站| 久久精品蜜桃| 日韩欧美国产高清91| 久久精品卡一| 午夜国产福利一区二区| 在线欧美日韩精品| 国产成人精品三级| 99久久久精品免费观看国产| 日韩中文字幕国产| 欧美一级日韩一级| 五月天久久比比资源色| 999视频精品| 亚洲综合日韩| 中文字幕日韩欧美在线| 视频一区二区国产| 亚洲乱码中文字幕| 亚洲欧美伊人| 91精品综合久久| 国产视频一区三区| 日韩欧美国产三级| 91精品国产免费| 中文字幕在线看视频国产欧美| 国产日韩在线视频| 一区二区视频在线| 欧美日韩亚洲系列| 欧美一级免费观看| 视频一区不卡| 日本亚洲欧美| 影音先锋一区二区资源站| 欧美三级中文字幕在线观看| 欧美日韩综合高清一区二区| 91精品国产入口| 精品视频www| 日韩三级视频中文字幕| 亚洲最新免费视频| 久久久综合精品| 91精品国产自产| 色欧美日韩亚洲| 国产三级视频在线| av首页在线| 欧美 日韩 中文字幕| 国产在线拍偷自揄拍精品| 1区2区在线| 欧美午夜影院在线视频| 中文字幕日韩在线视频| 日韩三级免费观看| 亚欧成人精品| 欧美不卡一二三| 中文字幕亚洲欧美| 亚洲а∨精品天堂在线| 国产视频一区三区| 久久久99久久| 91精品综合久久| 欧美不卡一二三| 日韩欧美一卡二卡| 国产一级免费| 国产福利不卡| 91久久久久久久久| 91国内在线| 精品欧美不卡一区二区在线观看| 在线视频第一页| 免费高清特黄a大片| 国产又粗又猛又爽又黄91精品| 国产乱国产乱老熟300部视频| 日韩欧美国产一二三区| 日韩福利视频导航| 一区二区不卡视频| 国产免费一级片| 中文字幕2020第一页| 不卡专区在线| 在线国产99| 久久久99精品久久| 欧美wwww| 国产最顶级的黄色片在线免费观看| 午夜伦欧美伦电影理论片| 欧美综合精品| 国产婷婷一区二区| 精品成人久久av|