java背包的数组实现,链表实现
数组实现
package base.structure; import java.lang.reflect.Array;
import java.util.Iterator; /**
* @program: Algorithm4J
* @description: 背包数组的实现
* @author: Mr.Dai
* @create: 2018-12-05 22:56
**/ class Bag<T> implements Iterable<T>{ int n;
T [] elements; Bag(){
elements= (T[]) new Object[20];
n=0;
} void add(T item){
if(n==elements.length){
T [] new_elements= (T[]) new Object[elements.length*2];
System.arraycopy(elements,0,new_elements,0,elements.length);
elements=new_elements;
}
elements[n++]=item;
} boolean isEmpty(){
return n==0;
}
int Size(){
return n;
} @Override
public Iterator<T> iterator() {
return new BagIterator();
} class BagIterator implements Iterator<T>{ private int i=0;
@Override
public boolean hasNext() {
return i<n;
} @Override
public T next() {
return elements[i++];
}
}
} public class BagForArray { public static void main(String[] args) {
Bag<Integer> bag = new Bag<>();
bag.add(1);
bag.add(2);
for (int i = 0; i < 3; i++) {
bag.add(4);
}
Iterator<Integer> iterator = bag.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
} } }
链表的实现
package base.structure; import java.util.Iterator;
import java.util.NoSuchElementException; /**
* @program: Algorithm4J
* @description: 背包逆序链表实现
* @author: Mr.Dai
* @create: 2018-12-06 10:25
**/ class Bags<T> implements Iterable<T>{ int n;
Node<T> fisrt; /**
* 构建一个链表类
* @param <T>
*/
private static class Node<T>{
T val;
Node<T> next;
} /**
* 有头结点才能正序取到值
*/
Bags(){
fisrt=null;
n=0;
} void add(T item){
Node<T> old_Node=fisrt;
fisrt=new Node<>();
fisrt.val=item;
fisrt.next=old_Node;
n++;
} boolean isEmpty(){
return fisrt==null;
} int Size(){
return n;
} @Override
public Iterator<T> iterator() {
return new BagsIterator(fisrt);
} class BagsIterator implements Iterator<T>{ private Node<T> current; BagsIterator(Node<T> item){
current=item;
}
public void remove(){
throw new UnsupportedOperationException();
} @Override
public boolean hasNext() {
return current!=null;
} @Override
public T next() {
if(!hasNext()) throw new NoSuchElementException();
T item=current.val;
current=current.next;
return item;
}
} } public class BagForLinked { public static void main(String[] args) {
Bags<String> bag=new Bags<>(); bag.add("a");
bag.add("b");
bag.add("c");
bag.add("d"); for (String s : bag) {
System.out.println(s);
} }
}
java背包的数组实现,链表实现的更多相关文章
- JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等
概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...
- java中使用数组和链表简单实现SJBMap
import java.util.LinkedList; public class SJBMap { private Object[] elementData; private int size; p ...
- 数组和链表--Java学习笔记(一)
版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 我是一个全职妈妈,两年前在上海一家人力资源 ...
- 源码:Java集合源码之:数组与链表(一)
数组和链表是数据结构中最基本的部分. 数组 在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据.那么这种结构的数据,在内存中是怎么存放的呢? 数组在内存中是一段连续的存储单元,每 ...
- 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树
不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面 ...
- 栈的数组和链表实现(Java实现)
我以前用JavaScript写过栈和队列,这里初学Java,于是想来实现栈,基于数组和链表. 下面上代码: import java.io.*; //用接口来存放需要的所有操作 interface st ...
- Java基础知识强化之集合框架笔记21:数据结构之 数组 和 链表
1. 数组 2. 链表
- 栈的Java实现-分别使用数组和链表
栈是非常重要的数据结构,栈具有后进先出的特点. 在JVM内部,每个线程维护一个栈,对于每个方法调用,入栈一个元素,成为栈帧,当方法执行完成后,对应的栈帧出栈. 栈帧中,也包含一个栈,称为操作数栈. 一 ...
- Java数据结构和算法之链表
三.链表 链结点 在链表中,每个数据项都被包含在‘点“中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中 ...
随机推荐
- select 动态添加option函数
转自:https://lym6520.iteye.com/blog/309937 经常会用到select动态添加元素,写了个方法,方便调用! ... /** * 功能:select对象动态添加Opt ...
- DAY13-前端之BOM和DOM
前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...
- Python之POST登录测试
不解释,直接上代码: #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @version: v1.0 @author ...
- volatile关键字在多线程中的作用
- 如何选择RDBMS关系型数据库和Nosql非关系型数据库?
RDBMS关系型数据库和Nosql非关系型数据库区别: 一.RDBMS是关系型数据库模式: 1.二维模式,由行列组成. 2.非常强调事务原子性,例如用户提出一个请求,DB完整的去执行,如果报错就全部回 ...
- cf688B-Lovely Palindromes
http://codeforces.com/problemset/problem/688/B B. Lovely Palindromes time limit per test 1 second me ...
- Struts2框架06 ValueStack
原文地址:点击前往 1 什么是ValueStack 称为值栈,Struts提供的共享数据的数据结构 2 为什么要使用ValueStack 从控制器向浏览器传递数据 存储与请求相关的对象信息(sessi ...
- 安装Fastqc软件遇到的坑
由于之前的HPC太难用了,所以决定搬家到十楼的工作站,于是就免不了配置必要的工作环境,其中一个少不了要安装的软件是就是fastqc,因为它太常用了. 我先是用conda安装,因为conda实在是太方便 ...
- conda 添加bioconda源,创建/删除/重命名环境
1.conda安装 在https://repo.continuum.io/miniconda/选择conda版本 wget "https://repo.continuum.io/archiv ...
- javax.swing.Timer
javax.swing 类 Timer java.lang.Object javax.swing.Timer 所有已实现的接口: Serializable public class Timerexte ...