日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法(2)——栈和队列

發(fā)布時(shí)間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法(2)——栈和队列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:題圖無(wú)關(guān),只是好看,接下來(lái)就來(lái)復(fù)習(xí)一下棧和隊(duì)列的相關(guān)知識(shí)

前序文章:

  • 數(shù)據(jù)結(jié)構(gòu)與算法(1)——數(shù)組與鏈表(https://www.jianshu.com/p/7b93b3570875)

什么是棧

棧是一種用于存儲(chǔ)數(shù)據(jù)的簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(與鏈表類似)。數(shù)據(jù)入棧的次序是棧的關(guān)鍵。可以把一桶桶裝的薯片看作是一個(gè)棧的例子,當(dāng)薯片做好之后,它們會(huì)依次被添加到桶里,每一片都會(huì)是當(dāng)前的最上面一片,而每次我們?nèi)〉臅r(shí)候也是取的最上面的那一片,規(guī)定你不能破壞桶也不能把底部捅穿,所以第一個(gè)放入桶的薯片只能最后一個(gè)從桶里取出;

定義:棧(Stack)是一個(gè)有序線性表,只能在表的一端(稱為棧頂,top)執(zhí)行插入和刪除操作。最后插入的元素將第一個(gè)被刪除,所以棧也稱為后進(jìn)先出(Last In First Out,LIFO)或先進(jìn)后出(First In Last Out)線性表;

兩個(gè)改變棧的操作都有專用名稱。一個(gè)稱為入棧(push),表示在棧中插入一個(gè)元素;另一個(gè)稱為出棧(pop),表示從棧中刪除一個(gè)元素。試圖對(duì)一個(gè)空棧執(zhí)行棧操作稱為下溢(underflow);試圖對(duì)一個(gè)滿棧執(zhí)行棧操作稱為溢出(overflow)。通常,溢出和下溢均認(rèn)為是異常;

棧的應(yīng)用

  • 無(wú)處不在的Undo操作(撤銷);
  • 程序調(diào)用的系統(tǒng)棧;
  • 括號(hào)/符號(hào)匹配;
  • 等等等等....

棧抽象數(shù)據(jù)類型

下面給出棧抽象數(shù)據(jù)類型中的操作,為了簡(jiǎn)單起見(jiàn),假設(shè)數(shù)據(jù)類型為整型;

棧的主要操作

  • void push(int data):將data(數(shù)據(jù))插入棧;
  • int pop():刪除并返回最后一個(gè)插入棧的元素;

棧的輔助操作

  • int top():返回最后一個(gè)插入棧的元素,但不刪除;
  • int size():返回存儲(chǔ)在棧中元素的個(gè)數(shù);
  • int isEmpty():判斷棧中是否有元素;
  • int isStackFull():判斷棧中是否存滿元素;

動(dòng)態(tài)數(shù)組簡(jiǎn)單實(shí)現(xiàn)棧結(jié)構(gòu)

我們結(jié)合之前創(chuàng)建的Array類,我們能夠很好的創(chuàng)建屬于我們自己的動(dòng)態(tài)數(shù)組實(shí)現(xiàn)的棧結(jié)構(gòu),對(duì)于用戶來(lái)說(shuō),我們只需要完成我們的相關(guān)操作,并且知道我能夠不斷地往里添加元素而不出錯(cuò)就行了,所以我們先來(lái)定義一個(gè)通用的棧接口:

public interface Stack<E> {int getSize();boolean isEmepty();void push(E e);E pop();E top(); }

然后我們往之前的動(dòng)態(tài)數(shù)組中添加兩個(gè)用戶友好的方法:

public E getLast() {return get(size - 1); }public E getFirst() {return get(0); }

然后實(shí)現(xiàn)自己的動(dòng)態(tài)數(shù)組為底層的棧結(jié)構(gòu)就輕松多了:

public class ArrayStack<E> implements Stack<E> {Array<E> array;public ArrayStack(int capacity) {array = new Array<>(capacity);}public ArrayStack() {array = new Array<>();}@Overridepublic int getSize() {return array.getSize();}@Overridepublic boolean isEmepty() {return array.isEmpty();}public int getCapacity() {return array.getCapacity();}@Overridepublic void push(E e) {array.addLast(e);}@Overridepublic E pop() {return array.removeLast();}@Overridepublic E top() {return array.getLast();}@Overridepublic String toString() {StringBuilder res = new StringBuilder();res.append("Stack:");res.append("[");for (int i = 0; i < array.getSize(); i++) {res.append(array.get(i));if (i != array.getSize() - 1) {res.append(",");}}res.append("]");return res.toString();} }

簡(jiǎn)單復(fù)雜度分析

從代碼中可以看出,幾乎所有的時(shí)間復(fù)雜度都為O(1)級(jí)別,比較特別的是push()和pop()操作可能涉及到底層數(shù)組的擴(kuò)容或縮容的操作,所以是均攤下來(lái)的復(fù)雜度;


隊(duì)列

什么是隊(duì)列

隊(duì)列是一種用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(與鏈表和棧類似),數(shù)據(jù)到達(dá)的次序是隊(duì)列的關(guān)鍵;在日常生活中隊(duì)列是指從序列的開(kāi)始按照順序等待服務(wù)的一隊(duì)人或物;

定義:隊(duì)列是一種只能在一端插入(隊(duì)尾),在另一端刪除(隊(duì)首)的有序線性表。隊(duì)列中第一個(gè)插入的元素也是第一個(gè)被刪除的元素,所以隊(duì)列是一種先進(jìn)先出(FIFO,First In First Out)或后進(jìn)后出(LiLO,Last In Last Out)線性表;

與棧類似,兩個(gè)改變隊(duì)列的操作各有專用名稱;在隊(duì)列中插入一個(gè)元素,稱為入隊(duì)(EnQueue),從隊(duì)列中刪除一個(gè)元素,稱為出隊(duì)(DeQueue);試圖對(duì)一個(gè)空隊(duì)列執(zhí)行出隊(duì)操作稱為下溢(underflow),試圖對(duì)一個(gè)滿隊(duì)列執(zhí)行入隊(duì)操作稱為溢出(overflow);通常認(rèn)為溢出和下溢是異常。

隊(duì)列的一些應(yīng)用舉例

  • 操作系統(tǒng)根據(jù)(具有相同優(yōu)先級(jí)的)任務(wù)到達(dá)的順序調(diào)度任務(wù)(例如打印隊(duì)列);
  • 模擬現(xiàn)實(shí)世界中的隊(duì)列,如售票柜臺(tái)前的隊(duì)伍,或者任何需要先來(lái)先服務(wù)的場(chǎng)景;
  • 多道程序設(shè)計(jì);
  • 異步數(shù)據(jù)傳輸(文件輸入輸出、管道、套接字);
  • 等等等等...

動(dòng)態(tài)數(shù)組簡(jiǎn)單實(shí)現(xiàn)隊(duì)列結(jié)構(gòu)

我們?nèi)匀欢x一個(gè)Queue接口來(lái)說(shuō)明我們隊(duì)列中常用的一些方法:

public interface Queue<E> {int getSize();boolean isEmpty();void enqueue(E e);E dequeue();E getFront(); }

借由我們之前自己實(shí)現(xiàn)的動(dòng)態(tài)數(shù)組,那么我們的隊(duì)列就很簡(jiǎn)單了:

