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

  • 相关阅读:
    Laravel 出现 No application encryption key has been specified.
    windows下用composer局部安装laravel
    vue组件--通讯录
    vue组件--TagsInput
    axios封装(二)队列管理
    axios封装(一)基础配置
    [git hooks] pre-commit 配置
    qs.js
    flexbox的应用
    盒子模型详解
  • 原文地址:https://www.cnblogs.com/seebro/p/2476551.html
Copyright © 2011-2022 走看看