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对象中 ...
随机推荐
- myeclipse10启动service窗口报异常
1:找到与之对应的tomcat: 2:删掉“.metadata/.plugins/org.eclipse.core.runtime/.settings/ com.genuitec.eclipse.as ...
- GridControl 隐藏Drag a column header here to group by that column
解决方案: 打开设计器,找到OptionsView,往下拉设置showGroupPanel为false
- new与delete,malloc与free
1.new_delete与malloc_free ❶malloc/free: malloc原型: void *malloc(long NumBytes) 该函数分配了NumBytes个字节,并返回了指 ...
- android 自定义控件之事件
首先,继承需要扩展的VIEW,然后在里面添加一个自己的事件方法,例如, oniconclick(myinterface pinterface){ minterface = pinterface; } ...
- 卸载phonegap
npm uninstall cordova -gnpm uninstall phonegap -g
- eclipse java 注释模板配置详解
设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元 ...
- iOS UITableView制作类似QQ好友列表视图
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDele ...
- 使用jar打war包或解压war包
进入Dos命令行,并到目标文件夹,如C:\Temp,待打包的内容在C:\Temp\Blog里,目标,把Blog里的相应文件打成war报 1.打包 C:\Temp\jar -cvf Blog.war . ...
- 使用bat一键打开java、jar、py文件
直接运行jar是没有命令行窗口的,如果想有命令行窗口,一般来说是要 win+r 运行cmd,定位到所在目录,然后用命令行执行 java -jar xxx.jar 而对于python,打开py文件也是麻 ...
- oracle connect by 递归,反递归,自动补全查询实现
递归: select * from t_pams_solution t start with t.id is null connect by prior id = t.parent_id ...