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

  • 相关阅读:
    ffmpeg和opencv 播放视频文件和显示器
    ExtJS学习笔记:定义extjs类别
    debian软件安装基础(同tomcat案件)
    java逼出来的递归中间
    HDOJ 1047 Integer Inquiry
    BZOJ 3589 动态树 树链拆分+纳入和排除定理
    hdu 4884 TIANKENG’s rice shop(模拟)
    JQuery EasyUI学习框架
    excel
    Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
  • 原文地址:https://www.cnblogs.com/seebro/p/2476551.html
Copyright © 2011-2022 走看看