2025-01-13 用数组实现栈
This commit is contained in:
parent
11bca22901
commit
ca2ce0d684
111
src/dataANDcalc/java/stack/ArrayStack.java
Normal file
111
src/dataANDcalc/java/stack/ArrayStack.java
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
package stack;
|
||||||
|
|
||||||
|
import queue.ArrayQueue;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class ArrayStack {
|
||||||
|
|
||||||
|
private int top = -1;
|
||||||
|
|
||||||
|
private int maxSize;
|
||||||
|
|
||||||
|
private int[] stack;
|
||||||
|
|
||||||
|
public ArrayStack(int maxSize) {
|
||||||
|
this.maxSize = maxSize;
|
||||||
|
stack = new int[maxSize];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTop() {
|
||||||
|
return top;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTop(int top) {
|
||||||
|
this.top = top;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxSize() {
|
||||||
|
return maxSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxSize(int maxSize) {
|
||||||
|
this.maxSize = maxSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getStack() {
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStack(int[] stack) {
|
||||||
|
this.stack = stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFull(){
|
||||||
|
return top == maxSize - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEmpty(){
|
||||||
|
return top == -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void push(int data){
|
||||||
|
if(isFull()){
|
||||||
|
System.out.println("栈满,无法加入新数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
top ++;
|
||||||
|
stack[top] = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int pop(){
|
||||||
|
if(isEmpty()){
|
||||||
|
throw new RuntimeException("栈空了");
|
||||||
|
}
|
||||||
|
int value = stack[top];
|
||||||
|
top --;
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int top(){
|
||||||
|
if(isEmpty()){
|
||||||
|
throw new RuntimeException("栈空了");
|
||||||
|
}
|
||||||
|
int value = stack[top];
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void show(){
|
||||||
|
if(isEmpty()){
|
||||||
|
System.out.println("栈空");
|
||||||
|
}
|
||||||
|
for(int i = top; i >= 0; i--){
|
||||||
|
System.out.printf("stack[%d]=%d\n", i, stack[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ArrayStack arrayStack = new ArrayStack(5);
|
||||||
|
Scanner scan = new Scanner(System.in);
|
||||||
|
while (true) {
|
||||||
|
System.out.println("a存数, g取数, s查看, exit退出:");
|
||||||
|
String handle = scan.next();
|
||||||
|
if ("exit".equals(handle)){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ("a".equals(handle)){
|
||||||
|
System.out.println("请输入入队数据:");
|
||||||
|
int data = scan.nextInt();
|
||||||
|
arrayStack.push(data);
|
||||||
|
}
|
||||||
|
if ("g".equals(handle)){
|
||||||
|
int value = arrayStack.pop();
|
||||||
|
System.out.println("取出的数为:" + value);
|
||||||
|
}
|
||||||
|
if ("s".equals(handle)){
|
||||||
|
arrayStack.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scan.close();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user