成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java數據結構:棧的實現

開發 后端
棧是Java語言中最重要的數據結構之一,它的實現,至少應該包括下面的幾個方法和應該考慮到的幾個問題。詳細請看下文

棧是Java語言中最重要的數據結構之一,它的實現,至少應該包括以下幾個方法:

  1. pop() 出棧操作,彈出棧頂元素。
  2. push(E e) 入棧操作
  3. peek() 查看棧頂元素
  4. isEmpty() 棧是否為空

另外,實現一個棧,還應該考慮到幾個問題:

  1. 棧的初始大小以及棧滿以后如何新增棧空間
  2. 對棧進行更新時需要進行同步

簡單示例,使用數組實現棧,代碼如下:

  1. <pre name="code" class="java">public class Stack<E> {  
  2.  
  3.     // Java 不支持泛型數組,如需使用,請使用Java提供的容器  
  4.     private Object[] stack;  
  5.  
  6.     // 棧的默認初始大小  
  7.     private static final int INIT_SIZE = 2;  
  8.  
  9.     // 棧頂索引  
  10.     private int index;  
  11.  
  12.     public Stack() {  
  13.         stack = new Object[INIT_SIZE];  
  14.         index = -1;  
  15.     }  
  16.  
  17.     /**  
  18.      * 構造方法  
  19.      *   
  20.      * @param initSize  
  21.      *            棧的初始大小  
  22.      */ 
  23.     public Stack(int initSize) {  
  24.         if (initSize < 0) {  
  25.             throw new IllegalArgumentException();  
  26.         }  
  27.         stack = new Object[initSize];  
  28.         index = -1;  
  29.     }  
  30.  
  31.     /**  
  32.      * 出棧操作  
  33.      *   
  34.      * @return 棧頂對象  
  35.      */ 
  36.     public synchronized E pop() {  
  37.         if (!isEmpty()) {  
  38.             E temp = peek();  
  39.             stack[index--] = null;  
  40.             return temp;  
  41.         }  
  42.         return null;  
  43.     }  
  44.  
  45.     /**  
  46.      * 入棧操作  
  47.      *   
  48.      * @param obj  
  49.      *            等待入棧的對象  
  50.      */ 
  51.     public synchronized void push(E obj) {  
  52.         if (isFull()) {  
  53.             Object[] temp = stack;  
  54.             // 如果棧滿,則創建空間為當前棧空間兩倍的棧  
  55.             stack = new Object[2 * stack.length];  
  56.             System.arraycopy(temp, 0, stack, 0, temp.length);  
  57.         }  
  58.         stack[++index] = obj;  
  59.     }  
  60.  
  61.     /**  
  62.      * 查看棧頂對象  
  63.      *   
  64.      * @return 棧頂對象  
  65.      */ 
  66.     public E peek() {  
  67.         if (!isEmpty()) {  
  68.             return (E) stack[index];  
  69.         }  
  70.         return null;  
  71.     }  
  72.  
  73.     /**  
  74.      * 查看棧是否為空  
  75.      *   
  76.      * @return 如果棧為空返回true,否則返回false  
  77.      */ 
  78.     public boolean isEmpty() {  
  79.         return index == -1;  
  80.     }  
  81.  
  82.     /**  
  83.      * 查看棧是否滿  
  84.      *   
  85.      * @return 如果棧滿返回true,否則返回false  
  86.      */ 
  87.     public boolean isFull() {  
  88.         return index >= stack.length - 1;  
  89.     }  
  90. }  

最后說明,Java中實現了棧(java.util.Stack)的數據結構,它是通過繼承Vector類實現的,一般情況下我們直接拿來用就行了。

【編輯推薦】

  1. Java protobuf框架使用向導
  2. Java端通過CXF調用.NET端服務
  3. Java中的異常對程序效率有無影響
  4. Java線程池的原理及幾類線程池的介紹
  5. Java調用SQL Server的存儲過程詳解
責任編輯:林師授 來源: liuzhenfeng的博客
相關推薦

2023-09-25 12:23:18

Python

2020-12-17 10:12:33

數據結構算法隊列

2024-01-15 06:01:36

C++數組

2017-09-06 10:55:19

Java

2020-10-28 10:10:03

Java單鏈表數據結構

2021-03-12 09:13:47

Java數據結構算法

2011-04-11 12:22:11

數據結構C++

2016-10-09 08:57:11

python數據結構與算法樹形結構

2009-08-11 14:51:11

C#數據結構與算法

2011-04-11 11:23:17

隊列數據結構

2011-07-04 10:32:37

JAVA

2011-03-31 15:41:51

Cacti數據表結構

2020-08-10 14:46:30

JavaScriptStack

2023-10-31 08:51:25

數據結構存儲數據

2023-07-03 17:24:33

數據結構

2014-12-10 10:35:43

微信 數據結構

2012-04-28 14:21:47

Java數據結構線性結構

2023-10-18 17:49:58

數據結構隊列結構

2019-08-13 09:40:55

數據結構算法JavasCript

2021-08-29 07:41:48

數據HashMap底層
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久国产精品视频 | 日韩中文字幕一区二区 | 亚洲精彩视频在线观看 | 天天影视综合 | 午夜私人影院 | 羞羞在线观看视频 | 日韩欧美一区二区在线播放 | 女同videos另类| 福利久久 | 三级av在线 | 日韩视频精品在线 | 欧美精品日韩 | 欧美一级视频在线观看 | 免费观看av | 日韩电影在线 | a欧美 | 亚洲一区二区免费看 | 中文字幕视频在线 | aaaaa毛片| 国产精品成人一区二区三区 | 一区日韩| 久久99精品视频 | 中文字幕国 | 欧美aaaa视频 | 精品国产一区二区三区性色av | 国产成人免费一区二区60岁 | 国产一区二区在线播放 | 国产精品18久久久久久久 | 91视频一88av | 日韩中文字幕 | 欧美一区二区二区 | 天天看天天爽 | 精品一区二区av | 日韩精品二区 | 美女视频网站久久 | 91不卡 | 中文字幕国产一区 | 欧美久久电影 | 精品视频在线播放 | 中文二区 | 古典武侠第一页久久777 |