BagTest

复制代码
package cn.aust.zyw.demo;

import java.util.Iterator;

/**
 * Created by zyw on 2016/2/17.
 */
public class BagTest {
    public static void main(String args[]){
        Bag<Double> bag=new Bag<Double>();
        for(int i=0;i<4;i++){
            bag.add(i*1.0);
        }
        int N=bag.size();
        double sum=0.0;
        /*for(double x:bag){
            sum+=x;
        }*/
        for(Iterator<Double> iter = bag.iterator();iter.hasNext();){
            sum=sum+iter.next();
        }
        double mean=sum/N;
        System.out.printf(sum+" ");
        System.out.printf(mean+"");

    }
}
复制代码
复制代码
package cn.aust.zyw.demo;

import java.util.Iterator;

/**
 * Created by zyw on 2016/2/17.
 */
public class Bag<T> implements Iterable<T> {
    private LinkedList<T> myList;
    private int size=0;
    Bag(){
        myList=new LinkedList<T>();
    }
    void add(T item){
        myList.add(item);
        ++size;
    }

    boolean isEmpty(){
        return  (myList.size==0);
    }
    int size(){
        return size;
    }

    @Override
    public Iterator<T> iterator() {
        return new Iterator<T>(){
             public int i=0,k=0;
            @Override
            public boolean hasNext() {
             if(i<size()){
                 i++;
                return true;

                }
              return false;
            }

            @Override
            public T next() {
                return myList.get(k++);
            }
        };
    }
}
复制代码
复制代码
package cn.aust.zyw.demo;

/**
 * Created by zyw on 2016/2/17.
 */
public class LinkedList<E> {
    public Node<E> header=null;
    public Node<E> end=null;
    int size=0;
    public LinkedList(){
        this.header=new Node<E>();
    }
    /**
     * 添加新的节点
     * */
    public boolean add(E e){
        //这里从header就是其中的一个节点
        if(size==0){
            header.e=e;
            end=header;
        }else{
            Node<E> newnode=new Node<E>(e);
            end.addNext(newnode);
            end=newnode;
        }
        size++;
        return true;
    }

    /**
     * 根据索引得到该节点的值
     * */
    public E get(int index){
        return getNode(index).e;
    }
    /**
     * 根据index得到该节点
     * */
    private Node<E> getNode(int index){
        if(index<0||index>size-1)//从第0个开始算起
            throw new RuntimeException("当前index值错误:"+index);
        Node<E> temp=new Node<E>();
        temp=header;
        int count=0;
        while(index!=count){
            temp=temp.next;
            count++;
        }
        return temp;
    }
    /*
     * 用来存放数据的节点型内部类
     * */
    private class Node<e>{
        private E e;
        Node<E> next=null;
        Node(){}
        Node(E e){
            this.e=e;
        }
        //可以用这个简化
        void addNext(Node<E> node){
            this.next=node;
        }
    }
}
复制代码

 

posted @   不被女生喜欢好多年  阅读(257)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示