数组实现

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. springboot整合mybatis+generator

    源码地址:springboot-integration 如果你觉得解决了你使用的需求,欢迎fork|star.

  2. sql语句中的问号是干什么的???

    1.实例代码一: String sql = "SELECT userid,name FROM tuser WHERE userid=? AND password=?" ;  pst ...

  3. SQLiteopenhelper创建database的过程

    首先由于SQLiteOpenHelper是一个抽象类,所以我们要创建一个自己的类实现它,并实现抽象方法, public void onCreate(SQLiteDatabase db) public ...

  4. day69-oracle 22-DBCA

    只涉及到数据库的管理,不涉及到数据库的开发.不涉及到写SQL程序或者是写增删改查,不涉及到这些东西,也不涉及到事务. 你在安装oracle的时候它自动帮你创建一个数据库.

  5. POJ 1220 高精度/进制转换

    n进制转m进制,虽然知道短除法但是还是不太理解,看了代码理解一些了: 记住这个就好了: for(int k=0;l; ){ for(int i=l ; i>=1 ; i--){ num[i - ...

  6. 关于MySQL隐式转换

    一.如果表定义的是varchar字段,传入的是数字,则会发生隐式转换. 1.表DDL 2.传int的sql 3.传字符串的sql 仔细看下表结构,rid的字段类型: 而用户传入的是int,这里会有一个 ...

  7. WordCountPro小程序

    WordCountPro小程序 基本任务 1.githu地址 https://github.com/JarrySmith/WordCountPro 2.psp2.1表   PSP2.1 PSP阶段 预 ...

  8. spring、spring mvc以及IOC的阅读

    spring vs spring-mvc spring是应用级框架 spring mvc只是一个mvc框架 spring现在包含很多子模块,我们用的最多的是依赖注入. spring模块可分为以下: C ...

  9. Java50道经典习题-程序29 求矩阵对角线之和

    题目:求一个3*3矩阵对角线元素之和分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. 例如:下面矩阵的对角线之和为24 1 4 6 2 5 3 9 7 8 public cla ...

  10. Vue v-if ToolList

    可根据v-if="IsOk",动态判断标签是否展示 <template> <div id="app"> <input type=& ...