数组实现

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. spring整合mybatis的事物管理配置

    一.基本配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/ ...

  2. 多线程 wait(),notify()方法,案例总结

    废话不多说,案例如下 package com.xujingyang.Exok; /** * 商品类 * @author 徐景洋 */ public class Goods { private Stri ...

  3. css 层叠式样式表(2)

    一,样式表分类 (1)内联样式. --优先级最高,代码重复使用最差. (当特殊的样式需要应用到单独某个元素时,可以使用. 直接在相关的标签中使用样式属性.样式属性可以包含任何 CSS 属性.) (2) ...

  4. CF 1027E Inverse Coloring

    当天晚上并没有看懂题意,然后就刚了40分钟F,但是没有弄出来呜呜呜. 推荐博客:  https://blog.csdn.net/Dream_maker_yk/article/details/81840 ...

  5. scau 2015寒假训练

    并不是很正规的.每个人自愿参与自愿退出,马哥找题(马哥超nice么么哒). 放假第一周与放假结束前一周 2015-01-26 http://acm.hust.edu.cn/vjudge/contest ...

  6. Python程序设计6——面向对象

    面向对象有三大特征:多态(对应方法覆写).封装.继承(对应方法重载),这个在Java中已经说得很详细了,这里面只是介绍Python在这三个特性方面的实现. 1 创建自定义类 Python和Java一样 ...

  7. Person.delete请求----强大的bug---下班之前总结整个过程

    默认访问的是: findAll(query) 还有个findAll(ids,query) 只有findAll才调用了findEntity->findById: 那么我重写了findById,查询 ...

  8. 炫酷实用的CSS3代码垂直手风琴菜单

    今天在微博上看到别人分享的代码,自己拿来自己保存着. 代码效果如下: 下面是源码: index.html <!DOCTYPE html> <html > <head> ...

  9. Excel课程学习第二课单元格格式设置

    今天要讲的是单元格格式的设置,字体字号的设置,边框设置,合并单元格之类的. 下面看看具体的内容: 1.使用单元格格式工具美化表格 1.1设置单元格格式的对话框在哪里? 下图中三个小箭头都能打开设置单元 ...

  10. 格式化字符串攻击原理及示例.RP

    格式化字符串攻击原理及示例 一.类printf函数簇实现原理 类printf函数的最大的特点就是,在函数定义的时候无法知道函数实参的数目和类型. 对于这种情况,可以使用省略号指定参数表. 带有省略号的 ...