`

字 典

阅读更多
字典:以集合为基础,并支持支持Member,Insert和Remove三种运算的抽象数据类型。
字典是一些元素的集合,每个元素有一个称作关键码的域,不同元素的关键码互不相同
组织方式:线性表,跳表(skip list),散列表(hash table)
线性表
#include<assert.h>

template<typename E,typename K>
class ChainNode{
public:
    E data;
    ChainNode<E,K> *link;
    ChainNode():link(NULL){};
    ChainNode(E& e1,ChainNode<E,K>*next=NULL):data(e1),link(next){};
};

template<typename E,typename K>
class SortedChain{
public:
    SortedChain(){
        first = new ChainNode<E,K>;
        assert(first!=NULL);
    }
    ~SortedChain();
    ChainNode<E,K> *Search(const K k1)const;
    void Insert(const K k1,E& e1);
    bool Remove(const K k1,E& e1);
    ChainNode<E,K> *Begin(){
        return first->link;
    }
    ChainNode<E,K> *Next(ChainNode<E,K> *current)const{
        if(current!=NULL)
            return current->link;
        return NULL;
    }
private:
    ChainNode<E,K> *first;
};

template<typename E,typename K>
ChainNode<E,K>* SortedChain<T>::Search(const K k1) const
{
    ChainNode<E,K> *p = first->link;
    while(p!=NULL&&p->data<k1)
        p = p->link;
    if(p!=NULL&&p->data==k1)
        return p;
    return NULL;
}

/*
  在大于k1之后插入e1,如果有k1用e1替换
  */
template<typename E,typename K>
void SortedChain<T>::Insert(const K k1, E &e1)
{
    ChainNode<E,K> *pre,*p,*newNode;
    p = first->link;
    pre = first;
    while(p!=NULL&&p->data<k1){
        pre = p;
        p = p->link;
    }
    if(p!=NULL&&p->data==k1){
        p->data = e1;
        return;
    }
    newNode = new ChainNode<E,K>(e1);
    assert(newNode!=NULL);
    newNode->link = p;
    pre->link = newNode;
}

/*
  删除k1
  */
template<typename E,typename K>
bool SortedChain<E,K>::Remove(const K k1, E &e1)
{
    ChainNode<E,K> *p,*pre;
    p = first->link;
    pre = first;
    while(p!=NULL&&p->data<k1){
        pre = p;
        p = p->link;
    }
    if(p!=NULL&&p->data==k1){
        pre->link = p->link;
        p->data = e1;
        delete p;
        return true;
    }
    return false;
}

分享到:
评论

相关推荐

    hutool.jar工具包+多音字词典文件.zip

    《Hutool工具包与多音字词典的深度解析》 在信息技术高速发展的今天,高效、便捷的工具包成为了开发者们的得力助手。本文将深入探讨“hutool.jar”工具包及其配套的“多音字词典”资源文件,帮助读者了解这两个组件...

    kindle古汉语常用字词典 简繁体

    《Kindle古汉语常用字词典》是一款专为学习古汉语设计的电子词典资源,适用于Kindle阅读设备或其对应的阅读应用。该词典包含了简体与繁体两种字体形式,旨在帮助用户理解和掌握古汉语中的常见词汇和用法。 在古汉语...

    从“异”字看三种甲骨文字词典存在的释义问题.pdf

    然而,在赵静的研究文章《从“异”字看三种甲骨文字词典存在的释义问题》中,揭示了现行甲骨文字词典在释义方面存在的问题,并以“异”字为例,详细分析了这些问题所在。 首先,赵静指出当前词典在引用词例的准确性...

    金山词霸2009日文字典

    为了让日语学习者能够更加便捷地获取语言资源,金山词霸推出了针对日语的电子词典——金山词霸2009日文字典。这款电子词典软件在2009年发布,它结合了强大的词库和便捷的操作方式,旨在为不同水平的日语学习者提供全...

    Unity 3D 4.0.晴窗文字典包

    晴窗文字典包”中,我们关注的是针对Unity 3D 4.0版本的一个特定汉化工具——晴窗文字典包。这个汉化包主要目标是为开发环境提供中文界面,以方便中国开发者更好地理解和使用Unity的各类功能。 Unity 3D 4.0是该...

    自开发的网络小字典程序

    《自开发的网络小字典程序》是一款个人学习成果展示的应用程序,旨在帮助用户整合并搜索网络上的资源。本文将详细介绍这款程序的核心功能、技术实现以及如何利用它进行有效查询。 首先,我们要理解网络小字典的核心...

    五笔字典 丁丁小字典(免注册版)

    《五笔字典 丁丁小字典》是一款专为学习和使用五笔输入法的用户设计的实用工具。这款软件提供了丰富的五笔编码查询功能,帮助用户快速掌握和使用五笔码,提高汉字录入效率。 五笔字典是基于五笔字型编码的查询系统...

    论文研究-无理数字典码的测试数据压缩方案.pdf

    提出了一种无理数字典码的测试数据压缩方案,能有效地压缩芯片测试数据。方案利用无理数序列建立字典,编码时只需进行相容性检查,无需填充无关位,简化了操作步骤;同时,选择局部压缩率最大的一组数据作为最终编码...

    统计数字次数字典法.py

    统计数字次数字典法.py

    python汉语多音字注音研究

    某个数据集上的准确率 = 该数据集中所有标注正确的多音字数 / 数据集中含有的多音字总数 4.10更新 之前的准确率计算有些问题,将和也算作多音字了,改正之后准确率变为85% - 88%。 我们试着增加了LSTM的层数,...

    东巴字典 东巴文字的查询字典

    可用于查询东巴文字,喜欢少数民族文字研究的童鞋可以看看。

    英语数字应用词典

    英语数字应用词典

    pinyin4j(解决多音字问题源码)

    《pinyin4j:解决中文多音字问题的利器》 在中文处理中,多音字是一个常见的挑战。多音字是指一个汉字有多个读音,根据不同的语境和组合,其发音会有所不同。例如,“长”既可以读作“cháng”,也可以读作“zhǎng...

    生成全四位数字组合的字典0000-9999

    生成全四位数字组合的字典0000-9999

    8位纯数字字典.zip

    自制8位纯数字字典,解压后大小953 MB。

    多音字大全(新华字典)

    近期做中文处理时,涉及到多音字的读音问题,于是参考《新华字典》整理出这份多音字大全。

    java多音字转拼音解决办法

    Java中的多音字转拼音是一项常见的任务,尤其是在处理中文文本时。多音字是指一个汉字有多个读音,根据不同的语境和组合可以有不同的发音。例如,“还”字就有“hái”和“huán”两种读音。在自然语言处理、语音...

    1-6位纯数字字典

    1-6位纯数字字典,亲手导出,已验证,解压大小9M左右。

    6位数字字典-破解使用

    6位数字字典 破解使用 破解使用 破解使用破解使用破解使用破解使用破解使用破解使用

Global site tag (gtag.js) - Google Analytics