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();
}
}
}

最新文章

  1. 【repost】浏览器内核、渲染引擎、js引擎
  2. JS原生第五篇 (帅哥)
  3. Elasticsearch 运维实战之1 -- 集群规划
  4. [ubunut]打造Ubuntu下Java开发环境 (转)
  5. Windows Store App JavaScript 开发:文件选取器
  6. 菜鸟的IT生活4
  7. java 23 - 1 设计模式之工厂方法模式
  8. HDU 5145 NPY and girls 莫队+逆元
  9. 学习笔记--(平衡树)splay
  10. socket的心跳包机制
  11. Hammer.js移动端触屏框架的使用
  12. Objective-C 协议(接口)
  13. JavaEE Tutorials (14) - 用实体图创建获取计划
  14. VIM编辑器操作命令积累
  15. vim中文乱码问题
  16. JavaSE学习总结(十五)—— Java反射与注解
  17. Matlab实现BP网络识别字母
  18. frame嵌套页面元素的定位
  19. 【JS】 伪主动触发input:file的click事件
  20. [笔记] Delphi 10.2.1 Tokyo 安装使用笔记

热门文章

  1. 分布式技术 webservice
  2. mac 下面配置gradle
  3. scrapy的操作
  4. 0.00-050613_boot.s
  5. PHP的mail()函数可以实现直接用脚本发送邮件
  6. openGL 3.3+ 场景渲染
  7. 262. Trips and Users
  8. DataGrid合并单元格(wpf)
  9. jekyll+github搭建个人博客总结
  10. 如何显示u盘的隐藏的文件