91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA如何基于靜態數組實現棧

發布時間:2021-05-17 13:17:43 來源:億速云 閱讀:236 作者:小新 欄目:編程語言

這篇文章主要介紹了JAVA如何基于靜態數組實現棧,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體如下:

1.棧的定義

棧是一種“先進后出”的一種線性數據結構,有壓棧出棧兩種操作方式。如下圖:

JAVA如何基于靜態數組實現棧

2.棧的分類

棧主要分為兩類:

  • 靜態棧

  • 動態棧

【靜態棧】

靜態棧的核心是數組,類似于一個連續內存的數組,我們只能操作其棧頂元素。

【動態棧】

靜態棧的核心是數組,類似于一個連續內存的數組,我們只能操作其棧頂節點。

JAVA如何基于靜態數組實現棧

 此節我們在我們之前封裝的動態數組的基礎上(引用封裝好的動態數組),實現基本的棧操作。

3.棧實現

1.先定義一個接口Stack包括相關棧的基本操作

package Stack;

public interface Stack<E> {

  //棧中元素個數
  int getSize();

  //棧中元素個數是否為空
  boolean isEmpty();

  //進棧
  void push(E e);

  //出棧
  E pop();

  //查看棧頂元素
  E peek();
}

2.創建一個ArrayStack類實現接口

package Stack;

import Array.DynamicArray;

public class ArrayStack<E> implements Stack<E> {
  DynamicArray<E> array;

  //構造函數,傳入棧的容量capacity構造函數
  public ArrayStack(int capacity) {
    array = new DynamicArray<E>(capacity);
  }

  //無參構造函數,默認棧的容量capacity=10
  public ArrayStack() {
    array = new DynamicArray<E>();
  }

  //獲取棧中元素個數
  @Override
  public int getSize() {
    return array.getSize();
  }

  //獲取棧中元素數據是否為空
  @Override
  public boolean isEmpty() {
    return array.isEmpty();
  }

  //獲取棧的容量
  public int getCapacity() {
    return array.getCapacity();
  }

  //進棧操作
  @Override
  public void push(E e) {
    array.addLast(e);
  }

  //出棧操作
  @Override
  public E pop() {
    return array.removeLast();
  }

  //查看棧頂元素
  @Override
  public E peek() {
    return array.getLast();
  }

  //重寫object類的toString方法
  @Override
  public 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("] top");//體現右側為棧頂
    return res.toString();
  }

}

3.測試棧操作是否正確

新建一個類,包含main函數

(1)進棧操作

package Stack;

public class TestMain {
  public static void main(String[] args) {
    ArrayStack<Integer> stack = new ArrayStack<Integer>();
    for (int i = 0; i < 5; i++) {
      stack.push(i);
      System.out.println(stack);
    }
   
  }

}

結果為:

JAVA如何基于靜態數組實現棧

(2)出棧操作

 System.out.println("出棧");
 stack.pop();
 System.out.println(stack);

結果為:

JAVA如何基于靜態數組實現棧

4.棧的復雜度分析

有了我們關于動態數組復雜度分析的知識,在加上此處的棧是基于動態數組實現的,復雜度的分析方式是一致的。

JAVA如何基于靜態數組實現棧

常用的java框架有哪些

1.SpringMVC,Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。4.Dubbo,Dubbo是一個分布式服務框架。5.Maven,Maven是個項目管理和構建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。7.Ehcache,EhCache 是一個純Java的進程內緩存框架。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“JAVA如何基于靜態數組實現棧”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄大仙区| 崇义县| 乡城县| 赫章县| 沁源县| 商城县| 成安县| 扎兰屯市| 胶州市| 桃江县| 枝江市| 龙岩市| 龙泉市| 大港区| 那坡县| 宝山区| 旬邑县| 益阳市| 托克逊县| 西昌市| 禄劝| 潜山县| 郴州市| 灵武市| 启东市| 新建县| 临夏县| 牙克石市| 福鼎市| 砀山县| 莲花县| 垦利县| 金川县| 柯坪县| 轮台县| 扎囊县| 甘孜县| 兰西县| 托克托县| 富裕县| 塘沽区|