java实现顺序栈_Java实现顺序栈原理解析
這篇文章主要介紹了java實(shí)現(xiàn)順序棧原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
什么是棧
1.棧的英文是stack
2.棧是一個(gè)先入后出的有序列表
3.棧是限制線性表元素的插入和刪除只能在線性表的同一端進(jìn)行的一種特殊的線性表,允許插入和刪除的一端是,為變化的一端,成為棧頂,另外的一端為固定的一端為棧底
EVBhnjgy
4.棧的定義可知,最先放入棧中的元素在棧底,最后放入的元素在棧頂,而刪除的情況剛好相反,最后放入的元素先刪除,最先放入的元素后刪除
棧的應(yīng)用場(chǎng)景
1.子程序的調(diào)用,在跳向子程序之前會(huì)先將下一條指令的地址存放在堆棧中,直到子程序執(zhí)行后再將地址取出,最后回到原來(lái)的程序之中
2.遞歸的調(diào)用,和子程序的調(diào)用類似,只是出了存儲(chǔ)下一個(gè)指令的地址外,也將參數(shù)、區(qū)域變量、等數(shù)據(jù)壓入棧中
3.表達(dá)式的轉(zhuǎn)換與求值
4.二叉樹(shù)的遍歷
5.圖形的深度優(yōu)先搜索
代碼
棧
package stack;
public class ArrayStack {
private int maxSize;//最大值
private int[] stack;//棧
private int top=-1;//棧頂
//構(gòu)造器
public ArrayStack(int maxSize) {
this.maxSize=maxSize;
stack=new int[this.maxSize];
}
//棧滿
public boolean isFull() {
return top==maxSize-1;
}
//棧空
public boolean isEmpty() {
return top==-1;
}
//入棧-push
public void push(int value) {
//先判斷是否棧滿了
if(isFull()) {
System.out.println("棧已經(jīng)滿了~");
return;
}else {
top++;
stack[top]=value;
}
}
//出棧-pop
public int pop() {
if(isEmpty()) {
throw new RuntimeException("棧已經(jīng)空了~");
}
int value=stack[top];
top--;
return vaEVBhnjgylue;
}
//遍歷棧
public void list() {
if(isEmpty()) {
System.out.println("棧空,沒(méi)有數(shù)據(jù)~");
}
for(int i=top;i>=0;i--) {
System.out.printf
測(cè)試類
package stack;
import java.util.Scanner;
public class TestArrayList {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayStack stack=new ArrayStack(4);
String key="";
boolean loop=true;
Scanner scanner=new Scanner(System.in);
while(loop) {
System.out.println("show:顯示棧");
System.out.println("exit:退出測(cè)試");
System.out.println("push:壓棧");
System.out.println("pop:出棧");
System.out.println("請(qǐng)輸入你的選擇:");
key=scanner.next();
switch (key) {
case "show":
stack.list();
break;
case "push":
System.out.println("請(qǐng)輸入一個(gè)數(shù):");
int value=scanner.nextInt();
stack.push(value);
break;
case "pop":
try {
int res=stack.pop();
System.out.printf("出棧的元素為:%d\n",res);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
編程客棧 break;
case "exit":
scanner.close();
loop=false;
break;
default:
break;
http://www.cppcns.com }
}
System.out.println("程序退出!");
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
本文標(biāo)題: Java實(shí)現(xiàn)順序棧原理解析
本文地址: http://www.cppcns.com/ruanjian/java/286570.html
總結(jié)
以上是生活随笔為你收集整理的java实现顺序栈_Java实现顺序栈原理解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: led灯怎么维修
- 下一篇: 小虾米闯江湖什么时间维护