一、概述
-
堆疊(Stack),也叫堆疊,但是不能稱為堆,堆是另外一種資料結構
-
FILO堆疊遵循先進后出的原則(First In Last Out)
-
基本操作有:入堆疊(壓堆疊)、出堆疊(退堆疊)
-
入堆疊和出堆疊都是針對堆疊頂的操作
二、結構示意圖
-
依次將a、b、c元素壓進一個空堆疊中:

-
將上述堆疊中的元素一個一個出堆疊

-
由以上兩圖我們可以看出來,堆疊是遵循FILO(先進后出)的原則:a元素是最先進堆疊的而是最后出堆疊的,c元素是最后進堆疊的而是最先出堆疊的,
三、代碼示例
-
我們這里以java代碼為例,使用java官方提供的函式庫里面的堆疊實作
@Test public void test3(){ Stack<Integer> stack = new Stack<Integer>(); stack.push(1);//往堆疊中添加一個元素 stack.push(2); stack.push(3); stack.push(4); stack.push(5); System.out.println(stack.peek()); stack.pop();//移除堆疊中的一個元素 System.out.println(stack.peek()); stack.pop(); System.out.println(stack.peek()); stack.pop(); System.out.println(stack.peek()); stack.pop(); System.out.println(stack.peek()); stack.pop(); }
-
其中peek()方法是獲取堆疊的末尾元素,也就是堆疊頂的那個元素
-
代碼運行效果如下圖:

四、自己用代碼實作一個簡單的堆疊
-
接下來我們使用陣列來簡單的實作一下堆疊結構
package com.zhurouwangzi.entity; ? public class MyStack { public MyStack(){ element = new int[20]; size = 0; } private int[] element; private int size; ? public int push(int item){ element[size] = item; size++; return item; } ? public int pop(){ int popData = https://www.cnblogs.com/Infancy/p/element[size-1]; int[] newEle = new int[size-1]; System.arraycopy(element, 0, newEle, 0, size-1); element = newEle; size--; return popData; } ? public int peek(){ return element[size-1]; } ? public int getSize(){ return size; } }
-
測驗自定義的堆疊
@Test public void test3(){ MyStack myStack = new MyStack(); myStack.push(1); myStack.push(2); myStack.push(3); myStack.push(4); myStack.push(5); System.out.println(myStack.peek()); myStack.pop();//移除堆疊中的一個元素 System.out.println(myStack.peek()); myStack.pop(); System.out.println(myStack.peek()); myStack.pop(); System.out.println(myStack.peek()); myStack.pop(); System.out.println(myStack.peek()); myStack.pop(); }
-
運行結果和java官方封裝的堆疊函式是一樣的:

轉載請注明出處:https://www.cnblogs.com/Infancy/p/12598803.htmlfalse
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67607.html
標籤:其他
上一篇:使用consul配置overlay出現 datastore for scope "global" is not initialized錯誤
