Java的数据结构

Posted biyangqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的数据结构相关的知识,希望对你有一定的参考价值。

1.背包

PS:不支持删除元素的数据集合;他的目的就是帮组收集元素和遍历元素。

2.迪杰斯特拉双栈算数表达式

import java.util.*;
 /**
  * 每个式子必须加上括号,效果不好
  * (2+6*(2+2))
  * @author bee
  *
  */
public class Main{
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            Stack<String> ops = new Stack<>();
            Stack<Double> vals = new Stack<>();
            String str = sc.nextLine();
            for(int i=0;i<str.length();i++){
                String s = str.charAt(i)+"";
                if(s.equals("(")){
                    
                }else if(s.equals("+")){
                    ops.push(s);
                }else if(s.equals("-")){
                    ops.push(s);
                }else if(s.equals("*")){
                    ops.push(s);
                }else if(s.equals("/")){
                    ops.push(s);
                }else if(s.equals(")")){//弹出运算符和操作数,计算结果压入栈
                    String op = ops.pop();
                    Double v = vals.pop();
                    if(op.equals("+")){
                        v = vals.pop()+v;
                    }else if(op.equals("-")){
                        v = vals.pop()-v;
                    }else if(op.equals("*")){
                        v = vals.pop()*v;
                    }else if(op.equals("/")){
                        v = vals.pop()/v;
                    }
                    vals.push(v);
                }else{//非运算符和非括号,直接double压入栈中
                    vals.push(Double.parseDouble(s));
                }
            }
            
            System.out.println(vals.pop());
        }
        sc.close();
    }
     
  
}

3.java数据结构

 

以上是关于Java的数据结构的主要内容,如果未能解决你的问题,请参考以下文章

创建片段而不从 java 代码实例化它

# Java 常用代码片段

# Java 常用代码片段

java 代码片段【JAVA】

LockSupport.java 中的 FIFO 互斥代码片段

java 代码片段