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();
            }
        }
    }
  • 相关阅读:
    C#学习记录二:高级数据存储方式
    SharePoint 2010 匿名用户调用Client Object Model访问列表项
    Android 在闹钟开机时,如何解决开机动画没有播完就进入Launcher M
    Getting in Line UVA 216
    Android 如何关闭Navigation Bar M
    google protocol buffer 简介 版本 安装 使用 实例
    Android [VP]视频播放器播放本地视频时收到短信/彩信,需要界面提示 M
    Maven教程初级篇02:pom.xml配置初步
    当Ruby的model名字出错时,在现实view时显示错误的提示
    VS Code 安装 C++ 调试环境
  • 原文地址:https://www.cnblogs.com/program-ccc/p/5716315.html
Copyright © 2011-2022 走看看