zoukankan      html  css  js  c++  java
  • 简单字典数据结构

     

    template <class key, class Elem, class keyCompare, class EECompare>
    class Dictionary
    {
    public:
     virtual void clear() = 0;
     virtual bool insert(const Elem&) = 0;
     virtual bool remove(const key&, Elem&) = 0;
     virtual bool remove_any(Elem&) = 0;
     virtual bool find(const key&, Elem&) = 0;
     virtual int size() = 0;
    }

    class intCompare
    {
     static bool lt(int x, int y)
     {
      return x < y;
     }

     static bool gt(int x, int y)
     {
      return x > y;
     }

     static bool eq(int x, int y)
     {
      return x == y;
     }
    }

    template <class key, class Elem, class keyCompare, class EECompare>
    class unsorted_array_based:public Dictionary<key, Elem, keyCompare, EECompare>
    {
    private:
     array_list<Elem>* list;
    public:
     unsorted_array_based(int size = defaultListSize)
     {
      list = new array_list<Elem>(size);
     }
     ~unsorted_array_based()
     {
      delete list;
     }
     void clear()
     {
      list->clear();
     }
     bool insert(const Elem& item)
     {
      return list->append(item);
     }
     bool remove(const key& k, Elem& e)
     {
      for (list->setStart(); list->getValue(e); list->next())
       if (keyCompare::eq(k,e))
       {
        list->remove(e);
        return true;
       }
      return false;
     }
     bool remove_any(Elem& e)
     {
      if (size()== 0)
       return false;
      list->setEnd();
      list->prev();
      list->remove(e);
      return true;
     }
     bool find(const key& k, Elem& e) const
     {
      for (list->setStart(); list->getValue(e); list->next())
       if (keyCompare::eq(k,e))
        return true;
      return false;
     }
     int size()
     {
      return list->leftLength() + list->rigthLength();
     }
    }

  • 相关阅读:
    Linux 改变文件的所有者
    Opencv -lippicv
    数据结构--二叉搜索树
    Window下cmd查看目录结构
    windows cmake与nmake
    Ubuntu18.04安装caffe python3.6 opencv3.2 CPU
    apt-get install 下载速度慢问题的解决
    使用pip安装速度慢问题的解决
    神经网络可视化
    【VS】代码行无法折叠及ctrl+鼠标左键无法跳转到定义的问题
  • 原文地址:https://www.cnblogs.com/seebro/p/2476551.html
Copyright © 2011-2022 走看看