Java數(shù)據(jù)結構之棧的基本定義與實現(xiàn)方法示例
本文實例講述了Java數(shù)據(jù)結構之棧的基本定義與實現(xiàn)方法。分享給大家供大家參考,具體如下:
一、概述:
1、基本概念:
棧是一種數(shù)據(jù)結構,是只能在某一端插入和刪除的特殊線性表。它按照后進先出的原則存儲數(shù)據(jù),先進入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)(最后一個數(shù)據(jù)被第一個讀出來)。
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂 浮動;棧中元素個數(shù)為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。 棧也稱為先進后出表。
棧可以用來在函數(shù)調(diào)用的時候存儲斷點,做遞歸時要用到棧!
2、示例圖:
二、代碼實現(xiàn):
package com.java.stack; /** * @描述 棧示例 * @項目名稱 Java_DataStruct * @包名 com.java.stack * @類名 MyStack * @author chenlin * @version 1.0 */ public class CharStack { private int maxSize;// 站的大小 private char[] arr; private int top;// 指向棧頂元素 public CharStack(int size) { this.maxSize = size; this.arr = new char[maxSize]; this.top = -1; } /** * 壓入數(shù)據(jù) * * @param value */ public void push(char value) { arr[++top] = value; } /** * 彈出數(shù)據(jù) * * @param value */ public char pop() { return arr[top--]; } /** * 訪問數(shù)據(jù) * * @return */ public long peek() { return arr[top]; } /** * 判斷是否為空 * * @return */ public boolean isEmpty() { return (top == -1); } /** * 是否滿了 * * @return */ public boolean isFull() { return (top == maxSize - 1); } /** * 把字符串反序 * * @param text * @return */ public String reverse(String text) { for (int i = 0; i < text.length(); i++) { push(text.charAt(i)); } String result = ""; while (!isEmpty()) { result += (char)pop(); } return result; } public static void main(String[] args) { CharStack stack = new CharStack(30); while (!stack.isFull()) { stack.push('l'); stack.push('a'); stack.push('k'); stack.push('m'); stack.push('n'); stack.push('e'); stack.push('b'); stack.push('f'); stack.push('d'); stack.push('e'); } System.out.println("腳本之家測試結果:"); System.out.println("----------------------------彈出----------------------------"); while (!stack.isEmpty()) { System.out.println(stack.pop()); } System.out.println("----------------------------反序----------------------------"); System.out.println(stack.reverse("abcdefg")); } }
運行結果:
更多關于java算法相關內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例
ArrayBlockingQueue是一個基于數(shù)組實現(xiàn)的阻塞隊列,本文就來介紹一下java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-02-02mybatis-plus多表關聯(lián)查詢功能的實現(xiàn)
本文給大家介紹mybatis-plus多表關聯(lián)查詢功能的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-11-11PostMan傳@RequestParam修飾的數(shù)組方式
這篇文章主要介紹了PostMan傳@RequestParam修飾的數(shù)組方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08如何在mybatis中向BLOB字段批量插入數(shù)據(jù)
這篇文章主要介紹了如何在mybatis中向BLOB字段批量插入數(shù)據(jù)的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-10-10Java中ReentrantLock和ReentrantReadWriteLock的原理
這篇文章主要介紹了Java中ReentrantLock和ReentrantReadWriteLock的原理,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-09-09