模拟实现一个简单的中英互译字典——二叉搜索树的应用KV模型
2018-02-27 17:19
633 查看
模拟实现一个简单的中英互译字典
请模拟实现一个简单的中英互译字典,要求能实现简单的查找,插入新词以及删除操作;例如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); else return -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); else return 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; }
测试结果:
相关文章推荐
- 二叉搜索树应用-判断一个单词是否拼写正确,实现简单字典
- 一个应用二叉搜索树实现的字典,并存储结构于文件中
- 一个应用二叉搜索树实现的字典,并存储结构于文件中 选择自 nickhuang2002 的 Blog
- 一个简单模拟内存分配和释放的实现
- 实现一个简单的struts2应用(实现登陆)
- c#中泛型集合类的一个简单模拟实现
- AutoIT模拟实现一个简单的供销存的程序
- 协议实现:如何实现一个最简单的通信协议(线程模拟)
- iOS开发UI篇—实现一个简单的手势解锁应用(基本)
- J2ME应用实例——一个简单的计算器实现(附源代码)
- iOS开发UI基础—23使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- 一个简单的聊天室的实现----ICE应用系列文章之四
- iOS开发UI篇—实现一个简单的手势解锁应用(基本) - 文顶顶
- 协议设计:如何实现一个最简单的通信协议(线程模拟)
- AJAX实现一个简单的相册和里头包含一些DOM基础应用
- php接口技术实现一个简单的多态应用实例
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- 综合应用WPF/WCF/WF/LINQ之四十:实现一个简单的DataGrid之CheckBox已勾选的项的保存
- 用Python socket实现一个简单的http服务器(post 与get 的区别)、CGIHTTPServer 简单应用
- 用jsp实现一个简单的购物车web应用系统。实现的添加购物商品,删除购物商品并且显示购物车信息。