package ArrayStack;
public class ArrayStack {
private int maxSize;
private int [ ] stack;
private int top= - 1 ;
public ArrayStack ( ) {
}
public ArrayStack ( int maxSize) {
this . maxSize= maxSize;
stack= new int [ maxSize] ;
}
public Boolean isFull ( ) {
return top== maxSize- 1 ;
}
public Boolean isEmpty ( ) {
return top== - 1 ;
}
public void push ( int value) {
if ( isFull ( ) ) {
System. out. println ( "栈满" ) ;
return ;
}
top++ ;
stack[ top] = value;
}
public int pop ( ) {
if ( isEmpty ( ) ) {
throw new RuntimeException ( "栈空,没有数据" ) ;
}
int value= stack[ top] ;
top-- ;
return value;
}
public int peek ( ) {
if ( isEmpty ( ) ) {
throw new RuntimeException ( "栈空,没有数据" ) ;
}
return stack[ top] ;
}
public void list ( ) {
if ( isEmpty ( ) ) {
System. out. println ( "栈空!" ) ;
return ;
}
for ( int i= top; i>= 0 ; i-- ) {
System. out. printf ( "stack[%d] = %d\n" , i, stack[ i] ) ;
}
}
}
package ArrayStack;
import java. util. Scanner;
public class ArrayStackDemo {
public static void main ( String[ ] args) {
ArrayStack stack= new ArrayStack ( 5 ) ;
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) {
System. out. println ( e. getMessage ( ) ) ;
}
break ;
case "exit" :
scanner. close ( ) ;
loop= false ;
break ;
default :
System. out. println ( "输入有误!" ) ;
}
}
}
}