模拟实现一个简单的中英互译字典——二叉搜索树的应用KV模型

2024-01-11 15:10

本文主要是介绍模拟实现一个简单的中英互译字典——二叉搜索树的应用KV模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模拟实现一个简单的中英互译字典


    请模拟实现一个简单的中英互译字典,要求能实现简单的查找插入新词以及删除操作;例如

BinaryTree.h

#pragma once#include <stdio.h>
#include <stdlib.h>//二叉搜索树的应用
//1. 请模拟实现一个简单的中英互译的字典typedef char* KeyType;
typedef char* ValueType;typedef struct BSTreeNode
{struct BSTreeNode* _left;struct BSTreeNode* _right;KeyType _key;ValueType _value;
}BSTreeNode;BSTreeNode* BuyBSTreeNode(KeyType key, ValueType value)
{BSTreeNode* tree = (BSTreeNode*)malloc(sizeof(BSTreeNode));tree->_key = key;tree->_value = value;tree->_left = NULL;tree->_right = NULL;return tree;
}int BSTreeInsertR(BSTreeNode** ppTree, KeyType key, ValueType value)
{if (*ppTree == NULL){*ppTree = BuyBSTreeNode(key, value);return 0;}if (key < (*ppTree)->_key)BSTreeInsertR(&(*ppTree)->_left,key,value);if (key >(*ppTree)->_key)BSTreeInsertR(&(*ppTree)->_right, key, value);elsereturn -1;
}BSTreeNode* BSTreeFindR(BSTreeNode* tree, KeyType key)
{if (tree == NULL)return NULL;if (key < tree->_key)return BSTreeFindR(tree->_left,key);if (key > tree->_key)return BSTreeFindR(tree->_right, key);elsereturn tree;
}int BSTreeRemoveR(BSTreeNode** ppTree,KeyType key)
{if (*ppTree == NULL)return -1;if (key < (*ppTree)->_key)return BSTreeRemoveR(&(*ppTree)->_left,key);if (key >(*ppTree)->_key)return BSTreeRemoveR(&(*ppTree)->_left, key);else{BSTreeNode* cur = *ppTree;if (cur->_left == NULL)*ppTree = cur->_right;if (cur->_right == NULL)*ppTree = cur->_left;else{BSTreeNode* sub = (*ppTree)->_right;while (sub->_left){sub = sub->_left;}(*ppTree)->_key = sub->_key;(*ppTree)->_value = sub->_value;sub = sub->_right;}return 0;}
}void TestBSTree()
{BSTreeNode* tree = NULL;BSTreeInsertR(&tree, "tree", "树");BSTreeInsertR(&tree, "sort", "排序");BSTreeInsertR(&tree, "binary", "二分");BSTreeInsertR(&tree, "return", "返回");BSTreeInsertR(&tree, "hash", "哈希");BSTreeInsertR(&tree, "list", "链表");printf("tree: %s\n", BSTreeFindR(tree, "tree")->_value);printf("return: %s\n", BSTreeFindR(tree, "return")->_value);printf("hash: %s\n", BSTreeFindR(tree, "hash")->_value);printf("list: %s\n", BSTreeFindR(tree, "list")->_value);
};

test.c

#include <windows.h>
#include "BinaryTree.h"int main(void)
{TestBSTree();system("pause");return 0;
}

测试结果:
这里写图片描述

这篇关于模拟实现一个简单的中英互译字典——二叉搜索树的应用KV模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/594782

相关文章

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Python实现文件下载、Cookie以及重定向的方法代码

《Python实现文件下载、Cookie以及重定向的方法代码》本文主要介绍了如何使用Python的requests模块进行网络请求操作,涵盖了从文件下载、Cookie处理到重定向与历史请求等多个方面,... 目录前言一、下载网络文件(一)基本步骤(二)分段下载大文件(三)常见问题二、requests模块处理

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一