亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 算法系列15天速成 第九天 隊(duì)列

算法系列15天速成 第九天 隊(duì)列

熱門標(biāo)簽:電銷機(jī)器人怎么收費(fèi) 滄州智能外呼系統(tǒng)收費(fèi) 嘟聲的電銷機(jī)器人 醫(yī)院地圖標(biāo)注 地圖標(biāo)注和圖片標(biāo)注 忻州外呼系統(tǒng)接口對接 湖北穩(wěn)定外呼系統(tǒng) 洛陽便宜外呼系統(tǒng)廠家 語音平臺系統(tǒng)

一:概念

          隊(duì)列是一個”先進(jìn)先出“的線性表,牛X的名字就是“First in First Out(FIFO)”,生活中有很多這樣的場景,比如讀書的時候去食堂打飯時的”排隊(duì)“。當(dāng)然我們拒絕插隊(duì)。

二:存儲結(jié)構(gòu)

         前幾天也說過,線性表有兩種”存儲結(jié)構(gòu)“,① 順序存儲,②鏈?zhǔn)酱鎯Α.?dāng)然“隊(duì)列”也脫離不了這兩種服務(wù),這里我就分享一下“順序存儲”。

     順序存儲時,我們會維護(hù)一個叫做”head頭指針“和”tail尾指針“,分別指向隊(duì)列的開頭和結(jié)尾。


代碼段如下:

復(fù)制代碼 代碼如下:

#region 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
    /// summary>
/// 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
/// /summary>
/// typeparam name="T">/typeparam>
    public class SeqQueueT>
    {
        private const int maxSize = 100;

        public int MaxSize
        {
            get { return maxSize; }
        }

        /// summary>
/// 順序隊(duì)列的存儲長度
/// /summary>
        public T[] data = new T[maxSize];

        //頭指針
        public int head;

        //尾指針
        public int tail;

    }
    #endregion

三:常用操作

      隊(duì)列的操作一般分為:

      ①: 初始化隊(duì)列。

      ②:   出隊(duì)。

      ③: 入隊(duì)。

      ④: 獲取隊(duì)頭。

      ⑤: 獲取隊(duì)長。


1:初始化隊(duì)列

        這個很簡單,剛才也說過了,隊(duì)列是用一個head和tail的指針來維護(hù)。分別設(shè)置為0即可。

2:出隊(duì)

       看著“隊(duì)列”的結(jié)構(gòu)圖,大家都知道,出隊(duì)肯定跟head指針有關(guān),需要做兩件事情,

       第一: 判斷隊(duì)列是否為空,這個我想大家都知道。
       第二: 將head頭指針向后移動一位,返回head移動前的元素,時間復(fù)雜度為O(1)。



代碼段如下:

復(fù)制代碼 代碼如下:

#region 隊(duì)列元素出隊(duì)
        /// summary>
/// 隊(duì)列元素出隊(duì)
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public T SeqQueueOutT>(SeqQueueT> seqQueue)
        {
            if (SeqQueueIsEmpty(seqQueue))
                throw new Exception("隊(duì)列已空,不能進(jìn)行出隊(duì)操作");

            var single = seqQueue.data[seqQueue.head];

            //head指針自增
            seqQueue.data[seqQueue.head++] = default(T);

            return single;

        }
        #endregion

3:入隊(duì)

      這個跟”出隊(duì)“的思想相反,同樣也是需要做兩件事情。

      第一:判斷隊(duì)列是否已滿。

      第二:將tail指針向后移動一位,時間復(fù)雜度為O(1)。

代碼段如下:

復(fù)制代碼 代碼如下:

#region 隊(duì)列元素入隊(duì)
        /// summary>
/// 隊(duì)列元素入隊(duì)
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// param name="data">/param>
/// returns>/returns>
        public SeqQueueT> SeqQueueInT>(SeqQueueT> seqQueue, T data)
        {
            //如果隊(duì)列已滿,則不能進(jìn)行入隊(duì)操作
            if (SeqQueueIsFull(seqQueue))
                throw new Exception("隊(duì)列已滿,不能入隊(duì)操作");

            //入隊(duì)操作
            seqQueue.data[seqQueue.tail++] = data;

            return seqQueue;
        }
        #endregion

