• 简单字典数据结构


     

    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();
     }
    }

  • 相关阅读:
    抓取用户openid
    getaccesstoken方法
    https_request请求接口返回数据
    composer安装
    Linux下mysql数据库root无法登录的情况
    nginx安装
    shell脚本采用crontab定时备份数据库日志
    Python之元类详细解析
    Python面向对象之封装、property特性、绑定方法与非绑定方法
    Python之面向对象的组合、多态、菱形问题、子类中重用父类的两种方式
  • 原文地址:https://www.cnblogs.com/seebro/p/2476551.html
Copyright © 2020-2023  润新知