自定义栈

接口

package com.test.custom;

public interface IStack<E> {
E pop();
void push(E e);
E peek();
int size();
boolean empty();
void clear();
}

实现类

package com.test.custom;

import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List; public class CustomStack<E> implements IStack<E>{ List<E> list =new ArrayList<E>(); @Override
public E pop() {
// TODO Auto-generated method stub
E e = peek();
list.remove(list.size()-1); return e;
} @Override
public void push(E e) {
// TODO Auto-generated method stub
list.add(e);
} @Override
public E peek() {
// TODO Auto-generated method stub
int len = list.size();
if(len==0){
throw new EmptyStackException();
}
return list.get(len-1);
} @Override
public int size() {
// TODO Auto-generated method stub
return list.size();
} @Override
public boolean empty() {
// TODO Auto-generated method stub
return size()==0;
} @Override
public void clear() {
// TODO Auto-generated method stub
list.clear();
} }

测试

package com.test.custom;

public class TestStack {
public static void main(String[] args) { CustomStack<String> stack =new CustomStack<String>();
for(int i =0 ; i < 4 ; i++){
stack.push(""+(char)('A'+i));
} System.out.println(stack.peek());
System.out.println(stack.size());
System.out.println(stack.pop());
System.out.println(stack.size());
System.out.println(stack.peek());
stack.push("hello");
System.out.println(stack.size());
for(int i=0;i<5;i++){
System.out.println(stack.pop());
System.out.println(stack.size());
} }
}


自定义队列

接口

package com.test.custom;

public interface IQueue<E> {
boolean offer(E e); //超过容量就抛出 IllegalStateException
E peek();//获取列头不移除,队列为null返回null
E poll(); //获取并且移除列头
int size();
boolean isEmpty(); }
package com.test.custom;

import java.util.ArrayList;
import java.util.List; public class CustomQueue<E> implements IQueue<E>{ List<E> list =new ArrayList<E>();
private int size;
@Override
public boolean offer(E e) {
// TODO Auto-generated method stub
if(list.size()>=size){
throw new IllegalArgumentException();
}
list.add(e);
return true;
} @Override
public E peek() {
// TODO Auto-generated method stub if(size() == 0) return null;
return list.get(0);
} @Override
public E poll() {
// TODO Auto-generated method stub
E e = peek();
if(size()>0) list.remove(0);
return e;
} @Override
public int size() {
// TODO Auto-generated method stub
return list.size();
} @Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return list.size()==0;
} public CustomQueue(int size) { this.size = size;
} }

测试

package com.test.custom;

public class TestQueue {
public static void main(String[] args) {
CustomQueue<String> stack =new CustomQueue<String>(4);
for(int i =0 ; i < 4 ; i++){
stack.offer(""+(char)('A'+i));
} System.out.println(stack.peek());
System.out.println(stack.size()); System.out.println(stack.poll());
System.out.println(stack.size()); System.out.println(stack.peek());
System.out.println(stack.size()); stack.offer("hello");
System.out.println(stack.size()); for(int i=0;i<5;i++){
System.out.println("i:"+stack.poll()); } for(int i =0 ; i < 5 ; i++){
stack.offer(""+(char)('A'+i));
} } }

最新文章

  1. Ambari服务依赖关系图生成脚本
  2. xen下离线读取虚拟机磁盘镜像的补丁
  3. SqlServer性能优化 提高并发性能(八)
  4. ubuntu14.04安装bodhi桌面系统后,unity启动界面改变,如何还原
  5. django复习笔记2:models
  6. zabbix_agent安装(Centos+Ubuntu)
  7. 使用jquery制作可视化的组织结构
  8. Nodejs解决2分钟限制
  9. Git教程(4)常用小技巧之标签
  10. 批量除去php页面的bom,页面meta跑到body中就是这个问题
  11. Android Studio IDE 所遇问题汇总
  12. hdu 5724 Chess 博弈
  13. 【集训笔记】母函数【母函数模板】【HDOJ1028【HDOJ1085
  14. 使用Three.js网页引擎创建酷炫的3D效果的标签墙
  15. Windows下使用service.bat安装tomcat服务, 启动停止tomcat服务
  16. Visual Studio 代码快捷键
  17. centos7更改网卡名
  18. Dbzoj#3188. [Coci 2011]Upit
  19. 【科技】扩展Lucas随想
  20. [Openwrt扩展中篇]添加Aria2和webui

热门文章

  1. CSS属性继承
  2. Linux gzip: stdin: not in gzip format
  3. C#基础知识1-深入理解值类型和引用类型
  4. iOS中点击按钮跳转到外部浏览器和内部打开
  5. Thymeleaf常用语法:数据迭代
  6. python进程池和进程锁
  7. Octave移动数据
  8. Java实战|Tomcat+Servlet+Sql开发简单网站,从配置环境开始
  9. 201871010105-曹玉中《面向对象程序设计(Java)》第一周学习总结
  10. 201871010133-赵永军《面向对象程序设计(java)》第一周学习总结