4: 獲取隊(duì)頭

       知道”出隊(duì)“和”入隊(duì)“的原理,相信大家都懂的如何進(jìn)行”獲取隊(duì)頭“操作,唯一不一樣的就是

       他是只讀操作,不會破壞”隊(duì)列“結(jié)構(gòu),時間復(fù)雜度為O(1)。

 

代碼段如下:

復(fù)制代碼 代碼如下:

#region 獲取隊(duì)頭元素
        /// summary>
        /// 獲取隊(duì)頭元素
        /// /summary>
        /// typeparam name="T">/typeparam>
        /// param name="seqQueue">/param>
        /// returns>/returns>
        public T SeqQueuePeekT>(SeqQueueT> seqQueue)
        {
            if (SeqQueueIsEmpty(seqQueue))
                throw new Exception("隊(duì)列已空,不能進(jìn)行出隊(duì)操作");

            return seqQueue.data[seqQueue.head];
        }
        #endregion

5: 獲取隊(duì)長

       大家都知道,我們是用數(shù)組來實(shí)現(xiàn)隊(duì)列,所以千萬不要想當(dāng)然的認(rèn)為數(shù)組長度是XXX,

       我們維護(hù)的是一個head和tail的指針,所以長度自然就是tail-head咯,時間復(fù)雜度為O(1)。

代碼段如下:

復(fù)制代碼 代碼如下:

/// summary>
/// 獲取隊(duì)列長度
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public int SeqQueueLenT>(SeqQueueT> seqQueue)
        {
            return seqQueue.tail - seqQueue.head;
        }

然后上一下總的運(yùn)行代碼:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SeqQueue
{
    public class Program
    {
        static void Main(string[] args)
        {
            SeqQueueStudent> seqQueue = new SeqQueueStudent>();

            SeqQueueClass queueManage = new SeqQueueClass();

            Console.WriteLine("目前隊(duì)列是否為空:" + queueManage.SeqQueueIsEmpty(seqQueue) + "\n");

            Console.WriteLine("將ID=1和ID=2的實(shí)體加入隊(duì)列");
            queueManage.SeqQueueIn(seqQueue, new Student() { ID = 1, Name = "hxc520", Age = 23 });
            queueManage.SeqQueueIn(seqQueue, new Student() { ID = 2, Name = "一線碼農(nóng)", Age = 23 });

            Display(seqQueue);

            Console.WriteLine("將隊(duì)頭出隊(duì)");
            //將隊(duì)頭出隊(duì)
            var student = queueManage.SeqQueueOut(seqQueue);

            Display(seqQueue);

            //獲取隊(duì)頂元素
            student = queueManage.SeqQueuePeek(seqQueue);

            Console.Read();
        }
        //展示隊(duì)列元素
        static void Display(SeqQueueStudent> seqQueue)
        {
            Console.WriteLine("******************* 鏈表數(shù)據(jù)如下 *******************");

            for (int i = seqQueue.head; i seqQueue.tail; i++)
                Console.WriteLine("ID:" + seqQueue.data[i].ID +
                                  ",Name:" + seqQueue.data[i].Name +
                                  ",Age:" + seqQueue.data[i].Age);

            Console.WriteLine("******************* 鏈表數(shù)據(jù)展示完畢 *******************\n");
        }
    }

    #region 學(xué)生數(shù)據(jù)實(shí)體
    /// summary>
/// 學(xué)生數(shù)據(jù)實(shí)體
/// /summary>
    public class Student
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }
    }
    #endregion

    #region 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
    /// summary>
/// 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
/// /summary>
/// typeparam name="T">/typeparam>
    public class SeqQueueT>
    {
        private const int maxSize = 100;

        public int MaxSize
        {
            get { return maxSize; }
        }

        /// summary>
/// 順序隊(duì)列的存儲長度
/// /summary>
        public T[] data = new T[maxSize];

        //頭指針
        public int head;

        //尾指針
        public int tail;

    }
    #endregion

    #region 隊(duì)列的基本操作
    /// summary>