public class ArrayQueue<E> implements Queue<E> {private Array<E> array;public ArrayQueue(int capacity){array = new Array<>(capacity);}public ArrayQueue(){array = new Array<>();}@Overridepublic int getSize(){return array.getSize();}@Overridepublic boolean isEmpty(){return array.isEmpty();}public int getCapacity(){return array.getCapacity();}@Overridepublic void enqueue(E e){array.addLast(e);}@Overridepublic E dequeue(){return array.removeFirst();}@Overridepublic E getFront(){return array.getFirst();}@Overridepublic String toString(){StringBuilder res = new StringBuilder();res.append("Queue: ");res.append("front [");for(int i = 0 ; i < array.getSize() ; i ++){res.append(array.get(i));if(i != array.getSize() - 1)res.append(", ");}res.append("] tail");return res.toString();} }

簡(jiǎn)單的復(fù)雜度分析

  • void enquque(E):O(1)(均攤)
  • E dequeue():O(n)
  • E front():O(1)
  • int getSize():O(1)
  • boolean isEmpty():O(1)

實(shí)現(xiàn)自己的循環(huán)隊(duì)列

循環(huán)隊(duì)列的實(shí)現(xiàn)其實(shí)就是維護(hù)了一個(gè)front和一個(gè)tail分別指向頭和尾,然后需要特別注意的呢是判定隊(duì)滿和隊(duì)空的條件:

  • 隊(duì)空:front == tail,這沒(méi)啥好說(shuō)的;
  • 隊(duì)滿:tail + 1 == front,這里其實(shí)是有意浪費(fèi)了一個(gè)空間,不然就判定不了到底是隊(duì)空還是隊(duì)滿了,因?yàn)闂l件都一樣...
public class LoopQueue<E> implements Queue<E> {private E[] data;private int front, tail;private int size;public LoopQueue(int capacity){data = (E[])new Object[capacity + 1];front = 0;tail = 0;size = 0;}public LoopQueue(){this(10);}public int getCapacity(){return data.length - 1;}@Overridepublic boolean isEmpty(){return front == tail;}@Overridepublic int getSize(){return size;}@Overridepublic void enqueue(E e){if((tail + 1) % data.length == front)resize(getCapacity() * 2);data[tail] = e;tail = (tail + 1) % data.length;size ++;}@Overridepublic E dequeue(){if(isEmpty())throw new IllegalArgumentException("Cannot dequeue from an empty queue.");E ret = data[front];data[front] = null;front = (front + 1) % data.length;size --;if(size == getCapacity() / 4 && getCapacity() / 2 != 0)resize(getCapacity() / 2);return ret;}@Overridepublic E getFront(){if(isEmpty())throw new IllegalArgumentException("Queue is empty.");return data[front];}private void resize(int newCapacity){E[] newData = (E[])new Object[newCapacity + 1];for(int i = 0 ; i < size ; i ++)newData[i] = data[(i + front) % data.length];data = newData;front = 0;tail = size;}@Overridepublic String toString(){StringBuilder res = new StringBuilder();res.append(String.format("Queue: size = %d , capacity = %d\n", size, getCapacity()));res.append("front [");for(int i = front ; i != tail ; i = (i + 1) % data.length){res.append(data[i]);if((i + 1) % data.length != tail)res.append(", ");}res.append("] tail");return res.toString();} }

簡(jiǎn)單復(fù)雜度分析

  • void enquque(E):O(1)(均攤)
  • E dequeue():O(1)(均攤)
  • E front():O(1)
  • int getSize():O(1)
  • boolean isEmpty():O(1)

簡(jiǎn)單數(shù)組隊(duì)列和循環(huán)隊(duì)列的簡(jiǎn)單比較

我們來(lái)簡(jiǎn)單對(duì)比一下兩個(gè)隊(duì)列的性能吧,這里直接上代碼:

// 測(cè)試使用q運(yùn)行opCount個(gè)enqueueu和dequeue操作所需要的時(shí)間,單位:秒 private static double testQueue(Queue<Integer> q, int opCount){long startTime = System.nanoTime();Random random = new Random();for(int i = 0 ; i < opCount ; i ++)q.enqueue(random.nextInt(Integer.MAX_VALUE));for(int i = 0 ; i < opCount ; i ++)q.dequeue();long endTime = System.nanoTime();return (endTime - startTime) / 1000000000.0; }public static void main(String[] args) {int opCount = 100000;ArrayQueue<Integer> arrayQueue = new ArrayQueue<>();double time1 = testQueue(arrayQueue, opCount);System.out.println("ArrayQueue, time: " + time1 + " s");LoopQueue<Integer> loopQueue = new LoopQueue<>();double time2 = testQueue(loopQueue, opCount);System.out.println("LoopQueue, time: " + time2 + " s"); }

我這里的測(cè)試結(jié)果是這樣的,大家也就可見(jiàn)一斑啦:

其實(shí)ArrayQueue慢主要是因?yàn)槌鰲r(shí)每次都需要把整個(gè)結(jié)構(gòu)往前挪一下


LeetCode 相關(guān)題目整理

20.有效的括號(hào)

我的答案:(10ms)

