中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ Hash表與鏈表結合應用

發布時間:2024-11-20 10:51:33 來源:億速云 閱讀:79 作者:小樊 欄目:編程語言

在C++中,哈希表(Hash Table)和鏈表(Linked List)可以結合應用,以實現更高效的數據存儲和訪問。哈希表提供了快速的查找、插入和刪除操作,而鏈表則提供了動態內存分配和插入操作的優勢。結合這兩種數據結構,可以實現一個高效的數據結構,既能夠快速查找數據,又能夠靈活地插入和刪除數據。

下面是一個簡單的示例,展示了如何將哈希表和鏈表結合應用:

#include <iostream>
#include <unordered_map>
#include <list>

template <typename Key, typename Value>
class HashLinkedList {
public:
    // 查找鍵對應的值
    Value get(const Key& key) const {
        auto it = hash_table.find(key);
        if (it != hash_table.end()) {
            return it->second;
        }
        return Value(); // 如果找不到,返回默認值
    }

    // 插入鍵值對
    void insert(const Key& key, const Value& value) {
        if (hash_table.find(key) == hash_table.end()) {
            hash_table[key] = value;
            linked_list.push_back(key);
        }
    }

    // 刪除鍵值對
    void remove(const Key& key) {
        auto it = hash_table.find(key);
        if (it != hash_table.end()) {
            hash_table.erase(it);
            // 從鏈表中刪除鍵
            auto list_it = std::find(linked_list.begin(), linked_list.end(), key);
            if (list_it != linked_list.end()) {
                linked_list.erase(list_it);
            }
        }
    }

private:
    std::unordered_map<Key, Value> hash_table; // 哈希表
    std::list<Key> linked_list; // 鏈表
};

int main() {
    HashLinkedList<int, std::string> hash_linked_list;
    hash_linked_list.insert(1, "one");
    hash_linked_list.insert(2, "two");
    hash_linked_list.insert(3, "three");

    std::cout << "Key 1: " << hash_linked_list.get(1) << std::endl;
    std::cout << "Key 2: " << hash_linked_list.get(2) << std::endl;
    std::cout << "Key 3: " << hash_linked_list.get(3) << std::endl;

    hash_linked_list.remove(2);

    std::cout << "After removing Key 2:" << std::endl;
    std::cout << "Key 1: " << hash_linked_list.get(1) << std::endl;
    std::cout << "Key 2: " << hash_linked_list.get(2) << std::endl;
    std::cout << "Key 3: " << hash_linked_list.get(3) << std::endl;

    return 0;
}

在這個示例中,我們定義了一個名為HashLinkedList的模板類,它包含一個哈希表(std::unordered_map)和一個鏈表(std::list)。哈希表用于存儲鍵值對,鏈表用于存儲鍵的順序。通過這種方式,我們可以在O(1)時間復雜度內查找鍵對應的值,同時保持插入和刪除操作的靈活性。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

美姑县| 道真| 鹤壁市| 洛浦县| 上杭县| 平塘县| 海兴县| 资讯| 姜堰市| 庆安县| 仙游县| 通州市| 集安市| 酒泉市| 肥城市| 三穗县| 古交市| 台山市| 榆林市| 米泉市| 建昌县| 星子县| 年辖:市辖区| 鹤庆县| 廊坊市| 景宁| 镇雄县| 宣武区| 勐海县| 新闻| 清镇市| 蓝山县| 永春县| 广灵县| 玉树县| 南川市| 石城县| 铁岭县| 卓尼县| 来安县| 彭阳县|