/// 隊(duì)列的基本操作
/// /summary>
    public class SeqQueueClass
    {
        #region 隊(duì)列的初始化操作
        /// summary>
/// 隊(duì)列的初始化操作
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
        public SeqQueueT> SeqQueueInitT>(SeqQueueT> seqQueue)
        {
            seqQueue.head = 0;
            seqQueue.tail = 0;

            return seqQueue;
        }
        #endregion

        #region 隊(duì)列是否為空
        /// summary>
/// 隊(duì)列是否為空
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public bool SeqQueueIsEmptyT>(SeqQueueT> seqQueue)
        {
            //如果兩指針重合,說明隊(duì)列已經(jīng)清空
            if (seqQueue.head == seqQueue.tail)
                return true;
            return false;
        }
        #endregion

        #region 隊(duì)列是否已滿
        /// summary>
/// 隊(duì)列是否已滿
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public bool SeqQueueIsFullT>(SeqQueueT> seqQueue)
        {
            //如果尾指針到達(dá)數(shù)組末尾,說明隊(duì)列已經(jīng)滿
            if (seqQueue.tail == seqQueue.MaxSize)
                return true;
            return false;
        }
        #endregion

        #region 隊(duì)列元素入隊(duì)
        /// summary>
/// 隊(duì)列元素入隊(duì)
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// param name="data">/param>
/// returns>/returns>
        public SeqQueueT> SeqQueueInT>(SeqQueueT> seqQueue, T data)
        {
            //如果隊(duì)列已滿,則不能進(jìn)行入隊(duì)操作
            if (SeqQueueIsFull(seqQueue))
                throw new Exception("隊(duì)列已滿,不能入隊(duì)操作");

            //入隊(duì)操作
            seqQueue.data[seqQueue.tail++] = data;

            return seqQueue;
        }
        #endregion

        #region 隊(duì)列元素出隊(duì)
        /// summary>
/// 隊(duì)列元素出隊(duì)
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public T SeqQueueOutT>(SeqQueueT> seqQueue)
        {
            if (SeqQueueIsEmpty(seqQueue))
                throw new Exception("隊(duì)列已空,不能進(jìn)行出隊(duì)操作");

            var single = seqQueue.data[seqQueue.head];

            //head指針自增
            seqQueue.data[seqQueue.head++] = default(T);

            return single;

        }
        #endregion

        #region 獲取隊(duì)頭元素
        /// summary>
/// 獲取隊(duì)頭元素
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public T SeqQueuePeekT>(SeqQueueT> seqQueue)
        {
            if (SeqQueueIsEmpty(seqQueue))
                throw new Exception("隊(duì)列已空,不能進(jìn)行出隊(duì)操作");

            return seqQueue.data[seqQueue.head];
        }
        #endregion

        /// summary>
/// 獲取隊(duì)列長度
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public int SeqQueueLenT>(SeqQueueT> seqQueue)
        {
            return seqQueue.tail - seqQueue.head;
        }
    }
    #endregion
}

三:順序隊(duì)列的缺陷

大家看這張圖,不知道可有什么異樣的感覺,在這種狀態(tài)下,我入隊(duì)操作,發(fā)現(xiàn)程序提示隊(duì)列

已滿,但是tnd我這個數(shù)組還有一個空間啊,是的,這就是所謂的“假溢出”。

四:循環(huán)隊(duì)列
 

俗話說的好啊,“沒有跨不過的坎”。

1: 概念

       之所以叫“循環(huán)”,得益于神奇的“%”。他讓隊(duì)列的首位進(jìn)行相連,形成了一個我們思維中的

       “圈圈”。
 

2:循環(huán)公式

      tail=(tail+1)%array.Length;

      多看幾眼,大家就看通了其中循環(huán)的道理,我要做成如下的圖:

3:對循環(huán)的改造

      先前看了一些資料,有的壓根就是錯的,有的說想要循環(huán),就要犧牲一個單位的空間。

      我覺得沒必要。我既要循環(huán)又不犧牲空間,所以反射了一下framework中的Queue類。

      改造后代碼如下:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SeqQueue
{
    public class Program
    {
        static void Main(string[] args)
        {
            SeqQueueStudent> seqQueue = new SeqQueueStudent>();

            SeqQueueClass queueManage = new SeqQueueClass();

            Console.WriteLine("目前隊(duì)列是否為空:" + queueManage.SeqQueueIsEmpty(seqQueue) + "\n");

            Console.WriteLine("將ID=1,2,3的實(shí)體加入隊(duì)列\(zhòng)n");
            queueManage.SeqQueueIn(seqQueue, new Student() { ID = 1, Name = "hxc520", Age = 23 });
            queueManage.SeqQueueIn(seqQueue, new Student() { ID = 2, Name = "一線碼農(nóng)", Age = 23 });
            queueManage.SeqQueueIn(seqQueue, new Student() { ID = 3, Name = "51cto", Age = 23 });

            Console.WriteLine("\n當(dāng)前隊(duì)列個數(shù):" + queueManage.SeqQueueLen(seqQueue) + "");

            Console.WriteLine("\n*********************************************\n");

            Console.WriteLine("我要出隊(duì)了\n");
            queueManage.SeqQueueOut(seqQueue);

            Console.WriteLine("哈哈,看看跟順序隊(duì)列異樣之處,我再入隊(duì),看是否溢出\n");
            queueManage.SeqQueueIn(seqQueue, new Student() { ID = 4, Name = "博客園", Age = 23 });
            Console.WriteLine("\n....一切正常,入隊(duì)成功");

            Console.WriteLine("\n當(dāng)前隊(duì)列個數(shù):" + queueManage.SeqQueueLen(seqQueue) + "");

            Console.Read();
        }
    }

    #region 學(xué)生數(shù)據(jù)實(shí)體
    /// summary>
/// 學(xué)生數(shù)據(jù)實(shí)體
/// /summary>
    public class Student
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }
    }
    #endregion

    #region 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
    /// summary>
/// 隊(duì)列的數(shù)據(jù)結(jié)構(gòu)
/// /summary>
/// typeparam name="T">/typeparam>
    public class SeqQueueT>
    {
        private const int maxSize = 3;

        public int MaxSize
        {
            get { return maxSize; }
        }

        /// summary>
/// 順序隊(duì)列的存儲長度
/// /summary>
        public T[] data = new T[maxSize];

        //頭指針
        public int head;

        //尾指針
        public int tail;

        //隊(duì)列中有效的數(shù)字個數(shù)
        public int size;
    }
    #endregion

    #region 隊(duì)列的基本操作
    /// summary>
/// 隊(duì)列的基本操作
/// /summary>
    public class SeqQueueClass
    {
        #region 隊(duì)列的初始化操作
        /// summary>
/// 隊(duì)列的初始化操作
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
        public SeqQueueT> SeqQueueInitT>(SeqQueueT> seqQueue)
        {
            seqQueue.size = seqQueue.head = seqQueue.tail = 0;

            return seqQueue;
        }
        #endregion

        #region 隊(duì)列是否為空
        /// summary>
/// 隊(duì)列是否為空
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public bool SeqQueueIsEmptyT>(SeqQueueT> seqQueue)
        {
            //如果兩指針重合,說明隊(duì)列已經(jīng)清空
            if (seqQueue.size == 0)
                return true;
            return false;
        }
        #endregion

        #region 隊(duì)列是否已滿
        /// summary>
/// 隊(duì)列是否已滿
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public bool SeqQueueIsFullT>(SeqQueueT> seqQueue)
        {
            //采用循環(huán)隊(duì)列后,頭指針
            if (seqQueue.size == seqQueue.MaxSize)
                return true;
            return false;
        }
        #endregion

        #region 隊(duì)列元素入隊(duì)
        /// summary>
/// 隊(duì)列元素入隊(duì)
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// param name="data">/param>
/// returns>/returns>
        public SeqQueueT> SeqQueueInT>(SeqQueueT> seqQueue, T data)
        {
            //如果隊(duì)列已滿,則不能進(jìn)行入隊(duì)操作
            if (SeqQueueIsFull(seqQueue))
                throw new Exception("隊(duì)列已滿,還入啥隊(duì)列啊!");

            //采用循環(huán)隊(duì)列,必須先賦值,在自增tail指針
            seqQueue.data[seqQueue.tail] = data;
            seqQueue.tail = (seqQueue.tail + 1) % seqQueue.MaxSize;

            //隊(duì)列實(shí)際元素增加
            seqQueue.size++;

            return seqQueue;
        }
        #endregion

        #region 隊(duì)列元素出隊(duì)
        /// summary>
/// 隊(duì)列元素出隊(duì)
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public T SeqQueueOutT>(SeqQueueT> seqQueue)
        {
            if (SeqQueueIsEmpty(seqQueue))
                throw new Exception("隊(duì)列已空,大哥,不要在出隊(duì)了!");

            //循環(huán)隊(duì)列出隊(duì),展現(xiàn)的是head的靈活性
            seqQueue.head = (seqQueue.head + 1) % seqQueue.MaxSize;

            //隊(duì)列實(shí)際元素遞減
            seqQueue.size--;

            return seqQueue.data[seqQueue.head];
        }
        #endregion

        #region 獲取隊(duì)頭元素
        /// summary>
/// 獲取隊(duì)頭元素
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public T SeqQueuePeekT>(SeqQueueT> seqQueue)
        {
            if (SeqQueueIsEmpty(seqQueue))
                throw new Exception("隊(duì)列已空,不能進(jìn)行出隊(duì)操作");

            return seqQueue.data[seqQueue.head];
        }
        #endregion

        #region 獲取隊(duì)列長度
        /// summary>
/// 獲取隊(duì)列長度
/// /summary>
/// typeparam name="T">/typeparam>
/// param name="seqQueue">/param>
/// returns>/returns>
        public int SeqQueueLenT>(SeqQueueT> seqQueue)
        {
            return seqQueue.size;
        }
        #endregion
    }
    #endregion
}



