java实现顺序栈_Java实现顺序栈原理解析
這篇文章主要介紹了java實現順序棧原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
什么是棧
1.棧的英文是stack
2.棧是一個先入后出的有序列表
3.棧是限制線性表元素的插入和刪除只能在線性表的同一端進行的一種特殊的線性表,允許插入和刪除的一端是,為變化的一端,成為棧頂,另外的一端為固定的一端為棧底
EVBhnjgy
4.棧的定義可知,最先放入棧中的元素在棧底,最后放入的元素在棧頂,而刪除的情況剛好相反,最后放入的元素先刪除,最先放入的元素后刪除
棧的應用場景
1.子程序的調用,在跳向子程序之前會先將下一條指令的地址存放在堆棧中,直到子程序執行后再將地址取出,最后回到原來的程序之中
2.遞歸的調用,和子程序的調用類似,只是出了存儲下一個指令的地址外,也將參數、區域變量、等數據壓入棧中
3.表達式的轉換與求值
4.二叉樹的遍歷
5.圖形的深度優先搜索
代碼
棧
package stack;
public class ArrayStack {
private int maxSize;//最大值
private int[] stack;//棧
private int top=-1;//棧頂
//構造器
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("棧已經滿了~");
return;
}else {
top++;
stack[top]=value;
}
}
//出棧-pop
public int pop() {
if(isEmpty()) {
throw new RuntimeException("棧已經空了~");
}
int value=stack[top];
top--;
return vaEVBhnjgylue;
}
//遍歷棧
public void list() {
if(isEmpty()) {
System.out.println("???#xff0c;沒有數據~");
}
for(int i=top;i>=0;i--) {
System.out.printf
測試類
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:退出測試");
System.out.println("push:壓棧");
System.out.println("pop:出棧");
System.out.println("請輸入你的選擇:");
key=scanner.next();
switch (key) {
case "show":
stack.list();
break;
case "push":
System.out.println("請輸入一個數:");
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("程序退出!");
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。
本文標題: Java實現順序棧原理解析
本文地址: http://www.cppcns.com/ruanjian/java/286570.html
總結
以上是生活随笔為你收集整理的java实现顺序栈_Java实现顺序栈原理解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: led灯怎么维修
- 下一篇: java美元兑换,(Java实现) 美元