数组实现

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背包的数组实现,链表实现的更多相关文章

  1. JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等

    概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...

  2. java中使用数组和链表简单实现SJBMap

    import java.util.LinkedList; public class SJBMap { private Object[] elementData; private int size; p ...

  3. 数组和链表--Java学习笔记(一)

    版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 我是一个全职妈妈,两年前在上海一家人力资源 ...

  4. 源码:Java集合源码之:数组与链表(一)

    数组和链表是数据结构中最基本的部分. 数组 在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据.那么这种结构的数据,在内存中是怎么存放的呢? 数组在内存中是一段连续的存储单元,每 ...

  5. 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树

    不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面 ...

  6. 栈的数组和链表实现(Java实现)

    我以前用JavaScript写过栈和队列,这里初学Java,于是想来实现栈,基于数组和链表. 下面上代码: import java.io.*; //用接口来存放需要的所有操作 interface st ...

  7. Java基础知识强化之集合框架笔记21:数据结构之 数组 和 链表

    1. 数组 2. 链表

  8. 栈的Java实现-分别使用数组和链表

    栈是非常重要的数据结构,栈具有后进先出的特点. 在JVM内部,每个线程维护一个栈,对于每个方法调用,入栈一个元素,成为栈帧,当方法执行完成后,对应的栈帧出栈. 栈帧中,也包含一个栈,称为操作数栈. 一 ...

  9. Java数据结构和算法之链表

    三.链表 链结点 在链表中,每个数据项都被包含在‘点“中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中 ...

随机推荐

  1. DAY11-MYSQL索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  2. 用JS,求斐波那契数列第n项的值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. jumpserver跳板机的搭建

    搭建的跳板机基于0.3.2,别问我为什么不用0.5版本的,我能说我没有搭建成功么,步骤贼多,功能不完善,不建议生产环境使用 步骤其实很简单: github wiki :https://github.c ...

  4. Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案

    Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误:Description Resource Path Location TypeDynamic Web Module 3.0 r ...

  5. Oracle pl/sql 基础入门语法

    PL/SQL是一种块结构的语言,这意味着PL/SQL程序被划分和编写代码的逻辑块.每块由三个子部分组成:1     声明 此部分开头使用关键字DECLARE.它是一个可选的部分,并限定在该程序中使用的 ...

  6. PHP处理密码的几种方式

    在 PHP中,经常会对用户身份进行认证.本文意在讨论对密码的处理,也就是对密码的加密处理. 1.MD5 相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这 ...

  7. Codeforces #495 Div2 problem E. Sonya and Ice Cream(1004E)

    网上的大多是用树的直径做的,但是一些比较巧妙的做法,来自https://www.cnblogs.com/qldabiaoge/p/9315722.html. 首先用set数组维护每一个节点所连接的边的 ...

  8. global作用域

    1   global在函数内部 $somevar=15; function addit () { GLOBAL $somevar; $somevar++ ; echo "somevar is ...

  9. Struts第三天

    OgnlValueStack贯穿整个 Action 的生命周期. 它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器.它的封装是由struts2框架完成的. ...

  10. Windows 安装 Microsoft Visual Studio 2010

    Windows 安装 VS2010 我的电脑系统:Windows 10 x64位 我要安装的Microsoft Visual Studio 是:VS2010 注意: VS2010 没有专门的64位版. ...