前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构----背包

数据结构----背包

作者头像
SuperHeroes
发布2018-05-30 17:15:23
6640
发布2018-05-30 17:15:23
举报
文章被收录于专栏:云霄雨霁云霄雨霁

我们可以设计一个背包API:

代码语言:javascript
复制
 public class Bag<Item> implements Iterable<Item>
               bag()                             创建一个背包
       void add(Item item)              添加一个元素
 boolean isEmpty()                       背包是否为空
          int size()                              背包中的元素数量
 

使用链表实现背包类(其中实现了迭代器):

代码语言:javascript
复制
public class Bag<Item> implements Iterable<Item> {
    private Node first;
    private int n; 

    private class Node {  //结点类
        private Item item;
        private Node next;
    }
    public Bag() 
    {first = null; n = 0;}

    public boolean isEmpty()  { return first == null; }
    public int size() {   return n;}

    public void add(Item item) { 
        Node oldfirst = first;
        first = new Node();
        first.item = item;
        first.next = oldfirst;
        n++;
    }
    public Iterator<Item> iterator()  {  return new ListIterator();  }

    private class ListIterator implements Iterator<Item> {   //迭代器
        private Node current;
        public ListIterator() {  current = first; }
        public boolean hasNext() { return current != null;}
        public void remove() { throw new UnsupportedOperationException();}
        public Item next() {
            if (!hasNext()) throw new NoSuchElementException();
            Item item = current.item;
            current = current.next; 
            return item;
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档