Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實(shí)現(xiàn)方法示例
本文實(shí)例講述了Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
一、概述:
1、基本概念:
棧是一種數(shù)據(jù)結(jié)構(gòu),是只能在某一端插入和刪除的特殊線性表。它按照后進(jìn)先出的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來)。
棧是允許在同一端進(jìn)行插入和刪除操作的特殊線性表。允許進(jìn)行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂 浮動(dòng);棧中元素個(gè)數(shù)為零時(shí)稱為空棧。插入一般稱為進(jìn)棧(PUSH),刪除則稱為退棧(POP)。 棧也稱為先進(jìn)后出表。
??梢杂脕碓诤瘮?shù)調(diào)用的時(shí)候存儲(chǔ)斷點(diǎn),做遞歸時(shí)要用到棧!
2、示例圖:

二、代碼實(shí)現(xiàn):
package com.java.stack;
/**
* @描述 棧示例
* @項(xiàng)目名稱 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("腳本之家測(cè)試結(jié)果:");
System.out.println("----------------------------彈出----------------------------");
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
System.out.println("----------------------------反序----------------------------");
System.out.println(stack.reverse("abcdefg"));
}
}
運(yùn)行結(jié)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的真正理解
- Java數(shù)據(jù)結(jié)構(gòu)之簡(jiǎn)單的連接點(diǎn)(link)實(shí)現(xiàn)方法示例
- Java數(shù)據(jù)結(jié)構(gòu)之簡(jiǎn)單鏈表的定義與實(shí)現(xiàn)方法示例
- Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法
- java數(shù)據(jù)結(jié)構(gòu)之二分查找法 binarySearch的實(shí)例
- java 數(shù)據(jù)結(jié)構(gòu)中棧和隊(duì)列的實(shí)例詳解
- 詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找)
- java編程實(shí)現(xiàn)求解八枚銀幣代碼分享
相關(guān)文章
一個(gè)簡(jiǎn)單的Python名片管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡(jiǎn)單的Python名片管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴配置詳解
這篇文章主要為大家介紹了nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例
ArrayBlockingQueue是一個(gè)基于數(shù)組實(shí)現(xiàn)的阻塞隊(duì)列,本文就來介紹一下java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
mybatis-plus多表關(guān)聯(lián)查詢功能的實(shí)現(xiàn)
本文給大家介紹mybatis-plus多表關(guān)聯(lián)查詢功能的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11
PostMan傳@RequestParam修飾的數(shù)組方式
這篇文章主要介紹了PostMan傳@RequestParam修飾的數(shù)組方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
java判定數(shù)組或集合是否存在某個(gè)元素的實(shí)例
下面小編就為大家?guī)硪黄猨ava判定數(shù)組或集合是否存在某個(gè)元素的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
如何在mybatis中向BLOB字段批量插入數(shù)據(jù)
這篇文章主要介紹了如何在mybatis中向BLOB字段批量插入數(shù)據(jù)的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-10-10
Java中ReentrantLock和ReentrantReadWriteLock的原理
這篇文章主要介紹了Java中ReentrantLock和ReentrantReadWriteLock的原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09

