java链表实现Stack以及后缀表达式的实现

来源:互联网 发布:触摸展示一体机软件 编辑:程序博客网 时间:2024/04/29 05:37

栈的实现:

实现的功能:

1、清空  2、是否空  3、返回长度   4、push  5、pop




import java.util.ArrayList;

import java.util.EmptyStackException;


public class MyStack<AnyType>{
private int top;
ArrayList<AnyType> mystack=new ArrayList<>();

public void clear(){
top=0;
mystack.clear();
}
public MyStack(){
clear();
}
public boolean IsEmpty(){
return top==0;
}

public int Size(){
return top;
}


public boolean Push(AnyType c){
mystack.add(c);
top++;
return true;
}

public AnyType Pop(){
if (top==0)
throw new EmptyStackException();
top--;
AnyType temp=mystack.get(top);
mystack.remove(top);
return temp;
}

}


后缀表达式的实现:

public class MMM {
MyStack<Integer> ms=new MyStack<>();
String s="6523+8*+3+*";
public MMM() {
Mpush();
show();
}
void Mpush(){
for (int i=0;i<s.length();i++){
if (s.charAt(i)<'0'&&s.charAt(i)>9){
jude(s.charAt(i));
continue;
}
ms.Push((int)(s.charAt(i)-'0'));
}
}
void jude(char a){
int m1=ms.Pop();
int m2=ms.Pop();
int m3=0;
switch(a){
case '+':m3=m2+m1;break;
case '-':m3=m2-m1;break;
case '*':m3=m2*m1;break;
case '/':m3=m2/m1;break;
}
ms.Push(m3);
}
void show(){
while (!ms.IsEmpty())
System.out.println(ms.Pop());
}
public static void main(String[] args) {
MMM m=new MMM();
}
}