您可能感興趣的文章:
  • 算法系列15天速成 第十四天 圖【上】
  • 算法系列15天速成——第十三天 樹操作【下】
  • 算法系列15天速成 第十二天 樹操作【中】
  • 算法系列15天速成 第十一天 樹操作(上)
  • 算法系列15天速成 第十天 棧
  • 算法系列15天速成 第八天 線性表【下】
  • 算法系列15天速成 第七天 線性表【上】
  • 算法系列15天速成 第六天 五大經(jīng)典查找【下】
  • 算法系列15天速成 第五天 五大經(jīng)典查找【中】
  • 算法系列15天速成 第四天 五大經(jīng)典查找【上】
  • 算法系列15天速成 第三天 七大經(jīng)典排序【下】
  • 算法系列15天速成 第二天 七大經(jīng)典排序【中】
  • 算法系列15天速成 第一天 七大經(jīng)典排序【上】
  • 算法系列15天速成——第十五天 圖【下】(大結(jié)局)

標(biāo)簽:山南 日照 巴彥淖爾 定州 防城港 96 內(nèi)蒙古 宜賓

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《算法系列15天速成 第九天 隊(duì)列》,本文關(guān)鍵詞  算法,系列,15天,速成,第,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《算法系列15天速成 第九天 隊(duì)列》相關(guān)的同類信息!
  • 本頁收集關(guān)于算法系列15天速成 第九天 隊(duì)列的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产视频一区二区三区四区| a级毛片免费观看网站| 国产激情一区二区三区| 成人在激情在线视频| 亚洲精品永久一区| 日韩女人做爰大片| 国产麻豆精品| 国产不卡精品一区二区三区| 亚飞与亚基在线观看| 精品国产香蕉在线播出| 国产精品免费久久| 欧美激情伊人| 夜夜操网| 色综合久久天天综合绕观看| 一 级 黄 中国色 片| 欧美一级视频高清片| 欧美a免费| 国产91丝袜高跟系列| 精品视频免费观看| 毛片的网站| 日本在线播放一区| 精品久久久久久中文字幕一区| 免费国产在线观看不卡| 国产一级生活片| 国产精品免费精品自在线观看| 一级毛片视频播放| 日韩在线观看视频网站| 一a一级片| 四虎久久精品国产| 美女免费毛片| 日本伦理片网站| 九九精品影院| 欧美日本国产| 国产网站免费在线观看| 久久国产精品只做精品| 精品国产香蕉在线播出| 午夜欧美成人香蕉剧场| 国产网站免费视频| 成人高清视频在线观看| 日本免费看视频| 欧美激情一区二区三区在线| 人人干人人插| 亚洲 激情| 一级毛片视频播放| 国产麻豆精品高清在线播放| 成人免费观看视频| 成人影院久久久久久影院| 日韩在线观看网站| 国产伦精品一区三区视频| 欧美国产日韩精品| 高清一级片| 一级女人毛片人一女人| 久久国产精品自线拍免费| 国产视频在线免费观看| 国产视频一区二区三区四区| 精品国产一区二区三区久久久狼| 美国一区二区三区| 91麻豆精品国产片在线观看| 免费一级生活片| 国产精品自拍一区| 一本伊大人香蕉高清在线观看| a级毛片免费观看网站| 九九精品影院| 午夜久久网| 美国一区二区三区| 欧美1区2区3区| 日韩中文字幕在线亚洲一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产视频在线免费观看| 午夜在线观看视频免费 成人| 日韩一级黄色片| 国产伦精品一区二区三区无广告 | 日韩一级黄色| 日本伦理网站| 韩国三级香港三级日本三级| 九九久久国产精品| 91麻豆精品国产自产在线 | 精品在线观看国产| 亚洲精品永久一区| 美国一区二区三区| 99色视频在线观看| 亚洲第一页乱| 欧美a级成人淫片免费看| 国产一区二区精品久久91| 国产高清视频免费观看| 麻豆网站在线看| 欧美a级片免费看| 日日日夜夜操| 成人高清免费| 午夜在线影院| 日本特黄一级| 亚洲天堂免费| 一级片片| 成人免费观看网欧美片| 亚洲 国产精品 日韩| 99久久精品国产免费| 欧美激情一区二区三区视频高清 | 台湾美女古装一级毛片| 欧美激情一区二区三区视频 | 日韩欧美一二三区| 九九干| 国产一区二区精品久| 久久国产精品自线拍免费| 成人免费福利片在线观看| 国产成人精品综合| 成人免费观看的视频黄页| 精品视频一区二区三区| 午夜在线影院| 国产一区二区精品久久91| 一级女性大黄生活片免费| 成人在免费观看视频国产| 国产伦精品一区二区三区无广告 | 久久成人综合网| 青青久久国产成人免费网站| 日韩一级黄色大片| 国产视频网站在线观看| 免费的黄视频| 青青久久精品国产免费看| 欧美一级视| 午夜在线亚洲| 一级女性全黄生活片免费| 九九热国产视频| 亚洲精品久久久中文字| 亚洲精品中文一区不卡| 欧美激情一区二区三区视频高清| 精品在线观看国产| 麻豆午夜视频| 国产精品自拍一区| 色综合久久天天综线观看| 免费的黄视频| 欧美日本免费| a级毛片免费全部播放| 成人a大片在线观看| a级毛片免费观看网站| 久草免费在线色站| 久久国产一久久高清| 亚洲精品影院一区二区| 亚洲 激情| 欧美激情一区二区三区在线| 国产伦精品一区二区三区无广告| 青青久久国产成人免费网站| 天天色色网| 国产91精品一区| 999精品影视在线观看| 国产91丝袜高跟系列| 尤物视频网站在线观看| 亚久久伊人精品青青草原2020| 欧美日本免费| 韩国三级视频网站| 国产一区二区精品久久91| 国产不卡福利| 午夜在线亚洲| 国产精品1024在线永久免费| 成人影院久久久久久影院| 国产91精品系列在线观看| 欧美1区| 日韩avdvd| 成人免费观看男女羞羞视频| 一本高清在线| 国产视频网站在线观看| 美女免费精品视频在线观看| 国产原创视频在线| 免费国产在线视频| 91麻豆tv| 免费的黄色小视频| 日韩av成人| 亚洲精品中文一区不卡| 日韩中文字幕在线播放| 91麻豆tv| 日韩综合| 久久精品免视看国产成人2021| 九九久久国产精品| 一级片免费在线观看视频| 欧美a级片免费看| 日本免费乱人伦在线观看| 色综合久久天天综合观看| 国产高清视频免费观看| 精品视频在线观看视频免费视频 | 久草免费资源| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩在线观看免费| 欧美激情一区二区三区在线播放| 欧美激情一区二区三区在线| 麻豆系列 在线视频| 超级乱淫伦动漫| 97视频免费在线观看| 亚洲 欧美 成人日韩| 久久成人性色生活片| 91麻豆精品国产自产在线观看一区 | 999久久狠狠免费精品| 午夜家庭影院| 色综合久久天天综合观看| 青青久久精品| 99色视频在线观看| 成人影院一区二区三区| 深夜做爰性大片中文| 欧美激情一区二区三区视频高清 | 国产成人啪精品| 免费一级片在线| 国产欧美精品午夜在线播放|