import java.util.Scanner;
/**
* 棧結構
*/
public class StackStructure {
public static void main(String[] args){
StackType st = new StackType() ;
DataStack data1 = new DataStack() ;
//初始化棧
StackType stack = st.STInit() ;
Scanner input = new Scanner(System.in) ;
System.out.print("入棧操作:\n");
System.out.println("輸入姓名 年齡 進行入棧操作:");
do{
DataStack data = new DataStack() ;
data.name = input.next() ;
if(data.name.equals("0")){
break ; //若輸入 0,則退出
}else{
data.age = input.nextInt() ;
st.PushST(stack ,data) ;
}
}while(true) ;
String temp = "1" ;
System.out.println("出棧操作:按任意非 0 鍵進行出棧操作:");
temp = input.next() ;
while(!temp.equals("0")){
data1 = st.PopST(stack);
System.out.printf("出棧的數據是(%s ,%d)\n" ,data1.name ,data1.age) ;
temp = input.next() ;
}
System.out.println("測試結束!");
//釋放棧所佔用的空間
st.STFree(st);
}
}
/**
* 類型
*/
class DataStack{
String name ;
int age ;
}
/**
* 棧結構
*/
class StackType{
static final int MAXLEN = 50 ;
DataStack[] data = new DataStack[MAXLEN + 1] ; //數據元素
int top ;
StackType STInit(){
StackType p ;
//申請棧內存
if((p = new StackType()) != null){
//設置棧頂為 0
p.top = 0 ;
//返回指向棧的引用
return p ;
}
return null ;
}
//判斷棧是否為空
boolean SLIsEmpty(StackType s){
boolean t ;
t = (s.top == 0) ;
return t ;
}
//判斷棧是否已滿
boolean STIsFull(StackType s){
boolean t ;
t = (s.top == MAXLEN) ;
return t ;
}
//清空棧
void STClear(StackType s){
s.top = 0 ;
}
//釋放棧所佔用空間
void STFree(StackType s){
if(s != null){
s = null ;
}
}
//入棧
int PushST(StackType s ,DataStack data){
if((s.top+1) > MAXLEN){
System.out.print("棧溢出!\n");
return 0 ;
}
//將元素入棧
s.data[++ s.top] = data ;
return 1 ;
}
//出棧
DataStack PopST(StackType s){
if(s.top == 0){
System.out.print("棧為空!\n");
System.exit(0);
}
return (s.data[s.top --]) ;
}
//讀棧頂數據
DataStack PeekST(StackType s){
if(s.top == 0){
System.out.printf("棧為空!\n");
System.exit(0);
}
return (s.data[s.top]) ;
}
}
閱讀更多 給我一杯溫開水 的文章