您好,登錄后才能下訂單哦!
本文實例講述了Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實現(xiàn)方法。分享給大家供大家參考,具體如下:
一、概述:
1、基本概念:
棧是一種數(shù)據(jù)結(jié)構(gòu),是只能在某一端插入和刪除的特殊線性表。它按照后進(jìn)先出的原則存儲數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)(最后一個數(shù)據(jù)被第一個讀出來)。
棧是允許在同一端進(jìn)行插入和刪除操作的特殊線性表。允許進(jìn)行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂 浮動;棧中元素個數(shù)為零時稱為空棧。插入一般稱為進(jìn)棧(PUSH),刪除則稱為退棧(POP)。 棧也稱為先進(jìn)后出表。
??梢杂脕碓诤瘮?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("億速云測試結(jié)果:"); System.out.println("----------------------------彈出----------------------------"); while (!stack.isEmpty()) { System.out.println(stack.pop()); } System.out.println("----------------------------反序----------------------------"); System.out.println(stack.reverse("abcdefg")); } }
運行結(jié)果:
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。