zoukankan      html  css  js  c++  java
  • Java栈,队列,优先队列的使用

    1. 栈的使用:

    import java.util.*;
    public class Main{
        
        public static void main(String[] args){
            Deque<String> stack = new LinkedList();
            stack.push("student");
            stack.push("teacher");
            stack.push("president");//push:入栈
            while(!stack.isEmpty())//检查栈空
            {    
                String s=stack.pop();//pop:出栈
                System.out.println(s);
            }
        }
    }

    2.队列的使用:

    import java.util.*;
    public class Main{
        
        public static void main(String[] args){
            Deque<String> que = new LinkedList();
            que.offer("BJ");
            que.offer("HZ");
            que.offer("CQ");//offer:入栈
            while(!que.isEmpty())//检查栈空
            {
                String s=que.pop();//pop:出栈
                System.out.println(s);
            }
        }
    }

    LinkedList类内部使用双链表实现,插入、删除效率较高。

     3.优先队列的使用

     方式一:在类中定义比较函数,实现Comparable接口。

    import java.util.*;
    class Edge implements Comparable{
        String to;
        int w;
        Edge(){}
        Edge(String to,int w)
        {
            this.to=to;
            this.w=w;
        }
        public int compareTo(Object o)
        {
            Edge e=(Edge)o;
            return w-e.w;    //由小到大
        }
    }
    public class Main{
        
        public static void main(String[] args){
            PriorityQueue<Edge> pque=new PriorityQueue();
            pque.offer(new Edge("SH",6));
            pque.offer(new Edge("WH",9));
            pque.offer(new Edge("CQ",1));
            while(!pque.isEmpty())
            {
                Edge e= pque.poll();
                System.out.println(e.to+", "+e.w);
            }
        }
    }

    方式二:定义比较类,实现Comparator接口。

    import java.util.*;
    class Edge{
        String to;
        int w;
        Edge(){}
        Edge(String to,int w)
        {
            this.to=to;
            this.w=w;
        }
    }
    class Comp implements Comparator<Edge>{
        public int compare(Edge e1,Edge e2)
        {
            return e1.w-e2.w;//由小到大排序
        }
    }
    public class Main{
        
        public static void main(String[] args){
            PriorityQueue<Edge> pque=new PriorityQueue(new Comp());
            pque.offer(new Edge("HJ",17));
            pque.offer(new Edge("HN",34));
            pque.offer(new Edge("NJ",12));
            while(!pque.isEmpty())
            {
                Edge e=pque.poll();
                System.out.println(e.to+", "+e.w);
            }
        }
    }

    4.用邻接表存储图。

    import java.util.*;
    class Edge{
        String to;
        int w;
        Edge(){}
        Edge(String to,int w)
        {
            this.to=to;
            this.w=w;
        }
    }
    public class Main{
        
        public static void main(String[] args){
            ArrayList<Edge>[] arc=new ArrayList[2];
            arc[0] = new ArrayList<Edge>();
            arc[0].add(new Edge("HJ",28));
            arc[0].add(new Edge("SH",21));
            arc[1] = new ArrayList<Edge>();
            arc[1].add(new Edge("NJ",12));
            arc[1].add(new Edge("SZ",19));
            for(int i=0;i<arc.length;i++)
            {
                for(int j=0;j<arc[i].size();j++)
                {
                    Edge e=arc[i].get(j);
                    System.out.print(e.to+", "+e.w+"  ");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    [图解算法] 最短路径算法之 “Dijikstra”
    [前端随笔][CSS] 伪类的应用
    [前端随笔][JavaScript] 实现原生的事件监听<Vue原理>
    [图解算法] 最短路径算法之 “Floyd”
    [前端随笔][JavaScript][自制数据可视化] “中国地图”
    [前端随笔][JavaScript] 懒加载的实现(上划一次加载一部分)
    [前端随笔][CSS] 制作一个加载动画 即帖即用
    ThinkPHP下隐藏index.php以及URL伪静态
    PHP基础语法3
    PHP基础语法2
  • 原文地址:https://www.cnblogs.com/program-ccc/p/5716315.html
Copyright © 2011-2022 走看看