棧 介紹及簡單實現
入棧(push):表示在棧頂插入一個元素。
出棧(pop):表示從棧頂刪除一個元素。 試圖對一個空棧執行出棧操作稱為下溢(underflow)
對一個滿棧進行入棧操作稱為溢位(overflow)。 通常情況下下溢和溢位均認為異常。
1.2 操作 簡單起見,我們使用int型別。
void push(int data) 將data插入棧
int pop() 刪除並返回最後一個插入的元素。
int top() 返回一個最後插入的元素。
int size() 返回儲存在棧中的元素的個數。
boolean isEmpty() 判斷棧中是否有元素
boolean isStackFull() 判斷棧中是否存滿元素。
1.3 棧的常見應用
- 符號匹配
- 中輟表示式轉為後輟表示式
- 計算後輟表示式
- 實現函式呼叫(包括遞迴)
- 文字編輯器的撤銷操作。
- 瀏覽器後退按鈕的實現。
public abstract class Stack {
2 /**
3 * 棧頂插入元素
4 * @param data
5 */
6 public abstract void push(int data);
78 /**
9 * 刪除並返回棧頂元素
10 * @return
11 */
12 public abstract int pop();
1314 /**
15 * 返回棧頂元素
16 * @return
17 */
18 public abstract int top();
1920 /**
21 * 返回棧中元素個數
22 * @return
23 */
24 public abstract int size();
2526 /**
27 * 判斷棧是否為空
28 * @return
29 */
30 public abstract boolean isEmpty();
3132 /**
33 * 判斷棧是否滿了
34 * @return
35 */
36 public abstract boolean isStackFull();
37}
38 我們使用三種方式實現棧,一種是簡單陣列,一種是動態陣列,最後是單向連結串列2.2 簡單陣列實現棧
import java.util.Arrays;
2
3
/**
4
* Created by Administrator on 2017/6/24 0024.
5
*/
6
public class SimpleDynamicArrayStack extends Stack {
7
private int top;
8
private int capacity;
9
private int[] array;
10
11
public SimpleDynamicArrayStack(int capacity) {
12
this.capacity = capacity;
13
array = new int[capacity];
14
}
15
16
public void push(int data) {
17
if(isStackFull()){
18
expansion();
19
}
20
array[top] = data;
21
top++;
22
}
23
24
public int pop() {
25
if(isEmpty()){
26
throw new IllegalMonitorStateException("該棧為空棧,無法探出元素");
相關推薦
棧 介紹及簡單實現
一、棧介紹 1.1 簡單介紹 棧(stack) 是一個有序線性表,只能在表的一端(稱為棧頂(top))執行插入和刪除操作。最後插入的元素最後一個被刪除,所以,棧也稱為後進先出(LIFO)或先進後出(FILO)線性表。 入棧(pus
mongoDB——自動分片介紹及簡單實現
分片,是指將資料拆分,將其分散到不同的機器上。這樣的好處就是,不需要功能強大的大型計算機也可以儲存更多的資料,處理更大的負載。 mongoDB的分片,是將collection的
StrangeIOC MVCS框架介紹及簡單實現
先來看看MVC MVC(Model-View-Controller)是最老牌的的思想,其中Model就是作為資料管理者,View作為資料展示者,Controller作為資料加工者,Model和View又都是由Controller來根據業務需求調配,所以Cont
C++小知識(十)——Eigen介紹及簡單使用(PCL庫實現)
轉載自:https://blog.csdn.net/fengbingchun/article/details/47378515, Eigen是可以用來進行線性代數、矩陣、向量操作等運算的C++庫,它裡面包含了很多演算法。它的License是MPL2。它支援
Oracle12cWindows安裝、介紹及簡單使用(圖文)
enter database cto 應該 技術 功能 自帶 eve 繼續 1、下載 地址為:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 含企
Oracle 12c Windows安裝、介紹及簡單使用(圖文)
htm 編程 閱讀 arch 用戶 upgrade plsql windows安裝 條件 1、下載 地址為:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/inde
Vue數據綁定原理及簡單實現
fragement observe images als 統一 rst react github上 each 本篇文章中的代碼只是部分片段,完整代碼存放於github上https://github.com/Q-Zhan/simple-vue。 進入正文~實現數據綁定主要是要
Parquet介紹及簡單使用
Parquet==> 什麽是parquet Parquet 是列式存儲的一種文件類型==> 官網描述: Apache Parquet is a columnar storage format available to any project in the Ha
Spring 容器IOC解析及簡單實現
interface utf-8 cat container 就是 pat 註入 () class 最近一段時間,“容器”兩個字一直縈繞在我的耳邊,甚至是吃飯、睡覺的時候都在我腦子裏蹦來蹦去的。隨著這些天一次次的交流、討論,對於容器的理解也逐漸加深。理論上的東西終歸要落實到實
Lucene介紹及簡單入門案例(集成ik分詞器)
chinese depend 創建索引 圖片 latest frame numeric id字段 div 介紹 Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個
C++智能指針,指針容器原理及簡單實現(auto_ptr,scoped_ptr,ptr_vector).
同時 構造對象 pop 所有 main 操作 bject str 運算 目錄 C++智能指針,指針容器原理及簡單實現(auto_ptr,scoped_ptr,ptr_vector). auto_ptr scoped_ptr ptr_vector C++智能指針,指針容器
Burp Suite掃描器漏洞掃描功能介紹及簡單教程
author -s 測試方法 inject psc sql url地址 issue 功能 pageuo 2017-07-25 共852828人圍觀 ,發現 15 個不明物體 工具新手科普 * 本文作者:pageuo,本文屬FreeBuf原創獎勵計劃,未經許可禁止
springboot介紹及簡單使用
iba 其他 1.2 服務架構 ron art web 應用 ctr start Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配
菜鳥學SSH——Spring容器IOC解析及簡單實現
最近一段時間,“容器”兩個字一直縈繞在我的耳邊,甚至是吃飯、睡覺的時候都在我腦子裡蹦來蹦去的。隨著這些天一次次的交流、討論,對於容器的理解也逐漸加深。理論上的東西終歸要落實到實踐,今天就藉助Spring容器實現原理,簡單說說吧。 簡單的說,Spring就是通過工廠+反射將我們的bean放到它
自適應閾值大津法(OTSU)介紹及程式碼實現
https://blog.csdn.net/a153375250/article/details/50970104 演算法原理 最大類間方差法是由日本學者大津於1979年提出的,是一種自適應的閾值確定法,又叫大津法,簡稱OTSU。 我用最簡單的方式解釋一下演算法原理: 這個演算法的思想就
HashMap實現原理分析及簡單實現一個HashMap
HashMap實現原理分析及簡單實現一個HashMap 歡迎關注作者部落格 簡書傳送門 轉載@原文地址 HashMap的工作原理是近年來常見的Java面試題。幾乎每個Java程式設計師都知道HashMap,都知道哪裡要用HashMap,知道HashMap和
Kubernetes儲存系統介紹及機制實現
一、Kubernetes中儲存的應用場景 在Kubernetes中部署和執行的服務大致分為: 1. 無狀態服務 Kubernetes使用ReplicaSet來保證一個服務的例項數量,如果說某個Pod例項由於某種原因掛掉或崩潰,ReplicaSet會立刻用這個Pod的模版
webpack入門介紹及簡單配置
webpack在當前前端工程師常用的一個工程化打包工具,官方對webpack的介紹是:webpack本質上 是一個現代 JavaScript 應用程式的靜態模組打包器(static module bundler)。在 webpack 處理應用程式時,它會在內部建
Spring的Jdbc,事務及簡單實現
一.spring 整合 jdbc 基本的專案目錄: 首先要加入的pom.xml配置,也就是引入的依賴,程式碼如下: <!-- spring 測試環境 --> <dependency> <groupId>o
深度學習介紹及簡單應用
引言 深度學習背後的主要原理是從大腦中汲取靈感。,這種觀點產生了“神經網路”術語,大腦包含數十億個神經元,它們之間有數萬個連線。 在許多情況下,深度學習演算法類似於大腦,因為大腦和深度學習模型都涉及大量的計算單元(神經元),這些單元在未啟用時並不是活躍的,它們彼此互動時會變得智慧化。 神經元 神經網路