public boolean isValid(String s) {// 正確性判斷if (null == s || s.length() == 1) {return false;}Stack<Character> stack = new Stack<>();// 遍歷輸入的字符for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);// 如果為左括號(hào)則push進(jìn)棧if (c == '(' || c == '[' || c == '{') {stack.push(c);} else {if (stack.isEmpty()) {return false;}char topChar = stack.pop();if (c == ')' && topChar != '(') {return false;}if (c == ']' && topChar != '[') {return false;}if (c == '}' && topChar != '{') {return false;}}}// 最后棧為空才能返回truereturn stack.isEmpty(); }

參考答案:(8ms)

public boolean isValid(String s) {// 正確性判斷if (0 == s.length()) {return true;}if (s.length() % 2 == 1) {return false;}Stack<Character> stack = new Stack();char[] cs = s.toCharArray();for (int i = 0; i < cs.length; i++) {if (cs[i] == '(' || cs[i] == '[' || cs[i] == '{') {stack.push(cs[i]);} else {if (stack.isEmpty()) {return false;}char c = stack.pop();if ((cs[i] == ')' && c == '(') || (cs[i] == '}' && c == '{') || (cs[i] == ']' && c == '[')) {} else {return false;}}}return stack.isEmpty(); }

155. 最小棧(劍指Offer面試題30)

參考答案(107ms)

class MinStack {// 數(shù)據(jù)棧,用于存放插入的數(shù)據(jù)private Stack<Integer> dataStack;// 最小數(shù)位置棧,存放數(shù)據(jù)棧中最小的數(shù)的位置private Stack<Integer> minStack;/*** initialize your data structure here.*/public MinStack() {this.dataStack = new Stack<>();this.minStack = new Stack<>();}/*** 元素入棧** @param x 入棧的元素*/public void push(int x) {dataStack.push(x);// 如果最小棧是空的,只要將元素入棧if (minStack.isEmpty()) {minStack.push(x);}// 如果最小棧中有數(shù)據(jù)else {minStack.push(Math.min(x, minStack.peek()));}}/*** 出棧方法*/public void pop() {// 如果棧已經(jīng)為空,則返回(LeetCode不能拋異常...)if (dataStack.isEmpty()) {return;}// 如果有數(shù)據(jù),最小數(shù)位置棧和數(shù)據(jù)棧必定是有相同的元素個(gè)數(shù),// 兩個(gè)棧同時(shí)出棧minStack.pop();dataStack.pop();}/*** 返回棧頂元素** @return 棧頂元素*/public int top() {return dataStack.peek();}/*** 獲取棧中的最小元素** @return 棧中的最小元素*/public int getMin() {// 如果最小數(shù)公位置棧已經(jīng)為空(數(shù)據(jù)棧中已經(jīng)沒(méi)有數(shù)據(jù)了),則拋出異常if (minStack.isEmpty()) {return 0;}// 獲取數(shù)據(jù)占中的最小元素,并且返回結(jié)果return minStack.peek();} }

改進(jìn)答案:

上面求解方法的主要問(wèn)題在于,每次push操作時(shí),minStack也執(zhí)行了一次push操作(新元素或當(dāng)前的最小元素),也就是說(shuō),重復(fù)執(zhí)行了最小值的入棧操作,所以現(xiàn)在我們來(lái)修改算法降低空間復(fù)雜度。仍然需要設(shè)置一個(gè)minStack,但是只有當(dāng)從dataStack中出棧的元素等于minStack棧頂元素時(shí),才對(duì)minStack執(zhí)行出棧的操作;也只有當(dāng)dataStack入棧的元素小于或等于當(dāng)前最小值時(shí),才對(duì)minStack執(zhí)行入棧操作,下面就簡(jiǎn)單寫(xiě)一下了主要看一下出棧和入棧實(shí)現(xiàn)的邏輯就好了:

class MinStack {private Stack<Integer> dataStack;private Stack<Integer> minStack;public MinStack() {this.dataStack = new Stack<>();this.minStack = new Stack<>();}public void push(int x) {dataStack.push(x);if (minStack.isEmpty() || minStack.peek() >= (Integer) x) {minStack.push(x);}}public void pop() {if (dataStack.isEmpty()) {return;}Integer minTop = minStack.peek();Integer dataTop = dataStack.peek();if (minTop.intValue() == dataTop.intValue()) {minStack.pop();}dataStack.pop();}public int top() {return dataStack.peek();}public int getMin() {return minStack.peek();} }

225. 用隊(duì)列實(shí)現(xiàn)棧

我的答案:(118ms)

class MyStack {private Queue<Integer> queue1;private Queue<Integer> queue2;/*** Initialize your data structure here.*/public MyStack() {queue1 = new LinkedList<>();queue2 = new LinkedList<>();}/*** Push element x onto stack.*/public void push(int x) {if (queue1.isEmpty()) {queue2.offer(x);} else {queue1.offer(x);}}/*** Removes the element on top of the stack and returns that element.*/public int pop() {int size;if (!queue1.isEmpty()) {size = queue1.size();for (int i = 0; i < size - 1; i++) {queue2.offer(queue1.poll());}return queue1.poll();} else {size = queue2.size();for (int i = 0; i < size - 1; i++) {queue1.offer(queue2.poll());}return queue2.poll();}}/*** Get the top element.*/public int top() {int size;if (!queue1.isEmpty()) {size = queue1.size();for (int i = 0; i < size - 1; i++) {queue2.offer(queue1.poll());}int result = queue1.peek();queue2.offer(queue1.poll());return result;} else {size = queue2.size();for (int i = 0; i < size - 1; i++) {queue1.offer(queue2.poll());}int result = queue2.peek();queue1.offer(queue2.poll());return result;}}/*** Returns whether the stack is empty.*/public boolean empty() {return queue1.isEmpty() && queue2.isEmpty();} }

參考答案:(121ms)

class MyStack {Queue<Integer> q;/*** Initialize your data structure here.*/public MyStack() {this.q = new LinkedList<Integer>();}/*** Push element x onto stack.*/public void push(int x) {q.add(x);}/*** Removes the element on top of the stack and returns that element.*/public int pop() {int size = q.size();for (int i = 0; i < size - 1; i++) {q.add(q.remove());}return q.remove();}/*** Get the top element.*/public int top() {int size = q.size();for (int i = 0; i < size - 1; i++) {q.add(q.remove());}int ret = q.remove();q.add(ret);return ret;}/*** Returns whether the stack is empty.*/public boolean empty() {return q.isEmpty();} }

確實(shí)寫(xiě)得簡(jiǎn)潔啊,這樣一來(lái)我就使用一個(gè)隊(duì)列和兩個(gè)隊(duì)列都掌握啦,開(kāi)心~

232.用棧實(shí)現(xiàn)隊(duì)列(劍指Offer面試題9)

參考答案:(72ms)

class MyQueue {Stack<Integer> pushstack;Stack<Integer> popstack;/*** Initialize your data structure here.*/public MyQueue() {this.pushstack = new Stack();this.popstack = new Stack();}/*** Push element x to the back of queue.*/public void push(int x) {pushstack.push(x);}/*** Removes the element from in front of queue and returns that element.*/public int pop() {if (popstack.isEmpty()) {while (!pushstack.isEmpty()) {popstack.push(pushstack.pop());}}return popstack.pop();}/*** Get the front element.*/public int peek() {if (popstack.isEmpty()) {while (!pushstack.isEmpty()) {popstack.push(pushstack.pop());}}return popstack.peek();}/*** Returns whether the queue is empty.*/public boolean empty() {return pushstack.isEmpty() && popstack.isEmpty();} }

其他題目整理

劍指Offer面試題31:棧的壓入、彈出序列

題目:輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如,序列{1,2,3,4,5}是某棧的壓棧序列,序列{4,5,3,2,1}是該壓棧序列對(duì)應(yīng)的一個(gè)彈出序列,但{4,3,5,1,2}就不可能是該壓棧序列的彈出序列。

參考答案:(原文鏈接:https://blog.csdn.net/derrantcm/article/details/46691083)

public class Test22 {/*** 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷二個(gè)序列是否為該棧的彈出順序。* 假設(shè)壓入棧的所有數(shù)字均不相等。例如序列1 、2、3 、4、5 是某棧壓棧序列,* 序列4、5、3、2、1是該壓棧序列對(duì)應(yīng)的一個(gè)彈出序列,* 但4、3、5、1、2就不可能是該壓棋序列的彈出序列。* 【與書(shū)本的的方法不同】** @param push 入棧序列* @param pop 出棧序列* @return true:出棧序列是入棧序列的一個(gè)彈出順序*/public static boolean isPopOrder(int[] push, int[] pop) {// 輸入校驗(yàn),參數(shù)不能為空,并且兩個(gè)數(shù)組中必須有數(shù)字,并且兩個(gè)數(shù)組中的數(shù)字個(gè)數(shù)相同// 否則返回falseif (push == null || pop == null || pop.length == 0 || push.length == 0 || push.length != pop.length) {return false;}// 經(jīng)過(guò)上面的參數(shù)校驗(yàn),兩個(gè)數(shù)組中一定有數(shù)據(jù),且數(shù)據(jù)數(shù)目相等// 用于存放入棧時(shí)的數(shù)據(jù)Stack<Integer> stack = new Stack<>();// 用于記錄入棧數(shù)組元素的處理位置int pushIndex = 0;// 用于記錄出棧數(shù)組元素的處理位置int popIndex = 0;// 如果還有出棧元素要處理while (popIndex < pop.length) {// 入棧元素還未全部入棧的條件下,如果棧為空,或者棧頂?shù)脑夭慌c當(dāng)前處理的相等,則一直進(jìn)行棧操作,// 直到入棧元素全部入?;蛘哒业搅艘粋€(gè)與當(dāng)出棧元素相等的元素while (pushIndex < push.length && (stack.isEmpty() || stack.peek() != pop[popIndex])) {// 入棧數(shù)組中的元素入棧stack.push(push[pushIndex]);// 指向下一個(gè)要處理的入棧元素pushIndex++;}// 如果在上一步的入棧過(guò)程中找到了與出棧的元素相等的元素if (stack.peek() == pop[popIndex]) {// 將元素出棧stack.pop();// 處理下一個(gè)出棧元素popIndex++;}// 如果沒(méi)有找到與出棧元素相等的元素,說(shuō)明這個(gè)出棧順序是不合法的// 就返回falseelse {return false;}}// 下面的語(yǔ)句總是成立的// return stack.isEmpty();// 為什么可以直接返回true:對(duì)上面的外層while進(jìn)行分析可知道,對(duì)每一個(gè)入棧的元素,// 在stack棧中,通過(guò)一些入棧操作,總可以在棧頂上找到與入棧元素值相同的元素,// 這就說(shuō)明了這個(gè)出棧的順序是入棧順序的一個(gè)彈出隊(duì)列,這也可以解釋為什么stack.isEmpty()// 總是返回true,所有的入棧元素都可以進(jìn)棧,并且可以被匹配到,之后就彈出,最后棧中就無(wú)元素。return true;}/*** 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷二個(gè)序列是否為該棧的彈出順序。* 【按書(shū)本上的思路進(jìn)行求解,兩者相差不大】** @param push 入棧序列* @param pop 出棧序列* @return true:出棧序列是入棧序列的一個(gè)彈出順序*/public static boolean isPopOrder2(int[] push, int[] pop) {// 用于記錄判斷出棧順序是不是入棧順的一個(gè)出棧序列,默認(rèn)falseboolean isPossible = false;// 當(dāng)入棧和出棧數(shù)組者都不為空,并且都有數(shù)據(jù),并且數(shù)據(jù)個(gè)數(shù)都相等if (push != null && pop != null && push.length > 0 && push.length == pop.length) {// 用于存放入棧時(shí)的數(shù)據(jù)Stack<Integer> stack = new Stack<>();// 記錄下一個(gè)要處理的入棧元素的位置int nextPush = 0;// 記錄下一個(gè)要處理的出棧元素的位置int nextPop = 0;// 如果出棧元素沒(méi)有處理完就繼續(xù)進(jìn)行處理while (nextPop < pop.length) {// 如果棧為空或者棧頂?shù)脑嘏c當(dāng)前處理的出棧元素不相同,一直進(jìn)行操作while (stack.isEmpty() || stack.peek() != pop[nextPop]) {// 如果入棧的元素已經(jīng)全部入棧了,就退出內(nèi)層循環(huán)if (nextPush >= push.length) {break;}// 執(zhí)行到此處說(shuō)明還有入棧元素可以入棧// 即將元素入棧stack.push(push[nextPush]);// 指向下一個(gè)要處理的入棧元素的位置nextPush++;}// 執(zhí)行到此處有兩種情況:// 第一種:在棧頂上找到了一個(gè)與入棧元素相等的元素// 第二種:在棧頂上沒(méi)有找到一個(gè)與入棧元素相等的元素,而且輸入棧的元素已經(jīng)全部入棧了// 對(duì)于第二種情況就說(shuō)彈出棧的順序是不符合要求的,退出外層循環(huán)if (stack.peek() != pop[nextPop]) {break;}// 對(duì)應(yīng)到第一種情況:需要要棧的棧頂元素彈出stack.pop();// 指向下一個(gè)要處理的出棧元素的位置nextPop++;}// 執(zhí)行到此處有兩種情況// 第一種:外層while循環(huán)的在第一種情況下退出,// 第二種:所有的出棧元素都被正確匹配// 對(duì)于出現(xiàn)的第一種情況其stack.isEmpty()必不為空,原因?yàn)榉治鋈缦?#xff1a;// 所有的入棧元素一定會(huì)入棧,但是只有匹配的情況下才會(huì)出棧,// 匹配的次數(shù)最多與入棧元素個(gè)數(shù)元素相同(兩個(gè)數(shù)組的長(zhǎng)度相等),如果有不匹配的元素,// 必然會(huì)使出棧的次數(shù)比入棧的次數(shù)少,這樣棧中至少會(huì)有一個(gè)元素// 對(duì)于第二種情況其stack.isEmpty()一定為空// 所以書(shū)本上的nextPop == pop.length(pNextPop-pPop==nLength)是多余的if (stack.isEmpty()) {isPossible = true;}}return isPossible;}public static void main(String[] args) {int[] push = {1, 2, 3, 4, 5};int[] pop1 = {4, 5, 3, 2, 1};int[] pop2 = {3, 5, 4, 2, 1};int[] pop3 = {4, 3, 5, 1, 2};int[] pop4 = {3, 5, 4, 1, 2};System.out.println("true: " + isPopOrder(push, pop1));System.out.println("true: " + isPopOrder(push, pop2));System.out.println("false: " + isPopOrder(push, pop3));System.out.println("false: " + isPopOrder(push, pop4));int[] push5 = {1};int[] pop5 = {2};System.out.println("false: " + isPopOrder(push5, pop5));int[] push6 = {1};int[] pop6 = {1};System.out.println("true: " + isPopOrder(push6, pop6));System.out.println("false: " + isPopOrder(null, null));// 測(cè)試方法2System.out.println();System.out.println("true: " + isPopOrder2(push, pop1));System.out.println("true: " + isPopOrder2(push, pop2));System.out.println("false: " + isPopOrder2(push, pop3));System.out.println("false: " + isPopOrder2(push, pop4));System.out.println("false: " + isPopOrder2(push5, pop5));System.out.println("true: " + isPopOrder2(push6, pop6));System.out.println("false: " + isPopOrder2(null, null));} }

簡(jiǎn)單總結(jié)

棧和隊(duì)列的應(yīng)用遠(yuǎn)不止上面學(xué)習(xí)到的那些,實(shí)現(xiàn)方式也有很多種,現(xiàn)在也只是暫時(shí)學(xué)到這里,通過(guò)刷LeetCode也加深了我對(duì)于這兩種數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí),不過(guò)自己還需要去熟悉了解一下計(jì)算機(jī)系統(tǒng)關(guān)于棧的應(yīng)用這方面的知識(shí),因?yàn)闂_@種結(jié)構(gòu)本身就很適合用來(lái)保存CPU現(xiàn)場(chǎng)之類的工作,還是抓緊時(shí)間吧,過(guò)兩天還考試,這兩天就先復(fù)習(xí)啦...

歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處!
簡(jiǎn)書(shū)ID:@我沒(méi)有三顆心臟
github:wmyskxz

總結(jié)

以上是生活随笔為你收集整理的数据结构与算法(2)——栈和队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

91精品视频在线看 | 麻豆久久 | 探花视频在线观看 | 亚洲精品高清一区二区三区四区 | 91视频麻豆视频 | 久久精品中文字幕少妇 | 麻豆小视频在线观看 | 亚洲精品视频网站在线观看 | 福利二区视频 | 在线久久| 17婷婷久久www | 激情综合色播五月 | 天天爽天天射 | 一本一本久久a久久 | 国产午夜av| 成人av免费网站 | 精品亚洲一区二区 | 黄色网在线播放 | 中文字幕资源网在线观看 | 91香蕉视频黄色 | 欧美成人黄色片 | 人人干免费 | 久久精品国产免费看久久精品 | 国产视频一二区 | 成人免费在线网 | 97精品国产91久久久久久 | 日韩大片在线免费观看 | 欧美日韩高清一区二区 | 视频在线观看入口黄最新永久免费国产 | 不卡的av电影在线观看 | 日韩网站视频 | 免费日韩av电影 | 国产午夜精品在线 | 国产一区在线免费观看视频 | 狠狠操91| 欧美久久久久久久久久久久 | 992tv人人草 黄色国产区 | 91伊人久久大香线蕉蜜芽人口 | 黄av免费在线观看 | 国产精品久久久久久久久久东京 | 久久午夜免费视频 | 日日操日日干 | 韩国视频一区二区三区 | 在线免费高清一区二区三区 | 特级西西人体444是什么意思 | 91九色网站| 丁香九月激情综合 | 久草在线免费新视频 | 狠狠操狠狠干天天操 | 韩国精品一区二区三区六区色诱 | 在线观看视频h | 国产精品毛片一区视频 | 91av原创 | 久久久久免费看 | 成人毛片网 | 久久99久久精品国产 | 欧美激情亚洲综合 | 国产中文 | 亚洲一区精品二人人爽久久 | 中文字幕国产一区二区 | 成人在线观看资源 | 亚洲国产激情 | 在线性视频日韩欧美 | 青青久草在线视频 | 五月天亚洲婷婷 | 久久激情日本aⅴ | 三级黄色免费片 | 久久久亚洲麻豆日韩精品一区三区 | 免费欧美精品 | 久久99精品久久久久婷婷 | 国产一级片免费视频 | 日韩欧美在线不卡 | 日韩美av在线| 国产精品99久久久久久小说 | 久久综合九色综合欧美狠狠 | 国产精品久久久久久久久久久久午夜片 | 午夜av大片 | 亚洲欧美激情精品一区二区 | 99精品国产一区二区三区麻豆 | 成人av电影在线播放 | 久久久免费在线观看 | 九九九在线观看视频 | 人人爱人人添 | 色中射| 日韩免费一级a毛片在线播放一级 | 91最新地址永久入口 | 国产亚洲情侣一区二区无 | 日本黄色黄网站 | 国产成人精品一区一区一区 | 亚洲欧美精品一区 | av一区在线 | 日韩电影在线视频 | 国产精品亚州 | 国产偷v国产偷∨精品视频 在线草 | 久久久精品久久日韩一区综合 | 日韩一区二区久久 | av看片网| av免费在线免费观看 | 久久视频精品在线 | 青青视频一区 | 欧美精品在线一区二区 | 激情中文在线 | 玖玖玖精品 | 久久精品96 | 日日夜夜免费精品视频 | 成年人在线电影 | 丁香av | 日韩欧美久久 | 日韩精品国产一区 | 久久精品视频在线免费观看 | 亚洲人av免费网站 | 久久精品视频播放 | 91精品一区二区三区久久久久久 | 亚洲人成人在线 | 国内视频在线 | 一区二区三区四区精品视频 | 亚洲精品免费观看视频 | 亚洲经典中文字幕 | 国产黄色片一级三级 | 精品久久国产精品 | 一区二区视频播放 | 狠狠色丁香久久婷婷综合丁香 | 日韩激情视频在线观看 | 521色香蕉网站在线观看 | 久久成人国产精品一区二区 | 91大神在线观看视频 | 日本精品一 | 欧美日韩三级在线观看 | 中文字幕一区二区三区在线视频 | 亚洲片在线 | 91精品日韩 | 综合网伊人 | 久久久福利视频 | 欧美在线观看视频一区二区三区 | 91热在线 | 人人干在线观看 | 黄色日本片 | 日韩av在线资源 | 在线观看黄 | 国产一区视频在线观看免费 | 91麻豆精品国产91久久久久久久久 | 亚洲一区天堂 | 免费av成人在线 | 中文字幕在线不卡国产视频 | 五月天婷婷在线播放 | 黄色成人91 | 91免费在线 | 伊香蕉大综综综合久久啪 | 久草在线视频免赞 | 成人wwwxxx视频 | 久久久国产精品久久久 | 日韩欧美一区视频 | 成人蜜桃视频 | av电影中文字幕在线观看 | 国产高清视频在线免费观看 | 天天干天天干天天干天天干天天干天天干 | 婷婷伊人综合亚洲综合网 | 久久91网| 五月激情天 | 日韩激情视频在线观看 | 九九九热精品 | 黄av免费| av不卡网站 | 日日碰狠狠添天天爽超碰97久久 | 日日摸日日添日日躁av | 麻豆国产视频下载 | 日韩在线观看的 | 在线日韩视频 | 国产九九热视频 | 一级片视频在线 | 久久婷婷一区二区三区 | 国产成人a亚洲精品v | 午夜精品久久久久久久99 | 毛片久久久 | 国外成人在线视频网站 | 亚洲在线视频观看 | 国内小视频 | 美女视频黄免费的久久 | 国产无套一区二区三区久久 | 西西4444www大胆无视频 | 国产精品一区二区在线播放 | 日韩色视频在线观看 | 日韩在线视频线视频免费网站 | 碰天天操天天 | 黄色看片 | 国产一二三在线视频 | 午夜视频99| 久久这里有精品 | 香蕉在线观看视频 | 四虎伊人 | 91网免费观看 | 欧美日韩调教 | 免费又黄又爽的视频 | 美女视频是黄的免费观看 | 91看片淫黄大片一级在线观看 | 日韩久久电影 | 91爱爱视频| 亚洲精品国产麻豆 | 毛片在线网| 夜夜摸夜夜爽 | 在线国产小视频 | 国产精品99在线播放 | 成人动漫一区二区三区 | 中文字幕黄网 | 国产亚州精品视频 | 久草综合在线 | 国产免费人成xvideos视频 | av电影在线免费观看 | 男女全黄一级一级高潮免费看 | 91丨九色丨首页 | 亚洲在线| .国产精品成人自产拍在线观看6 | 国产一级免费电影 | 日韩二区精品 | 成人午夜网址 | 精品一区三区 | 国产在线不卡视频 | 美女免费视频一区 | 99热精品免费观看 | av中文字幕第一页 | 91av综合 | 色网站黄| 91最新视频 | 香蕉97视频观看在线观看 | 日韩在线精品 | 日韩欧美在线免费观看 | 日韩高清免费电影 | www.久久色.com | 手机看片午夜 | 日日干天天操 | 成人毛片在线观看视频 | 免费在线日韩 | 久久久亚洲影院 | 一级做a爱片性色毛片www | 在线观看不卡的av | 天堂视频中文在线 | 天天操天天射天天操 | 中日韩欧美精彩视频 | 精品久久久久久国产 | 极品久久久久久久 | 日日爱av| 在线视频一区二区 | 欧美激情视频一二区 | 婷婷在线综合 | 国产中文在线字幕 | 97视频免费在线 | 日韩精品久久一区二区三区 | 九九九视频在线 | 国产高清视频在线观看 | 久久精品这里热有精品 | 九九热国产 | 午夜精品一区二区三区免费视频 | 国产在线免费 | 天天操夜夜操天天射 | 国内三级在线 | 五月婷婷开心 | 日日操网站 | 国产精品久久久久久久久久白浆 | 成人在线视频观看 | 久久九九免费视频 | 精品免费久久久久久 | 国产精品永久免费 | 特级aaa毛片 | 国产精品久久久久久久久久久久久 | 国产精品成人品 | 久久99热国产 | 国产只有精品 | 亚洲女在线 | 探花在线观看 | 精品a级片| av经典在线| 人人搞人人干 | 国产精品日韩久久久久 | 午夜视频在线观看一区二区三区 | 米奇影视7777 | 中文视频一区二区 | 91在线视频免费观看 | 久久免费中文视频 | 久久人人爽人人片 | 久久综合9988久久爱 | 97电影网站 | 婷婷电影在线观看 | 果冻av在线 | av电影不卡 | 欧美日本一二三 | 三级黄色片在线观看 | 欧美乱码精品一区二区 | 精品美女在线视频 | 国产不卡精品 | 欧美一区二区三区不卡 | 久草视频播放 | 日本在线免费看 | 久久一精品| 2021国产精品 | 日韩在线电影一区二区 | 中文永久字幕 | 欧美性大战 | 国产亚洲精品久久久久久久久久久久 | 精品你懂的 | 美女视频黄频大全免费 | 免费高清av在线看 | 日日爱夜夜爱 | 精品福利视频在线观看 | 亚洲男人天堂a | 美女国内精品自产拍在线播放 | 久日精品 | 亚洲精品中文字幕视频 | 国产一级片一区二区三区 | 色香网| 99精品视频中文字幕 | 成人午夜剧场在线观看 | 免费网址在线播放 | 最新av在线播放 | av中文字幕在线观看网站 | 干干夜夜 | 亚洲精品免费观看视频 | 免费观看成人av | 亚洲 欧美变态 另类 综合 | 五月婷婷视频在线观看 | 国产精品观看在线亚洲人成网 | 2024国产精品视频 | 久久激情久久 | 日韩午夜视频在线观看 | av黄色在线| 日韩欧美电影在线 | 国产精品一区二区果冻传媒 | 色综合天天色综合 | 亚洲精品国产欧美在线观看 | 国产乱视频 | 午夜精品久久久久久久久久 | 国产在线小视频 | 一级片视频免费观看 | 91精品国产92久久久久 | 国产亚洲精品福利 | 在线观看中文字幕2021 | 91高清在线 | 日韩av在线免费看 | 久久久久久久久久伊人 | 99精品国产一区二区三区不卡 | 91视频午夜 | 蜜桃av综合网 | 国产女v资源在线观看 | 日韩欧美专区 | 亚洲国产成人精品电影在线观看 | 黄色大片国产 | 美女视频黄色免费 | 777xxx欧美 | 国产伦精品一区二区三区照片91 | 国产啊v在线观看 | 欧美精品视 | 国产福利一区二区在线 | 午夜私人影院 | 在线视频 区| 18女毛片 | 韩国av不卡| 天天色婷婷 | 亚洲在线精品 | 国产精品中文字幕在线 | 在线看的av网站 | 精品久久久久久亚洲综合网站 | 在线99视频 | 操久久网 | 日韩中文字幕免费视频 | 99久免费精品视频在线观看 | 最新影院| 久久a热6 | 久久久久久久免费看 | 91超级碰 | 久久久久久网址 | 激情欧美一区二区三区 | 99re8这里有精品热视频免费 | 国产原创在线视频 | 国产第一福利网 | 米奇四色影视 | 亚洲成av片人久久久 | av丝袜在线 | 日本视频不卡 | 香蕉视频国产在线观看 | 国产专区免费 | 2023国产精品自产拍在线观看 | 亚洲精选在线观看 | 天天操天天摸天天爽 | 免费激情在线电影 | 最近免费观看的电影完整版 | 亚洲影院色 | 国产精品久久在线观看 | 九九九九色 | 日本黄色黄网站 | 91理论片午午伦夜理片久久 | 在线有码中文字幕 | 亚洲最大av网站 | 国产激情久久久 | 夜夜操天天| 国产亚州精品视频 | 伊人精品在线 | 日韩中文字幕免费在线观看 | 久久在线免费观看视频 | 成人国产电影在线观看 | 国产一级一片免费播放放 | 91精品久久久久久综合乱菊 | 在线黄色免费 | 亚洲午夜久久久久久久久久久 | 综合国产视频 | 久艹视频在线观看 | 国产精品剧情 | 亚洲欧洲一区二区在线观看 | 在线不卡视频 | 九九免费在线观看 | 成人久久久精品国产乱码一区二区 | 亚洲精品久久激情国产片 | 国产性天天综合网 | 国产小视频在线观看免费 | 综合在线色 | 亚洲国产中文在线 | 色婷婷成人网 | 超碰在线公开免费 | 亚洲激情在线播放 | 欧美在线你懂的 | 欧美日韩高清一区 | 国产精品高潮久久av | 天天综合网在线观看 | 999久久久免费精品国产 | 久久婷婷国产色一区二区三区 | 久久久久久久久久久久99 | 999久久久久久久久久久 | 四虎影视成人精品国库在线观看 | 成人三级av | 最近中文字幕高清字幕免费mv | 亚洲电影第一页av | 久久精品这里热有精品 | 一区二区三区在线观看 | 欧美激情第八页 | 欧洲成人av| 91久久精品日日躁夜夜躁国产 | 中文字幕视频观看 | 中文字幕在线免费看 | 天堂va欧美va亚洲va老司机 | 一区二区三区中文字幕在线观看 | 亚洲午夜不卡 | 在线不卡中文字幕播放 | 国产精品精品久久久 | 久久免费视频在线观看30 | 91亚洲精品国偷拍自产在线观看 | 99精品视频一区二区 | 免费色网站 | 久草在线视频首页 | 在线观看免费高清视频大全追剧 | 国产不卡av在线 | 波多野结衣精品视频 | 在线视频 日韩 | 天天摸夜夜操 | 国产美女免费视频 | 97成人精品视频在线观看 | 日韩免费一级a毛片在线播放一级 | 草久电影 | 国产一区二区三区免费在线 | 亚洲成av人片一区二区梦乃 | 亚洲丝袜一区二区 | a√资源在线 | 国产精品一区二区 91 | 久久草精品 | 三级黄在线 | 韩国av电影在线观看 | 色五婷婷| av黄色在线观看 | av黄色av| 日本丶国产丶欧美色综合 | 国产精品亚洲a | 日本爱爱片 | 97国产情侣爱久久免费观看 | 黄p在线播放 | 五月婷婷开心中文字幕 | 免费看片网站91 | 99精品视频在线免费观看 | 国产亚洲亚洲 | 天天插综合 | 国产精品成 | 精品福利在线观看 | 999成人网| 免费看污在线观看 | 国产精品久久久久一区 | 国产理论片在线观看 | av高清一区 | 99久高清在线观看视频99精品热在线观看视频 | 国产一区在线观看免费 | 国产精品亚洲片在线播放 | 人人射人人爱 | 精品女同一区二区三区在线观看 | av怡红院| 久久人人爽人人爽人人片 | 香蕉网在线播放 | 国产a级免费 | 国产免码va在线观看免费 | 中文av字幕在线观看 | 免费看色网站 | 国产女人40精品一区毛片视频 | 国产精品不卡av | 91视频免费视频 | 亚洲欧洲精品一区二区 | 欧美日韩免费一区 | 亚洲高清91| 97成人免费视频 | 亚洲黄色激情小说 | 91精品啪在线观看国产 | av在线播放快速免费阴 | 91少妇精拍在线播放 | 久久婷婷综合激情 | 在线观看电影av | 91在线porny国产在线看 | 亚洲视频456 | 麻豆视频网址 | 日韩一区视频在线 | 欧美伊人网 | 亚洲成人av片在线观看 | 九九热国产视频 | 久久国产精品99久久久久久进口 | 国产一二区免费视频 | 免费在线国产精品 | 国产亚洲精品久久久久动 | 亚洲三级在线播放 | 蜜臀av性久久久久av蜜臀三区 | 久久国产精品一区二区 | 日本公妇在线观看高清 | 欧美孕交vivoestv另类 | 一级黄色免费网站 | 欧美 日韩 国产 成人 在线 | 久久久午夜精品理论片中文字幕 | 久久影院午夜论 | 伊人中文在线 | 国产综合在线观看视频 | 色婷婷国产| 国产精品久久久久久久久久ktv | 热re99久久精品国产66热 | 四川妇女搡bbbb搡bbbb搡 | 天天爱天天操天天干 | 亚洲高清在线观看视频 | 亚洲成色 | 国产爽视频| 婷婷丁香色| 久久久久北条麻妃免费看 | av黄色国产 | 香蕉网站在线观看 | 久艹视频在线免费观看 | 中文国产成人精品久久一 | 国产精品永久免费 | 久久久在线免费观看 | 一区二区三区电影 | 久草在线综合网 | 亚洲视频高清 | 国产伦精品一区二区三区照片91 | 一区久久久| 五月天久久 | 亚洲精品色视频 | 久久综合九色九九 | 免费成人结看片 | 国产免费观看视频 | 毛片在线网 | 日韩va欧美va亚洲va久久 | 色欧美综合 | 久久国产精品精品国产色婷婷 | 久久久久久网址 | 蜜臀一区二区三区精品免费视频 | 久久久官网 | 国产精品精品久久久久久 | 日日操天天操狠狠操 | 最新国产精品拍自在线播放 | 久久91久久久久麻豆精品 | 青青草国产在线 | 一区二区三区四区五区在线视频 | 日本少妇高清做爰视频 | 国产在线观看中文字幕 | 日一日操一操 | 青青河边草免费观看完整版高清 | 国产九九热视频 | 国产亚洲成av片在线观看 | 久久精品视 | 在线性视频日韩欧美 | 色www精品视频在线观看 | 92中文资源在线 | 婷婷综合网| 国内偷拍精品视频 | 国产精品国产三级国产aⅴ入口 | 国产小视频在线观看 | 欧美韩国日本在线 | 中文字幕国内精品 | 男女啪啪网站 | 久久婷婷一区二区三区 | 国产精品一级在线 | 成人免费xyz网站 | 亚洲成人免费 | 欧美一级片免费 | 成人一级免费电影 | 午夜成人影视 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 欧美日韩国产精品一区 | 麻豆国产精品永久免费视频 | 日韩欧美视频一区 | 久久久国产影院 | 亚洲japanese制服美女 | 久草观看 | 国产91精品久久久久 | 精品影院一区二区久久久 | av成人免费在线 | 国产在线观看不卡 | 国产精品中文字幕在线播放 | 国产精品自产拍在线观看桃花 | 天天操网址 | 国产一级久久久 | www.久久91 | 福利视频区 | 午夜精品一区二区三区四区 | 97福利社 | 国内久久 | 精品视频久久久久久 | 99热国内精品| 国产91成人在在线播放 | 一区二区视频电影在线观看 | 精品国产aⅴ麻豆 | 久久久久久国产精品美女 | 久久久五月天 | 国产又粗又硬又长又爽的视频 | 中文字幕丝袜制服 | 色婷婷导航 | 99久久99久久免费精品蜜臀 | 久久精品一区二区三区视频 | 午夜黄色大片 | 久久影视精品 | 高清av中文字幕 | 99在线播放 | 亚洲国产精品资源 | av中文资源在线 | 狠狠色综合欧美激情 | 国产一级a毛片视频爆浆 | 色七七亚洲影院 | 亚洲免费在线视频 | 国产精品成人免费 | 永久免费毛片 | 91九色成人 | 久久久久久国产精品 | 久久综合加勒比 | 综合网av | 最新国产福利 | 免费看的国产视频网站 | 国产高清在线观看 | 免费在线国产视频 | 日韩视频免费播放 | 欧美另类高潮 | www.av小说| 综合久久久久久久 | 最近中文字幕免费观看 | 成年人电影免费看 | 91传媒免费在线观看 | 日韩av免费一区二区 | 国产小视频在线 | 久久久这里有精品 | 天天干天天射天天操 | 日韩亚洲国产中文字幕 | 久久天天操 | 欧美精品乱码久久久久 | 99精品一区 | 久久久久久久免费观看 | 天天夜操 | 中文字幕刺激在线 | 色综合久久网 | 亚洲精品黄色在线观看 | 天天操天天艹 | 免费黄a | 国产一级二级在线播放 | 天天综合视频在线观看 | www.在线看片.com | 日日夜夜操av | 日韩在线观看视频免费 | 色91av | 福利精品在线 | 美女免费视频一区 | 青青看片 | 69xxxx欧美 | 久久精品亚洲综合专区 | av在线看片 | 久久a热6 | 香蕉视频国产在线 | 激情五月看片 | 综合久久久久久久 | 久久久久久在线观看 | 成人黄色电影在线 | 久久国内精品视频 | 久久精品爱视频 | av国产在线观看 | 探花视频在线观看免费版 | 亚洲91在线| 国产无遮挡猛进猛出免费软件 | 九九热1 | 日韩精品第一区 | 精品久久久久久久久久 | 伊人影院在线观看 | 精品视频免费 | 国产小视频在线看 | 久久综合成人网 | 久久久免费网站 | 国产精品中文久久久久久久 | 亚洲 中文 在线 精品 | 天天插天天干天天操 | 香蕉久久久久久av成人 | 日本精品视频免费 | 草久视频在线 | 日韩av不卡在线 | 91在线超碰 | 久久中文字幕视频 | 国产精品99在线播放 | 免费观看91视频大全 | 国产黄色观看 | 在线观看免费成人 | 国产无套精品久久久久久 | 精品国产自在精品国产精野外直播 | 日韩欧美精品在线观看 | 四虎最新入口 | 午夜精品电影一区二区在线 | 一性一交视频 | 欧美日韩一区二区在线观看 | 成人一级电影在线观看 | 午夜精品久久久久久久久久 | 久久字幕网 | 久久不卡电影 | 国产又粗又猛又黄又爽 | 亚洲国产美女精品久久久久∴ | 亚洲精品tv久久久久久久久久 | 久久精品亚洲一区二区三区观看模式 | 精品久久久久_ | 久久久久久久国产精品影院 | 在线99 | 日韩精品在线免费观看 | 国产激情电影综合在线看 | 五月天久久久 | 国产精品毛片久久久 | 最新高清无码专区 | 久久午夜精品 | 97在线视频免费看 | 黄色午夜 | 亚洲美女精品 | 久久久久久久av麻豆果冻 | 在线精品国产 | 日韩电影在线一区 | 国产视频在线免费 | 中文字幕在线观看完整版电影 | 色偷偷888欧美精品久久久 | 五月婷婷综合在线 | 国产一线二线三线在线观看 | 麻豆视频免费播放 | 碰超在线 | 国产极品尤物在线 | 日韩精品一区二区三区丰满 | 在线免费观看麻豆视频 | 国产成人一区二区三区影院在线 | 免费观看的av | 日韩av成人免费看 | 91最新在线观看 | 毛片基地黄久久久久久天堂 | 在线国产观看 | 夜夜骑天天操 | 天天天干 | 久久国产手机看片 | 天天爱天天操天天干 | 成人免费中文字幕 | 国产精品视频最多的网站 | 色视频网站在线观看一=区 a视频免费在线观看 | 国产精品久久久久久久av电影 | 一级欧美黄 | a在线播放 | 欧美精品久久天天躁 | 久久精品99视频 | 一二三精品视频 | www.99av| 久草在线中文888 | 91插插插免费视频 | 美女视频永久黄网站免费观看国产 | 一区二区三区在线观看中文字幕 | 国产又粗又猛又爽又黄的视频免费 | 在线观看午夜av | av免费高清观看 | 国产91区 | 久二影院| 国产中文字幕三区 | 国产一级免费在线观看 | 九九视频在线观看视频6 | www.av在线播放 | 91精品成人 | 麻豆综合网 | 日韩成人av在线 | 日韩高清一二三区 | 91看毛片 | 亚洲爽爽网 | 婷婷丁香狠狠爱 | 九九视频精品在线 | 精品国产人成亚洲区 | 亚洲精品免费播放 | 久久不射电影网 | 久久国产精品免费视频 | 国产精品麻豆视频 | www黄免费 | 国产精品成人久久久久久久 | 97超碰在线资源 | 国产综合香蕉五月婷在线 | 黄色av电影一级片 | 99精品国产一区二区三区不卡 | 美女久久久久久久久久 | 日韩大片在线免费观看 | 国产精品乱码久久久久久1区2区 | 中文字幕一区二区三区四区在线视频 | 毛片无卡免费无播放器 | av网站手机在线观看 | 精品无人国产偷自产在线 | 天天摸夜夜添 | 国产精品中文字幕av | 国产精品久久久久免费a∨ 欧美一级性生活片 | 亚洲一区二区精品视频 | 亚洲国产成人在线观看 | 日韩系列在线 | 在线观看av小说 | 五月婷婷另类国产 | 91完整版在线观看 | 久久99亚洲网美利坚合众国 | 成人黄色大片在线观看 | 欧美国产大片 | 超碰在线人人艹 | 久久久亚洲影院 | 美州a亚洲一视本频v色道 | 国产精彩在线视频 | 久久免费视频一区 | 国产精品久久久久久久久久99 | 日韩视频1| 超碰最新网址 | 国产分类视频 | 91精品999 | 中文字幕视频观看 | 日韩中文字幕亚洲一区二区va在线 | 丝袜av网站 | 日韩黄在线观看 | 久色免费视频 | av福利电影 | 久久亚洲欧美 | 国产伦精品一区二区三区在线 | 国产一区二区精 | 久久久综合香蕉尹人综合网 | 欧美一区免费观看 | 中文字幕人成乱码在线观看 | 九九久久久久久久久激情 | 日韩在线电影一区二区 | 黄色在线观看网站 | 免费福利在线 | 久久99热这里只有精品 | 天天天色 | 免费看污黄网站 | 午夜精品三区 | 国产资源中文字幕 | 99中文字幕在线观看 | 黄色免费高清视频 | 69精品久久久 | 免费合欢视频成人app | 超级碰碰碰免费视频 | 日日色综合 | 国产日产精品一区二区三区四区 | 日本在线中文 | 日韩精品一区二区三区不卡 | 国产精品久久久久久久久久久久久久 | 天堂av在线免费观看 | 97碰碰视频| 天天操天天怕 | 日韩免费小视频 | 亚洲成色777777在线观看影院 | 国产高清 不卡 | 久久久久国产精品免费免费搜索 | 国产亚洲一区二区在线观看 | 四虎在线永久免费观看 | 午夜精品一区二区三区在线视频 | 国产精品久久久久毛片大屁完整版 | 很黄很污的视频网站 | 国产免费久久 | 久久精品导航 | 最近中文字幕大全 | av在线免费播放网站 | 精品国产观看 | 久久久久久久久久免费视频 | 精品久久影院 | 九九九毛片| 激情视频区 | 国产中文字幕视频在线观看 | 精品视频123区在线观看 | 久久久久免费视频 | 国产中文字幕一区二区三区 | 亚洲最新毛片 | 91桃色免费观看 | 免费观看mv大片高清 | 精品一区二区影视 | 麻豆激情电影 | 中文日韩在线视频 | 成年人视频免费在线 | 亚洲麻豆精品 | 日日爽天天爽 | 成人免费在线网 | 久久网址| 色www永久免费 | 亚洲日本一区二区在线 | 国产麻豆视频网站 | www.天天干.com | 人九九精品 | 色综合久久中文综合久久牛 | 91在线视频免费91 | www.xxxx欧美 | 国产精品初高中精品久久 | avcom在线| 亚洲国产日韩av | 欧美一区二区在线看 | 日韩中文字幕国产精品 | 开心激情综合网 | 久久久亚洲精华液 | 国产一级片播放 | 成人免费观看视频大全 | 91成人免费看| 欧美91片| 免费在线观看不卡av | 国产综合精品一区二区三区 | 国产在线超碰 | 成人一区二区在线观看 | 久久a v视频 | 日韩av电影手机在线观看 | 高清国产午夜精品久久久久久 | 狠狠色丁香久久婷婷综合丁香 | 欧美日韩三级在线观看 | 免费成人av| 成人精品电影 | www.xxxx欧美| 天天干天天操天天做 | 波多野结衣动态图 | 国产一区在线播放 | 国产 欧美 日本 | 亚洲国产成人av网 | 午夜精品福利一区二区三区蜜桃 | 丝袜美女视频网站 | 久草在线视频免费资源观看 | 麻豆视传媒官网免费观看 | 日本一区二区三区免费看 | 天天操天天爽天天干 | 精品视频资源站 | 激情综合五月网 | 超碰97国产在线 | 天天视频亚洲 | 亚洲播放一区 | 天天色天天射天天综合网 | 午夜的福利| 麻豆视频在线播放 | 成人免费视频网 | 超薄丝袜一二三区 | 国产成人综 | 91视视频在线直接观看在线看网页在线看 | av电影免费在线播放 | 成人免费视频网站 | 欧美一区二区视频97 | 日女人免费视频 | 国产无套精品久久久久久 | av资源在线观看 | 精品亚洲免a | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 四虎国产精 | 91精品视频免费在线观看 | 国产69精品久久久久99尤 | 国产丝袜美腿在线 | 青青草久草在线 | 久久久国产99久久国产一 | www好男人 | 极品久久久久久久 | 日韩v在线91成人自拍 | 久久av免费观看 | 成人aⅴ视频 | 国产呻吟在线 | 久章草在线观看 | 在线成人中文字幕 | 九草视频在线 | 国内精品久久久久影院一蜜桃 | 一区二区久久久久 | 在线你懂的视频 | 成人av高清在线观看 | 欧美色图狠狠干 | 国产免码va在线观看免费 | 亚洲免费在线视频 | 精品夜夜嗨av一区二区三区 | 精品免费一区二区三区 | 欧美午夜性 | 又黄又刺激又爽的视频 | 欧美日韩高清一区二区 国产亚洲免费看 | 欧美一级片免费在线观看 | 久久9999久久免费精品国产 | 黄网站色视频 | 97品白浆高清久久久久久 | 韩国精品一区二区三区六区色诱 | 十八岁免进欧美 | 中文字幕亚洲在线观看 | 最近中文字幕大全 | 亚洲精品视频播放 |