英汉字典源代码
C语言电子词典程序设计
C语言电子词典程序设计```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_WORD_LEN 100#define MAX_DEF_LEN 500typedef struct DictEntrychar word[MAX_WORD_LEN];char definition[MAX_DEF_LEN];} DictEntry;int maiint numEntries;DictEntry* dict;char searchWord[MAX_WORD_LEN];printf("请输入词典条目数量:");scanf("%d", &numEntries);dict = (DictEntry*)malloc(numEntries * sizeof(DictEntry)); //输入词典条目for (int i = 0; i < numEntries; i++)printf("请输入词汇:");scanf("%s", dict[i].word);printf("请输入词汇的定义:");scanf(" %[^\n]s", dict[i].definition);}//查询词汇printf("请输入要查询的词汇:");scanf("%s", searchWord);for (int i = 0; i < numEntries; i++)if (strcmp(dict[i].word, searchWord) == 0) printf("查询结果:\n");printf("词汇:%s\n", dict[i].word);printf("定义:%s\n", dict[i].definition); break;}}free(dict);return 0;```以上是一个简单的C语言电子词典程序设计示例,它通过结构体数组存储词汇和对应的定义。
数据结构 C++ 简单英汉字典 实验报告
实验报告:简单英汉字典2011-12-22实现目标及要求:1)利用散列表实现英汉字典;2) 实现散列表类,要求实现一种散列表:•散列函数选取建议:将单词转成整数,再用除留余数法获得散列地址。
•冲突解决方法可采用开散列法。
3)实现字典类,字典数据存放在内存,字典类中有两个重要数据成员:•字典数组:存放字典数据的数组(或线性表)。
•散列表对象:作为字典数据索引的散列表。
–散列表元素结构包含单词和对应字典数据在字典数组中的下标,可通过散列表直接获得单词在字典数组的下标。
4)利用上面两个类实现英汉字典。
5)界面要求:键盘输入单词,屏幕输出解释:–界面菜单项:•1.添加新词•2.删除单词•3.查字典–查字典界面:•请输入英文单词:China•中文翻译:中国实验环境与工具:使用Microsoft Visual Studio 2010 在Windows7 64位环境下进行实验。
实验思路:分如下N步:1.先实现链结点类的结构。
2.实现字典类的结构。
3.实现词条类的结构。
4.实现词条的散列表分类方法。
5.整合功能。
主要的数据结构如下://Hash_head.h#include<assert.h>#include<string>#include<stdlib.h>using namespace std;const int defaultDicSize=10;const int defaultTableSize=10;class ChainNode{public:Entry<string> EntryLink;ChainNode *link;};template<class E>class Dictionary{public:Dictionary(E e[]);~Dictionary(){delete []ht;}bool search(string,string &);bool search(string,string &,ChainNode *&);bool insert(E);bool insert(string,string);bool remove(string);void dicPos(E e[]);void outputDic();private:ChainNode *ht;int dicSize;//总词条数int tableSize;//每个索引容量};template<class E>Dictionary<E>::Dictionary(E e[]){//计算词条数,作为字典最大长度dicSize=0;while(e[dicSize].chinese!=""){dicSize++;}//初始化字典ht=new ChainNode[dicSize];for(int i=0;i<dicSize;i++){ht[i].link=NULL;ht[i].EntryLink=Entry<string>();}}template<class E>void Dictionary<E>::dicPos(E e[]){int i;ChainNode *p;for(i=0;i<dicSize;i++){insert(e[i]);}}template<class E>bool Dictionary<E>::insert(E ent){int k;ChainNode *p1,*p2;tableSize=5;k=ent.firstLetter()%tableSize;p1=&ht[k];if(p1->link!=NULL){p1=p1->link;while(p1->link!=NULL){p1=p1->link;}}p2=new ChainNode;p2->EntryLink=ent;p2->link=NULL;p1->link=p2;return 0;}template<class E>bool Dictionary<E>::insert(string str1,string str2){ Entry<string> *e=new Entry<string> (str1,str2);insert(*e);return 1;}template<class E>void Dictionary<E>::outputDic(){int i;ChainNode *p1;for(i=0;i<tableSize;i++){//cout<<"************************************"<<endl;//cout<<i<<endl;//cout<<"****"<<endl;if(ht[i].link!=NULL){p1=&ht[i];while(p1->link!=NULL){p1=p1->link;p1->EntryLink.output();}}}//cout<<"************************************"<<endl;}template<class E>bool Dictionary<E>::remove(string str){string result;ChainNode *ptr;if(search(str,result,ptr)==1){ptr->link=ptr->link->link;return 1;}else{return 0;}}template<class E>bool Dictionary<E>::search(string str,string &result){ChainNode *ptr;return search(str,result,ptr);}template<class E>bool Dictionary<E>::search(string str,string &result,ChainNode *&ptr){ int k;ChainNode *p1,*p2;Entry<string> strEnt(str);k=strEnt.firstLetter()%dicSize;p1=&ht[k];if(p1->link!=NULL){do{ptr=p1;p1=p1->link;if(p1->EntryLink.word==strEnt.word){result=p1->EntryLink.chinese;return 1;}}while(p1->link!=NULL);return 0;}else{return 0;}}//Entry_head.h#include<assert.h>#include<string>#include<stdlib.h>using namespace std;template<class K>class Entry{public:K word;K chinese;public:Entry(K,K);Entry();Entry(K);void output();int firstLetter();};template<class K>Entry<K>::Entry(K w,K c){word=w;chinese=c;};template<class K>Entry<K>::Entry(){word="";chinese="";};template<class K>Entry<K>::Entry(K w){word=w;chinese="";};template<class K>void Entry<K>::output(){cout<<"英文:"<<word<<endl;cout<<"中文:"<<chinese<<endl<<endl;}template<class K>int Entry<K>::firstLetter(){char *strv = strdup (word.c_str());//stringתcharreturn int(strv[0]);}主要代码结构://Hash_main.cpp#include<iostream>#include<string>#include"Entry_head.h"#include"Hash_head.h"using namespace std;const int deafaultSize=10+1;int main(){cout<<"********************************************"<<endl;cout<<"***** *****"<<endl;cout<<"***** 大猫哥*****"<<endl;cout<<"***** Make By LJDe.de *****"<<endl;cout<<"***** E-mail:**********************"<<endl;cout<<"***** *****"<<endl;cout<<"********************************************"<<endl;Entry<string> e[deafaultSize]={Entry<string>("eliminate","消除"),Entry<string>("accommodation ","招待设备"),Entry<string>("convince ","使确信"),Entry<string>("conscience ","良心"),Entry<string>("lantern ","灯笼"),Entry<string>("procession ","队伍"),Entry<string>("quit","离开"),Entry<string>("pudding ","布丁"),Entry<string>("reaction ","反应"),Entry<string>("shrink ","收缩"),Entry<string>()};Dictionary< Entry<string> > dic(e);int deed;string str1,str2;Entry<string> *eLit;dic.dicPos(e);do{cout<<endl<<"*************************************************************** *************"<<endl;cout<<"1.查看已有的字典词条。
python如何制作英文字典
python如何制作英⽂字典本⽂实例为⼤家分享了python制作英⽂字典的具体代码,供⼤家参考,具体内容如下功能有添加单词,多次添加单词的意思,查询,退出,建⽴单词⽂件。
keys=[]dic={}def rdic():fr = open('dic.txt','r')for line in fr:line = line.replace("\n",'')v = line.split(':')dic[v[0]] = v[1]keys.append(v[0])fr.close()def centre():n = input("请输⼊进⼊相应模块(添加、查询、退出):")if n == "添加":key= input("plsease input English:")if key not in keys:value=input("please input Chinese:")dic[key]=valuekeys.append(key)else :t=input("如果添加新的意思请输⼊ Y,否则输⼊N:")if ( t=='Y'):temp=""temp=temp+dic[key]key1= input("请输⼊中⽂")temp=temp+","+key1print(temp)#keys.append(temp)dic[key]=tempprint(dic)return 0else:return 0elif n== "查询":key= input("plsease input English:")print(keys)print(dic)if key not in keys:print("the english not in the dic.")else :print(dic[key])elif n == "退出" :return 1else :print("输⼊有误")return 0def wdic():#print("!")with open('dic.txt','w') as fw:for k in keys:fw.write(k+':'+dic[k]+'\n')def main():rdic()while True:print(keys)print(dic)n=centre()print(keys)print(dic)if n==1:breakif n==0:continuewdic()main()以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Java英汉电子字典课程设计源代码
Java英汉电子字典课程设计源代码————————————————————————————————作者:————————————————————————————————日期:用户需求分析:英汉词典作为一个常用的学习工具,是我们经常要使用的。
该系统能完成一个简单的电子词的功能。
该系统主要用于实现英汉互译的功能,系统拥有自己的数据库。
1.英译汉功能:我们可以先选择让系统进行英译汉功能,然后在查找框中输入想要查询的英文单词,系统将自动在数据库中查找匹配记录并给出相对应的汉语意思。
2.汉译英功能:我们可以在系统中选择汉译英功能,然后在查找框中输入想要查询的汉语意思,系统将自动在数据库中查找匹配记录并给出相对应的英文单词3.词汇的添加功能:用户可以添加词库内没有的单词及其解释。
添加成功后该单词将在次库内保存,以便下次查询。
4.词汇的修改功能;用户可以实现对词库中已有单词及其解释的修改。
修改后的结果将保存在词库中。
5.词汇的删除功能;用户可自行删除词库中已有的单词,同时次单词的解释也将被一同删除。
6.其他功能:此外,系统还具有帮助和关于等功能,用来辅助用户更方便简洁的使用电子词典。
package dianzicidian;import java.awt.*;import .*;import java.sql.*;import java.awt.event.*;import javax.swing.JOptionPane;import java.io.*;import sun.audio.*;class dzcd extends Frame implements ActionListener{MenuBar menubar=new MenuBar();//菜单Menu fileMenu,editMenu,helpMenu;MenuItem fileenglish,filechinese,exit,editAdd,editmod,editDel;TextField inputtext;TextArea txt;Label label1,label2;Button btn1,btnsound;Panel p,p1,p2,p3;dzcd(){super("电子词典");setBounds(200,300,350,400);setMenuBar(menubar);fileMenu=new Menu("文件");editMenu=new Menu("编辑");helpMenu=new Menu("帮助");fileenglish=new MenuItem("英汉词典");filechinese=new MenuItem("汉英词典");exit=new MenuItem("退出");editAdd=new MenuItem("添加词汇");editmod=new MenuItem("修改词汇");editDel=new MenuItem("删除词汇");menubar.add(fileMenu);menubar.add(editMenu);menubar.add(helpMenu);fileMenu.add(fileenglish);fileMenu.add(filechinese);fileMenu.addSeparator();fileMenu.add(exit);editMenu.add(editAdd);editMenu.add(editmod);editMenu.add(editDel);inputtext=new TextField("",10);txt=new TextArea(10,10);label1=new Label("输入要查询的英语单词:");label2=new Label("查询结果:");btn1=new Button("查询");btnsound=new Button("发音");p=new Panel(new BorderLayout());p2=new Panel(new FlowLayout(FlowLayout.LEFT,5,0));p2.add(label1);p2.add(inputtext);p2.add(btn1);p2.add(btnsound);add(p2,"North");p.add(label2,"North");p.add(txt,"Center");add(p,"Center");setVisible(true);setResizable(false);validate();fileenglish.addActionListener(this);filechinese.addActionListener(this);exit.addActionListener(this);editAdd.addActionListener(this);editmod.addActionListener(this);editDel.addActionListener(this);btn1.addActionListener(this);btnsound.addActionListener(this);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed(ActionEvent e){if(e.getSource()==fileenglish)//英汉(外观变化){label1.setText("输入要查询的英语单词:");label2.setText("查询结果:");txt.setText("");btn1.setLabel("查询");btnsound.setVisible(true);}else if(e.getSource()==filechinese)//汉英(外观变化){label1.setText("输入要查询的汉语词语:");label2.setText("查询结果:");txt.setText("");btn1.setLabel("查询");btnsound.setVisible(true);}else if(e.getSource()==exit)//退出{System.exit(0);}else if(e.getSource()==btn1){if(btn1.getLabel().equals("查询"))//实现查询功能(包括英汉或汉英){txt.setText(null);try{Listwords();}catch(SQLException ee){}}else if(btn1.getLabel().equals("提交"))//实现添加功能{try{addwords();}catch(SQLException ee){}}else if(btn1.getLabel().equals("更新"))//实现修改功能{try{modwords();}catch(SQLException ee){}}else if(btn1.getLabel().equals("删除"))//实现删除功能{try{delwords();}catch(SQLException ee){}}}else if(e.getSource()==editAdd)//添加(外观变化){label1.setText("输入新单词:");label2.setText("输入中文解释:");btn1.setLabel("提交");btnsound.setVisible(false);}else if(e.getSource()==editmod)//修改(外观变化){label1.setText("输入要修改的单词:");label2.setText("输入更新后的解释:");btn1.setLabel("更新");btnsound.setVisible(false);}else if(e.getSource()==editDel)//删除(外观变化){label1.setText("输入要删除的单词:");label2.setText("");btn1.setLabel("删除");btnsound.setVisible(false);}else if(e.getSource()==btnsound)//发音{if(inputtext.getText()!=null){try{InputStream is=getClass().getResource("sound//"+inputtext.getText().trim()+".wav").openStream();AudioPlayer.player.start(is);}catch(IOException e1){}}}}public void Listwords() throws SQLException//查询实现过程{String cname,ename;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){}Connection Ex1Con=DriverManager.getConnection("jdbc:odbc:words","","");Statement Ex1Stmt=Ex1Con.createStatement();ResultSet rs=Ex1Stmt.executeQuery("SELECT * FROM words");boolean boo=false;while((boo=rs.next())==true){ename=rs.getString("英语");cname=rs.getString("汉语");if(ename.equals(inputtext.getText())&&label1.getText().equals("输入要查询的英语单词:")){txt.append(cname);break;}else if(cname.equals(inputtext.getText())&&label1.getText().equals("输入要查询的汉语词语:")){txt.append(ename);break;}}Ex1Con.close();if(boo==false){JOptionPane.showMessageDialog(this,"查无此单词!","警告",JOptionPane.W ARNING_MESSAGE);}}public void addwords() throws SQLException//向数据库添加新词汇{String cname,ename;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){}Connection Ex1Con=DriverManager.getConnection("jdbc:odbc:words","","");Statement Ex1Stmt=Ex1Con.createStatement();ResultSet rs=Ex1Stmt.executeQuery("SELECT * FROM words");boolean boo=false;while((boo=rs.next())==true){ename=rs.getString("英语");cname=rs.getString("汉语");if(ename.equals(inputtext.getText())&&cname.equals(txt.getText())){JOptionPane.showMessageDialog(this,"此词汇已存在!","警告",JOptionPane.W ARNING_MESSAGE);break;}}if(boo==false){Ex1Stmt.executeUpdate("INSERT INTO words (英语,汉语) V ALUES ('"+inputtext.getText().trim()+"','"+txt.getText().trim()+"')");JOptionPane.showMessageDialog(this,"添加成功!","恭喜",JOptionPane.W ARNING_MESSAGE);}Ex1Con.close();}public void modwords() throws SQLException//修改词库中记录{String ename;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){}Connection Ex1Con=DriverManager.getConnection("jdbc:odbc:words","","");Statement Ex1Stmt=Ex1Con.createStatement();ResultSet rs=Ex1Stmt.executeQuery("SELECT * FROM words");boolean boo=false;while((boo=rs.next())==true){ename=rs.getString("英语");if(ename.equals(inputtext.getText())){Ex1Stmt.executeUpdate("UPDA TE words SET 汉语='"+txt.getText().trim()+"' WHERE 英语='"+inputtext.getText().trim()+"'");JOptionPane.showMessageDialog(this,"记录修改成功!","恭喜",JOptionPane.W ARNING_MESSAGE);break;}}Ex1Con.close();if(boo==false){JOptionPane.showMessageDialog(this,"不存在此单词!","警告",JOptionPane.W ARNING_MESSAGE);}}public void delwords() throws SQLException//删除词库中记录{@SuppressWarnings("unused")String cname,ename;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){}ConnectionEx1Con=DriverManager.getConnection("jdbc:odbc:wordskechengsheji","","");Statement Ex1Stmt=Ex1Con.createStatement();ResultSet rs=Ex1Stmt.executeQuery("SELECT * FROM words");boolean boo=false;while((boo=rs.next())==true){ename=rs.getString("英语");cname=rs.getString("汉语");if(ename.equals(inputtext.getText())){Ex1Stmt.executeUpdate("DELETE FROM words WHERE 英语='"+inputtext.getText().trim()+"'");JOptionPane.showMessageDialog(this,"成功删除记录!","恭喜",JOptionPane.W ARNING_MESSAGE);break;}}Ex1Con.close();if(boo==false){JOptionPane.showMessageDialog(this,"不存在此单词!","警告",JOptionPane.W ARNING_MESSAGE);}}public static void main(String args[]){new dzcd();}}。
Java学习期末项目词典项目完整源码
Dictionary项目源文件一.项目名称英汉词典二、主要构成运行效果1、三、项目介绍本项目使用文件存储数据1、Dictionary类,包含对单词的各种操作,如添加单词,查询单词,删除单词2、Swing类,窗体界面类运行效果图如下3、Tools类,文件储存工具类4、Word单词属性类5、UI,此UI为控制台版本词典,如不需窗体可以使用此类,运行效果Dictionary类源代码package Dictionary;/***引用请注明原作者-爱露YS***/import java。
util.*;public class Dictionary {List〈Word〉list =new ArrayList〈Word〉();//建立动态链表public List<Word〉getList() {return list;}public void setList(List〈Word〉list) {this。
list = list;}public Dictionary() {super();}public Dictionary(Word word) {}public Word addWord(Word word) {//1、增加单词list.add(word) ;//输出新增加的单词return word;}public Word searchWord(String str ) {//2、查找单词// if (input_ce !=null) 不需要判空for (int j = 0;j 〈list。
size(); j++)if((str。
equals(((Word)list。
get(j)).getcWord()))||((Word) list。
get(j)).geteWord().equalsIgnoreCase(str))return (Word) list。
get(j);return null;}public String sysoAllWrod() {//3、输出全部单词List <Word> list= getList();for(Word word :list)return word。
一个完整的从语言写的电子字典源码
C语言项目——查字典【项目需求描述】一、单词查询给定文本文件“dict.txt”,该文件用于存储词库。
词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:#单词Trans:解释1@解释2@…解释n每个新单词由“#”开头,解释之间使用“@”隔开。
一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:”开头。
下面是一个典型的例子:#abyssinianTrans:a. 阿比西尼亚的@n. 阿比西尼亚人;依索比亚人该词有两个解释,一个是“a. 阿比西尼亚的”;另一个是“n. 阿比西尼亚人;依索比亚人”。
要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。
用户可以反复输入,直到用户输入“exit”字典程序退出。
程序执行格式如下所示:./app –test2-test2表示使用文本词库进行单词查找。
二、建立索引,并且使用索引进行单词查询要求建立二进制索引,索引格式如下图所示。
将文本文件“dict.txt”文件转换为上图所示索引文件“dict.dat”,使用索引文件实现单词查找。
程序执行格式如下:./app –index-index表示使用文本词库dict.txt建立二进制索引词库dict.dat./app –test2-test2表示使用二进制索引词库进行单词查找。
三、支持用户自添加新词用户添加的新词存放在指定文件中。
如果待查单词在词库中找不到,则使用用户提供的词库。
用户的词库使用文本形式保存,便于用户修改。
程序执行格式图1-1所示。
./app 词库选择选项-f 用户词库文件名词库选项为-test1,或者-test2,表示使用文本词库或者二进制索引词库。
-f为固定参数,用来指定用户词库文件名。
图1-1【项目要求】❑尽量考虑程序执行的效率,尽量减少开销,提高程序速度❑尽量考虑模块化程序设计思想,能够引入面向对象的设计模式和方法❑保证代码的可读性,紧凑的组织代码❑清晰设计思想和设计思路,代码实现尽量简洁❑可以完成相应的拓展功能,例如用户自添加单词,建立索引以提高查找速度等【考察知识点】(1)变量数据类型(2)数组(3)结构体(4)typedef关键字的使用(5)控制结构(6)函数接口设计(7)static关键字的使用(8)文件拆分与代码组织(9)模块化设计思想(10)简单的面向对象程序设计思想(11)指针与指针控制(12)const关键字的使用(13)C语言程序的命令行参数(14)多文件符号解析(15)头文件包含(16)宏(17)条件编译(18)字符串操作(19)malloc函数(20)常用的字符串库函数(21)文件操作(22)简单的出错处理(23)排序算法和二分查找算法(24)二进制文件和文本文件的区别(25)链表操作(26)makefile的使用(27)编程工具的使用(vi,gcc,gdb)(28)文档组织和项目规划【未考察到的知识点】(1)变参函数(2)函数指针(3)泛型算法(4)复杂链表的链表操作(5)栈和队列(6)二叉树。
python在生词本查单词的译文
python在生词本查单词的译文
Python(也称为蟒蛇)是一种非常流行的编程语言,其有着广泛的应用,包括数据科学、人工智能、网络编程等领域。
在Python中,可以使用内置的函数或第三方库来查询生词的译文。
例如,使用Googletrans库可以将英语单词翻译为中文,该库可以通过在命令行中使用pip install googletrans来安装。
使用该库的示例代码如下:from googletrans import Translator
# 创建翻译器对象
translator = Translator()
# 要查询的单词
word = "apple"
# 调用翻译函数并输出翻译结果
result = translator.translate(word, dest='zh-CN').text
print(result)
在上述代码中,首先导入了Googletrans库,然后创建了一个翻译器对象。
接着定义要查询的单词,然后调用翻译函数并指定目标语言为中文,最后输出翻译结果。
在实际使用中,还可以将该功能和其他库或API结合起来,实现更多的自动化和批量查询功能。
Python字典(Dictionary)
Python字典(Dictionary)Python中字典与类表类似,也是可变序列,不过与列表不同,他是⽆序的可变序列,保存的内容是以键 - 值对的形式存放的。
类似我们的新华字典,他可以把拼⾳和汉字关联起来,通过⾳节表可以快速的找到想要的字。
新华字典中的⾳节相当于(key),⽽对应的汉字,相当于值(value)。
键是唯⼀的,⽽值可以有多个。
⽰例代码:dictionary = {"key1": "value1", "key2": "value2".....}分析:key:表⽰元素的键,必须是唯⼀的并且不可变,可以是字符串、数字或元组等value:表⽰值,可以是任何类型数据,不是唯⼀的。
字典的创建和删除⽰例代码:dicts = {"name": "张三", "sex": "男", "age": 18}print(dicts)执⾏结果:{"name": "张三", "sex": "男", "age": 18}创建空字典:dictionary = {}或dictionary = dict()将列表合并为字典dictionary = dict(zip(list1,list2))dictionary:字典的名称zip()函数:⽤于将多个列表或元组对应的位置的元素组合为元组,并返回⽩喊这些内容的zip对象,如果想获取元组,可以将zip对象使⽤tuple()函数转换为这个元组;如果想获取列表,则可以使⽤list()函数将其转换为列表。
⽰例代码:name = ["⼩王", "⼩明", "⼩张"]class1 =["⼀班", "⼆班", "三班"]dictionary = dict(zip(name,class1))print(dictionary)执⾏结果:{'⼩王': '⼀班', '⼩明': '⼆班', '⼩张': '三班'}通过给定的"键-值队:创建字典⽰例代码:dictionary = dict(张三="⽔平座", 李四="射⼿座")print(dictionary)执⾏结果:{'张三': '⽔平座', '李四': '射⼿座'}创建值为空的字典⽰例代码:name = ["张三", "李四"]dictionary = dict.fromkeys(name)print(dictionary)执⾏结果:{'张三': None, '李四': None}通过元组和列表创建字典⽰例代码:name = ("张三", "李四")age = [18, 20]dictionary = {name:age}print(dictionary)执⾏结果:{('张三', '李四'): [18, 20]}注意两个对象都为列表会报错:name = ["张三", "李四"]age = [18, 20]dictionary = {name:age}print(dictionary)执⾏结果:Traceback (most recent call last):File "D:/xuexi/python/Demo.py", line 3, in <module>dictionary = {name:age}TypeError: unhashable type: 'list'删除字典同列表与元组⼀样使⽤del删除字典⽰例代码:name = {"张三": 18, "李四": 20}print(name)del nameprint(name)执⾏结果:Traceback (most recent call last):{'张三': 18, '李四': 20}File "D:/xuexi/python/Demo.py", line 4, in <module>print(name)NameError: name 'name' is not defined访问字典直接指定key访问⽰例代码:name = {"张三": 18, "李四": 20}print(name["李四"])执⾏结果:20使⽤get()⽅法访问⽰例代码:name = {"张三": 18, "李四": 20}print(name.get("李四"))执⾏结果:20key不存在出现报错解决办法如果key不存在会出现KeyError: 'value'报错,下⾯提供两个解决⽅式:*使⽤3元运算符判断key是否存在使⽤dictionary[value] if value in dictionary else "⾃定义不存在返回值",如果value在字典中则返回value如果不存在返回⾃定义值。
python实现电子词典
python实现电⼦词典本⽂实例为⼤家分享了python实现电⼦词典的具体代码,供⼤家参考,具体内容如下# -*- coding: utf-8 -*-#youdanTest.pyimport urllibimport json# 设置⼀个退出程序的出⼝isOut = False# 不断调⽤爬取翻译页⾯的功能# 直到isOut被设置为True,退出程序def query(keys):while True:if isOut == True:break# 假定⽤户输⼊“CloseMe”,则退出key = keysif key == "CloseMe":isOut = Truecontinue # 回到循环开始处,然后结果条件满⾜退出# 做真正的查询操作url = "/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"# 构造headersheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", "X-Requested-With": "XMLHttpRequest","Accept": "application/json, text/javascript, */*; q=0.01","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}# 把form数据转规范化,然后post给服务端formdata = {"i": key,"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": "1523933959290","sign": "248f5d216c45a64c38a3dccac0f4600d","doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTIME","typoResult": "false"}data = bytes(urllib.parse.urlencode(formdata),encoding="utf-8")# 给服务器发送post请求req = urllib.request.Request(url,data,headers,method="POST")response = urllib.request.urlopen(req)info = response.read().decode("utf-8")jsonLoads = json.loads(info)return jsonLoads['translateResult'][0][0]["tgt"]服务端#!/usr/bin/python3# coding=utf-8from signal import *from socket import *import pymysqlfrom time import *import sysimport osfrom youdaoTest import querydef do_child(connfd, db):while True:msg = connfd.recv(128).decode()print("msg : ", msg)if msg[0] == 'R':do_register(connfd, msg, db)if msg[0] == 'L':do_login(connfd, msg, db)if msg[0] == 'Q':do_query(connfd, msg, db)if msg[0] == 'H':do_history(connfd, msg, db)if msg[0] == 'E':connfd.close()sys.exit(0)returndef do_register(connfd, msg, db):print("in register.......")cursor = db.cursor()s = msg.split(' ')name = s[1]passwd = s[2]sql = "select * from user where name = '%s'" % namecursor.execute(sql)data = cursor.fetchone()print(data)if data != None:connfd.send("FALL".encode())returnsql = "insert into user values ('%s','%s')" % (name, passwd)try:cursor.execute(sql)mit()connfd.send('OK'.encode())except:connfd.send("FALL".encode())db.rollback()returnelse:print("register OK !")def do_login(connfd, msg, db):print("in login.......")cursor = db.cursor()s = msg.split(' ')name = s[1]passwd = s[2]try:sql = "select * from user where name = '%s' and passwd = '%s'" % (name, passwd)cursor.execute(sql)data = cursor.fetchone()print(data)except:passif data == None:connfd.send("FALL".encode())else:connfd.send('OK'.encode())returndef do_query(connfd, msg, db):print("in query.......")start = time()cursor = db.cursor()s = msg.split(' ')words = s[1]name = s[2]msg = query(words)connfd.send(msg.encode())insert_history(db, words, name)def do_history(connfd, msg, db):print('in history...')s = msg.split(' ')name = s[1]cursor = db.cursor()sql = 'select * from history where name = "%s"' % nametry:cursor.execute(sql)data = cursor.fetchall()connfd.send('OK'.encode())except:connfd.send('FALL'.encode())sleep(0.1)for msg in data:name = msg[0]word = msg[1]time = msg[2]sleep(0.01)connfd.send(('%s %s %s' % (name, word, time)).encode())sleep(0.1)connfd.send('over'.encode())def insert_history(db, words, name):time = ctime()cursor = db.cursor()sql = 'insert into history values ("%s","%s","%s")' % (name, words, time) try:cursor.execute(sql)mit()except:print('into history failed')db.rollback()def main():signal(SIGCHLD, SIG_IGN)db = pymysql.connect('localhost', 'root', '123456', 'dict')HOST = sys.argv[1]PORT = int(sys.argv[2])sockfd = socket()sockfd.bind((HOST, PORT))sockfd.listen(5)while True:try:connfd, addr = sockfd.accept()print("connect addr : ", addr)except KeyboardInterrupt:raiseexcept:continuepid = os.fork()if pid < 0:print("create child process failed")connfd.close()continueelif pid == 0:sockfd.close()do_child(connfd, db)else:connfd.close()continuedb.close()sockfd.close()sys.exit(0)if __name__ == "__main__":main()电⼦词典客户端#!/usr/bin/python# coding=utf-8from signal import *from socket import *from time import *import sysimport osdef do_register(sockfd, msg):name = input("input your user name >>")passwd = input("input your user passwd >>") msg = 'R %s %s' % (name, passwd)sockfd.send(msg.encode())msg = sockfd.recv(128).decode()if msg[0:2] == 'OK':return 0else:return -1def do_login(sockfd, msg):name = input("input your user name >>")passwd = input("input your user passwd >>") msg = 'L %s %s' % (name, passwd)sockfd.send(msg.encode())msg = sockfd.recv(128).decode()if msg[0:2] == 'OK':return nameelse:return -1def do_query(sockfd, msg, name):while True:word = input("input word >>")if word == '##':returnmsg = 'Q %s %s' % (word, name)sockfd.send(msg.encode())msg = sockfd.recv(128).decode()if msg[0:2] == 'OK':msg = sockfd.recv(1024).decode()if msg == " ":print("not found this word")print(msg)# elif msg[:11] == 'found error':# print('found error')# continueelse:print("fail to query")continuedef do_history(sockfd, msg, name):msg = 'H %s' % namesockfd.send(msg.encode())msg = sockfd.recv(128).decode()if msg[0:2] == 'OK':while True:data = sockfd.recv(1024).decode()if data == 'over':breakprint(data)else:print("fail to history")return -1def main():HOST = sys.argv[1]PORT = int(sys.argv[2])msg = Nonesockfd = socket()sockfd.connect((HOST, PORT))def login(name):while True:print('''==========query commend========= ---1:查词 2:历史记录 3:退出---================================ ''')try:cmd = int(input("Input commend >> "))except:print("Input error!")continueif cmd not in [1, 2, 3]:print("input error!")sys.stdin.flush()continueif cmd == 1:do_query(sockfd, msg, name)if cmd == 2:do_history(sockfd, msg, name)if cmd == 3:breakreturnwhile True:print('''=============Welcome============= ----1: 注册 2: 登陆 3: 退出----================================= ''')try:cmd = int(input("Input command >> "))except:print("Input error")continueif cmd not in [1, 2, 3]:print("input error!")sys.stdin.flush()continueif cmd == 1:if do_register(sockfd, msg) == 0:print("register OK!")else:print("register FALL")if cmd == 2:name = do_login(sockfd, msg)if name != -1:print("login OK!")login(name)else:print("register FALL")if cmd == 3:msg = 'E'sockfd.send(msg.encode())sockfd.close()sys.exit(0)if __name__ == "__main__":main()查词时将单词发送到⽹络上,从有道中查询出单词翻译再返回给客户端。
英汉字典
#include <stdio.h>#include <conio.h>#include <string.h>#include <stdlib.h>struct node{char word[30];char ch[40];struct node *next;};struct node *head;struct node *q;void gongneng();void write();//查询单词void chaxun(){system("cls");struct node *p,*t;int flag=0;int n;p=(struct node *)malloc(sizeof(struct node));t=(struct node *)malloc(sizeof(struct node));t=head;printf("\n请输入要查询的单词:");scanf("%s",&p->word);do{if(strcmp(t->word,p->word)==0) {flag=1;break;}else t=t->next;}while(t);if(flag==1) {printf("%s %s\n",t->word,t->ch);}else {printf("\n该单词不存在!!!\n");}printf("\n\n1 继续查询!\n2 返回!\n其他任意键退出!\n\n\n请选择:");scanf("%d",&n);if(n==1) chaxun();else if(n==2) {system("CLS");gongneng();}else {printf("\n是否保存到文件\n\n\n1 是!\n0 否!\n请选择:");int m;scanf("%d",&m);if(m==1) write();exit(-1);}}//修改单词void change(){system("cls");struct node *p,*t;int flag=0,n,len;p=(struct node *)malloc(sizeof(struct node));t=(struct node *)malloc(sizeof(struct node));t=head;printf("\n请输入要修改的单词:");scanf("%s",&p->word);do{if(strcmp(t->word,p->word)==0) {flag=1;break;}else t=t->next;}while(t);if(flag==1) {printf("\n请输入该单词的信息:");scanf("%s",&t->ch);len=strlen(t->ch);t->ch[len]='\n';}else {printf("\n该单词不存在!!!!\n");}printf("\n\n\n1 继续修改!\n2 返回!\n其他任意键退出!\n\n请选择:");scanf("%d",&n);if(n==1) change();else if(n==2) {system("CLS");gongneng();}else {printf("\n是否保存到文件\n\n\n1 是!\n0 否!\n请选择:");int m;scanf("%d",&m);if(m==1) write();exit(-1);}}//添加单词void add(){system("cls");struct node *p,*t,*s;int n,flag=0,len;p=(struct node *)malloc( sizeof(struct node));t=(struct node *)malloc(sizeof(struct node));s=(struct node *)malloc(sizeof(struct node));s=head,t=head->next;printf("\n请输入添加的单词:");scanf("%s",&p->word);len=strlen(p->word);p->word[len]=' ';printf("\n请输入该单词的信息:");scanf("%s",&p->ch);len=strlen(p->ch);p->ch[len]='\n';while(s){if((strcmp(p->word,s->word)>0)&&(strcmp(p->word,t->word)<0)){p->next=s->next;s->next=p;flag=1;break;}else if(strcmp(p->word,s->word)==0) {printf("\n该单词已存在!!!\n");break;}else {s=s->next,t=t->next;}}if(flag==1) printf("\n\n添加成功!\n");printf("\n1 继续添加!\n2 返回!\n其他键退出!\n\n\n请选择:");scanf("%d",&n);if(n==1) add();else if(n==2) {system("cls");gongneng();}else {printf("\n是否保存到文件\n\n\n1 是!\n0 否!\n请选择:");int m;scanf("%d",&m);if(m==1) write();exit(-1);}}//删除单词void shanchu(){system("cls");struct node *p,*t,*s;int flag=0,n;p=(struct node *)malloc(sizeof(struct node));t=(struct node *)malloc(sizeof(struct node));s=(struct node *)malloc(sizeof(struct node));s=head,t=head->next;printf("\n请输入要删除的单词:");scanf("%s",&p->word);if(strcmp(head->word,p->word)==0) {head=head->next; printf("\n删除单词成功!\n");}//第一个单词else {while(t){if(strcmp(t->word,p->word)==0) {flag=1;break;}t=t->next;s=s->next;}if(flag==1){if(strcmp(q->word,p->word)==0) q=NULL;//最后一个单词else {s->next=t->next;free(t);}printf("\n删除单词成功!\n");}else {printf("\n该单词不存在!!!\n");}}printf("\n\n1 继续删除!\n2 返回!\n其他任意键退出!\n\n请选择:");scanf("%d",&n);if(n==1) shanchu();else if(n==2) {system("CLS");gongneng();}else {printf("\n是否保存到文件\n\n\n1 是!\n0 否!\n请选择:");int m;scanf("%d",&m);if(m==1) write();exit(-1);}}//读入文件内容到链表void read(){FILE *fp;struct node *p;p=q=(struct node *)malloc( sizeof(struct node));fp=fopen("F:\\English.txt","r");if(fp==NULL){printf("File open error!\n");exit(0);}head=NULL;head=p;while(!feof(fp)){fscanf(fp,"%s",p->word);fgets(p->ch,50,fp);q->next=p;q=p;p=(struct node *)malloc( sizeof(struct node));}q->next=NULL;fclose(fp);}//链表内容写入文件void write(){FILE *fp;struct node *p;p=(struct node *)malloc( sizeof(struct node));fp=fopen("F:\\english.txt","r+");if(fp==NULL){printf("File open error!!!\n");exit(0);}p=head;do{fprintf(fp,"%s",p->word);fputs(p->ch,fp);p=p->next;}while(p);fclose(fp);}void gongneng(){int choice;system("CLS");printf("\n\n\t\t\t欢迎使用本电子词典\n");printf("\t\t=======================================\n");printf("\n\t\t\t1 查找单词!\n\n\t\t\t2 修改单词!\n\n\t\t\t3 添加单词!\n\n\t\t\t4 删除单词!\n\n\t\t\t0 退出!\n\n\t\t\t请选择:");scanf("%d",&choice);switch(choice){case 1:chaxun();break;case 2:change();break;case 3:add(); break;case 4:shanchu();break;case 0:{printf("\n是否保存到文件\n\n\n1 是!\n0 否!\n请选择:");int m;scanf("%d",&m);if(m==1) write();exit(-1);}default:{printf("\n\n\t\t\t 输入有误!\n\n\t\t\t按任意键返回!");if(getch()!=127) gongneng();};break;}}int main(){system("color 1E"); //设计文本颜色read();gongneng();return 0;}。
java代码 英汉小词典
import java.awt.*;import .*;import java.sql.*;import java.awt.event.*;import java.io.*;import java.util.Calendar;class DataWindow extends Frame implements ActionListener{ TextField searchWord_tField,expWord_tField,searchChineseField,expEnglishField,updWord_tField,updExpWord_tField,addNewWord_tField,addExpWord_tField;Button search_button,update_button,add_button,searchChinese_buton;int search_record=0;Connection Con=null;Statement Stmt=null;DataWindow(){ super("英汉小词典");setBounds(150,150,600,400);setVisible(true);message_log("DataWindow Start : ");try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){}try{Con=DriverManager.getConnection("jdbc:odbc:data","lixuanxian","123");Stmt=Con.createStatement();message_log("Stmt="+Stmt);}catch(SQLException ee) {}searchWord_tField=new TextField(16);expWord_tField=new TextField(16);searchChineseField=new TextField(16);expEnglishField=new TextField(16);updWord_tField=new TextField(16);updExpWord_tField=new TextField(16);addNewWord_tField=new TextField(16);addExpWord_tField=new TextField(16);searchChinese_buton=new Button("确定");search_button=new Button("查询");update_button=new Button("更新");add_button=new Button("添加");Panel p1=new Panel(),p2=new Panel(),p3=new Panel(),p4=new Panel(),pset=new Panel(new GridLayout(5,2));p1.add(new Label("输入要查询的英语单词:"));p1.add(searchWord_tField);p1.add(new Label("显示英语单词的汉语解释:"));p1.add(expWord_tField);p1.add(search_button);p4.add(new Label("输入要查询的汉语:"));p4.add(searchChineseField);p4.add(new Label("显示英语单词的英文解释:"));p4.add(expEnglishField);p4.add(searchChinese_buton);p2.add(new Label("输入英语单词:"));p2.add(updWord_tField);p2.add(new Label("输入该单词更新的汉语解释:"));p2.add(updExpWord_tField);p2.add(update_button);p3.add(new Label("输入英语单词:"));p3.add(addNewWord_tField);p3.add(new Label("输入汉语解释:"));p3.add(addExpWord_tField);p3.add(add_button);pset.add(p1);pset.add(p4);pset.add(p2);pset.add(p3);add(pset);search_button.addActionListener(this);update_button.addActionListener(this);add_button.addActionListener(this);searchChinese_buton.addActionListener(this);addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ setVisible(false);System.exit(0);}});}public void actionPerformed(ActionEvent e){if (e.getSource()==search_button){search_record=0;try { query();}catch (SQLException ee) {}}else if (e.getSource()==update_button){try { modify();}catch (SQLException ee) {}}else if (e.getSource()==add_button){try { addNew();}catch (SQLException ee) {}}else if (e.getSource()==searchChinese_buton){try { queryChinese();}catch (SQLException ee) {}}}public void query() throws SQLException{message_log("query start");String cname, ename,text="'"+searchWord_tField.getText().trim()+"'";Con=DriverManager.getConnection("jdbc:odbc:data","lixuanxian","123");message_log("Con="+Con);ResultSet rs=Stmt.executeQuery("SELECT * FROM dict where English="+text);int n=0;message_log("in query : n="+n);while (rs.next()){message_log("while start " );ename=rs.getString("English"); cname=rs.getString("Chinese");message_log(ename+" "+cname);if(ename.trim().equals(searchWord_tField.getText().trim())){message_log("equal");message_log("in query : ename="+ename+" cname="+cname);expWord_tField.setText(cname);search_record=1;break;}message_log("not equal");}if(search_record==0){expWord_tField.setText("没有该单词");}}public void queryChinese() throws SQLException{message_log("queryChinese start");String cname, ename,text="'"+searchChineseField.getText().trim()+"'";Con=DriverManager.getConnection("jdbc:odbc:data","lixuanxian","123");message_log("Con="+Con);ResultSet rs=Stmt.executeQuery("SELECT * FROM dict where Chinese="+text);int n=0;message_log("in query : n="+n);while (rs.next()){message_log("while start " );ename=rs.getString("English"); cname=rs.getString("Chinese");message_log(cname+" "+ename);if(cname.trim().equals(searchChineseField.getText().trim())){message_log("equal");message_log("in query : cname="+cname+"ename="+ename);expEnglishField.setText(ename);search_record=1;break;}message_log("not equal");}if(search_record==0){expEnglishField.setText("没有该词语");}}public void modify() throws SQLException{message_log("modify start");String s1="'"+updWord_tField.getText().trim()+"'",s2="'"+updExpWord_tField.getText().trim()+"'";String temp="UPDATE dict SET Chinese=" +s2+" WHERE English= "+s1;Con=DriverManager.getConnection("jdbc:odbc:data","lixuanxian","123");Stmt.executeUpdate(temp);updWord_tField.setText(null);updExpWord_tField.setText(null);Con.close();}public void addNew() throws SQLException{message_log("addNew start");String s1="'"+addNewWord_tField.getText().trim()+"'",s2="'"+addExpWord_tField.getText().trim()+"'";String temp="INSERT INTO dict VALUES("+ s1+", "+s2+")";Con=DriverManager.getConnection("jdbc:odbc:data","lixuanxian","123");Stmt.executeUpdate(temp);addNewWord_tField.setText(null);addExpWord_tField.setText(null);Con.close();}public void message_log(String msg){try {java.util.Date RightNow = Calendar.getInstance().getTime();java.text.SimpleDateFormat LOG_FILENAME_SDF=new java.text.SimpleDateFormat("yyyyMMdd");java.text.SimpleDateFormat SMS_LOG_DETAIL_TIME=new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss ");// get the Log File LocationFileOutputStream fos;fos = new FileOutputStream("F:\\李选贤\\java\\英汉小词典\\log\\"+LOG_FILENAME_SDF.format(RightNow) + "_Database.log" ,true);PrintWriter pw = new PrintWriter(fos);pw.print(SMS_LOG_DETAIL_TIME.format(RightNow));pw.println(" " + msg);pw.close();fos.close();} catch (Exception ex) {System.out.println(msg);System.out.println("SMSMsgLog: Error \r\n"+ex.getMessage());ex.printStackTrace();}}}public class dictionary{public static void main(String args[]){DataWindow window1=new DataWindow();window1.pack();}}。
VC6.0下电子词典源代码
Main():#include <stdio.h>#include <string.h>#include "dict.h"int main(int argc, char *argv[]){t est1();r eturn 0;}Dict.h:#ifndef __DICT_H#define __DICT_Htypedef struct node{c har *key;i nt n_strans;c har **strans;}WORD;int get_nword();WORD *get_wordarr(int n);int get_txt_usr(char *);int get_nword_usr(char *src);void add_usr(char *src);void add_txt_usr(char *src);int test1();int test2();#endifAdd_bin_usr.cpp:#include <stdio.h>#include <stdlib.h>#include <string.h>#include "dict.h"void add_usr(char *src){c har ch;g etchar();p rintf("you want to insert the word?please input y or n:"); s canf("%c", &ch);i f(ch == 'y'){int n_strans, i;char buf[512];FILE *fw;int len;if((fw = fopen("dict_bin_usr.txt", "a")) == NULL){perror("dict_bin_usr.txt open failuren");exit(-1);}len = strlen(src)+1;fwrite(&len, 4, 1, fw);fwrite(src,1, len, fw);printf("input word information:input n_strans:");scanf("%d",&n_strans);fwrite(&n_strans, 4, 1, fw);printf("input word information:input strans:");getchar();for(i=0;i<n_strans; i++){fgets(buf,sizeof(buf),stdin);len = strlen(buf);buf[len-1] = '\0';fwrite(&len, 4, 1, fw);fwrite(buf, 1, len, fw);}fclose(fw);}}Add_txt_usr.cpp:#include <stdio.h>#include <string.h>#include <stdlib.h>#include "dict.h"void add_txt_usr(char *src){c har ch;c har buf[100];p rintf("you want to insert the word?please input y or n:"); s canf("%c", &ch);i f(ch== 'y'){FILE *fw;int len;char str[100];if((fw = fopen("dict_usr.txt", "a")) == NULL){perror("dict_usr.txt open failuren");exit(-1);}fprintf(fw,"%s\n", src);printf("input word information:input strans:");getchar();fgets(buf,sizeof(buf),stdin);len = strlen(buf);buf[len-1] = '\0';fprintf(fw, "%s\n", buf);fclose(fw);}i f(ch == 'n')fgets(buf,sizeof(buf),stdin);}Dict1.cpp:#include <stdio.h>#include <string.h>#include <stdlib.h>#include "dict.h"int search(WORD *word, char *str, int n){i nt mid, i;i nt start = 0;i nt end = n-1;i nt flag = 1;w hile(start <= end){mid = (start+end)/2;if((strcmp(str, word[mid].key))==0){flag = 0;printf("%s\n", word[mid].key);for(i=0; i<word[mid].n_strans; i++)printf("%s\n",word[mid].strans[i]);return 0;}else if(strcmp(str, word[mid].key)>0)start = mid+1;elseend = mid-1;}p rintf("in database These is no the word\n");r eturn flag;}static void free_word(WORD *word,int n){i nt i,j;f or(i=n-1; i>=0; i--){for(j=word[i].n_strans-1;j>=0; j--)free(word[i].strans[j]);free(word[i].strans);free(word[i].key);}f ree(word);// word =NULL;}int test1(void){i nt n;n = get_nword();W ORD *pword = get_wordarr(n);c har a[50];i nt flag = 0;i nt len;p rintf("******************************************************\n" );p rintf("please input you want to search word(input exit end):");f gets(a,50, stdin);l en = strlen(a);a[len-1] = '\0';w hile(strcmp(a, "exit") != 0){flag = search(pword, a, n);//找到返回0,找不到返回1if(flag == 1){flag = get_txt_usr(a);if(flag == 1)add_txt_usr(a);}printf("******************************************************\n" );printf("please input you want to search word(input exit end):");//system("pause");fgets(a,50, stdin);len = strlen(a);a[len-1] = '\0';}f ree_word(pword, n);return 0;}Dict3.cpp:#include <stdio.h>#include <string.h>#include <stdlib.h>#include "dict.h"int N;static WORD *get_bin_nword(){i nt n, i, j, n_strans;F ILE *fr;i nt len;i f((fr = fopen("dict_bin.txt", "r")) == NULL){perror("dict_bin.txt open failuren");exit(-1);}f read(&n, 4, 1, fr);N = n;W ORD *wordarr=(WORD *)malloc(sizeof(WORD)*N);f or(i=0; i<n; i++){fread(&len, 4, 1, fr);wordarr[i].key = (char *)malloc(len);fread(wordarr[i].key, 1, len, fr);fread(&n_strans, 4, 1, fr);wordarr[i].n_strans = n_strans;wordarr[i].strans =(char **) malloc(sizeof(*(wordarr[i].strans)) * n_strans);for(j=0; j<wordarr[i].n_strans; j++){fread(&len, 4, 1, fr);wordarr[i].strans[j] =(char *) malloc(len);fread(wordarr[i].strans[j], 1, len, fr);}}f close(fr);r eturn wordarr;}static int search(WORD *wordarr, int n, char *src){i nt start = 0;i nt end = n-1;i nt mid;i nt i, flag = 1;w hile(start <= end){mid = (start+end)/2;if((strcmp(src, wordarr[mid].key))==0){flag = 0;printf("%s\n", wordarr[mid].key);for(i=0; i<wordarr[mid].n_strans; i++)printf("%s\n",wordarr[mid].strans[i]);return 0;}else if(strcmp(src, wordarr[mid].key)>0)start = mid+1;elseend = mid-1;}p rintf("****************************************\n");p rintf(" in database These is no the word\n");p rintf("****************************************\n");r eturn flag;}static void free_word(WORD *word,int n){i nt i,j;f or(i=n-1; i>=0; i--){for(j=word[i].n_strans-1;j>=0; j--)free(word[i].strans[j]);free(word[i].strans);free(word[i].key);}f ree(word);w ord =NULL;}Get_bin_wordaar_txt.cpp:#include <stdio.h>#include <stdlib.h>#include <string.h>#include "dict.h"WORD *get_wordarr(int n) //从文件中读取内容,放在数据结构里面{W ORD *word = (WORD *)malloc(sizeof(WORD)*n);c har buf[512], bufcp[512];c har *token, *begin;i nt i = 0,j;i nt len;F ILE *fr, *fw;i f((fr = fopen("dict.txt", "r")) == NULL){perror("dict.txt open failure\n");exit(-1);}i f((fw = fopen("dict_bin.txt", "w")) == NULL){perror("dict_bin.txt open failuren");exit(-1);}f write(&n, 4, 1, fw);w hile(fgets(buf, sizeof(buf), fr)){len = strlen(buf)-1;buf[len] = '\0';word[i].key = (char *)malloc(len);strcpy(word[i].key, &buf[1]);fwrite(&len, 4, 1, fw);fwrite(word[i].key, 1, len, fw);fgets(buf, sizeof(buf), fr);{strcpy(bufcp, buf);for(j=0,begin=buf; (token=strtok(begin, "@"))!=NULL; begin=NULL,j++)word[i].n_strans = j;fwrite(&j, 4, 1, fw);word[i].strans = (char **)malloc(sizeof(*(word[i].strans)) * j);for(j=0,begin=bufcp; (token=strtok(begin, "@"))!=NULL; begin=NULL,j++){len = strlen(token)+1;word[i].strans[j] = (char *)malloc(len);strcpy(word[i].strans[j],token);fwrite(&len, 4, 1, fw);fwrite(token, 1, len, fw);}}i++;}f close(fr);f close(fw);r eturn word;}Get_nword.cpp:#include <stdio.h>#include "dict.h"int get_nword(){F ILE *fp;i nt count = 0;c har buf[512];i f((fp=(fopen("dict.txt", "r")))==NULL){perror("file open failure\n");return -1;}w hile(fgets(buf, sizeof(buf), fp)){count++;}c ount /= 2;f close(fp);r eturn count;}Search_bin_usr.cpp:#include <stdio.h>#include <string.h>#include <stdlib.h>#include "dict.h"int get_nword_usr(char *src){int j, n_strans;FILE *fr;c har str[512];i nt len =0;i f((fr = fopen("dict_bin_usr.txt", "r")) == NULL) {perror("file open failuren");exit(-1);}w hile(fread(&len, 4, 1, fr)){fread(str, 1, len, fr);if(strcmp(str, src) == 0){printf("the word in usr database\n");printf("%s\n", str);fread(&n_strans, 4, 1, fr);for(j=0; j<n_strans; j++){fread(&len, 4, 1, fr);fread(str, 1, len, fr);printf("%s\n", str);}return 0;}fread(&n_strans, 4, 1, fr);for(j=0; j<n_strans; j++){fread(&len, 4, 1, fr);fread(str, 1, len, fr);}}p rintf("in usr these no the word\n");f close(fr);r eturn 1;}Seach_usr_txt.cpp:#include <stdio.h>#include <string.h>#include <stdlib.h>#include "dict.h"int get_txt_usr(char *src){F ILE *fr;c har str[512];i nt len =0;i f((fr = fopen("dict_usr.txt", "r")) == NULL){perror("dict_usr.txt open failuren");exit(-1);}w hile(fgets(str,sizeof(str), fr)){len = strlen(str);str[len-1] = '\0';if(strcmp(str, src) == 0){printf("****************************************\n");printf("the word in usr database\n");printf("%s\n", str);fgets(str, sizeof(str), fr);printf("%s\n", str);printf("****************************************\n");return 0;}}p rintf("****************************************\n");p rintf("in usr these no the word\n");p rintf("****************************************\n");f close(fr);r eturn 1;}。
借助“有道词典”用Python编程语言开发简易翻译模块
借助“有道词典”用Python编程语言开发简易翻译模块python具有强大的网络编程功能,几行代码就可以实现从互联网上获取数据,本人正在学习python编程,刚入门,用python借助“有道字典”开发了一个具有翻译功能的函数,本人试验了“英汉”、“汉英”互译,大家也可以试一下其他语言的翻译。
分享给大家,初学python的同学可以一试,很有意思。
如果你觉的有用,请支持一下。
程序在AnaConda3-5.0.1下运行正常。
翻译一行的函数代码如下:翻译一个文件的函数代码如下:使用时,先在当前目录下编辑一个要翻译的文件“in.txt”,调用代码如下:执行时python控制台提示如下:翻译完成后在当前目录生成“out.txt”翻译结果文件。
例如我的“in.txt”文件内容为:春种一粒粟,秋收万颗子。
四海无闲田,农夫犹饿死。
锄禾日当午,汗滴禾下土。
谁知盘中餐,粒粒皆辛苦?翻译出的“out.txt”为:Recovery and a grain of millet, the autumn harvest than a child.All have no idle field, the farmer Jude starve to death.Hoe grain to be noon for day, began sweating grain soils.Behold dishes, each all pain?用以上英文结果为输入,再翻译成汉语如下:复苏和一粒粟,秋收比一个孩子。
都没有空闲,农夫犹饿死。
锄头粮食为天,中午开始出汗谷物土壤。
看菜,每一次都痛?哈哈,有点看懵了吧,看来让有道翻译古诗有点勉为其难了。
把输入改为:春天只要播下一粒种子,秋天就可收获很多粮食。
普天之下,没有荒废不种的田地,劳苦农民,仍然要饿死。
盛夏中午,烈日炎炎,农民还在劳作,汗珠滴入泥土。
有谁想到,我们碗中的米饭,粒粒饱含着农民的血汗?翻译结果为:As long as the spring sowing a seed,The autumn harvest a lot of food.Putian, no waste of land,Toiling farmers, still have to starve to death.Summer noon, the hot sun hot,Farmers also in work, sweat drip into the soil.Who think that we in the bowl of rice,Contain each of the farmer's sweat?还是有点意思吧。
python我的英文字典案例
python我的英文字典案例如果你想要创建一个Python程序,这个程序可以作为一个英文字典使用,那么下面是一个简单的示例。
这个程序使用字典数据结构来存储单词和它们的定义。
```python创建一个字典,键是单词,值是定义dictionary = {"apple": "A fruit that is round and red and has a yellow pit.","banana": "A long curved fruit which is yellow when ripe.","cherry": "A small red or black sweet fruit.","dog": "A domesticated mammal that is a member of the canine family.","cat": "A domesticated mammal that is a member of the cat family."}用户输入一个单词,程序查找并打印出该单词的定义word = input("请输入一个单词: ")if word in dictionary:print(dictionary[word])else:print("该单词不在字典中.")```在这个程序中,我们首先创建了一个字典,其中包含了一些单词和它们的定义。
然后,我们使用`input`函数来获取用户输入的单词,并使用`if`语句来检查这个单词是否在我们的字典中。
如果单词在字典中,我们就打印出它的定义。
如果单词不在字典中,我们就打印出一条错误消息。
Pyqt5实现英文学习词典
Pyqt5实现英⽂学习词典运⽤Python语⾔编写程序制作英⽂学习词典,词典有4个基本功能:添加、查询、删除和退出。
程序读取源⽂件路径下的txt格式词典⽂件,若没有就创建⼀个。
词典⽂件存储⽅式为“英⽂单词中⽂单词”,每⾏仅有⼀对中英释义。
程序会根据⽤户的选择进⼊相应的功能模块,并显⽰相应的操作提⽰。
当添加的单词已存在时,显⽰“该单词已添加到字典库”;当查询的单词不存在时,显⽰“字典库中未找到这个单词”;但需要删除某个单词时先查询再删除该单词的全部中英⽂释义。
⼀、演⽰效果1、整体效果2、添加:3、添加相同单词时:4、查找5、查找⽂档中不存在时5、删除⼆、源码PyCharm + Python3 + PyQt51、⼯程结构2、PyQt5设计UI源码# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'dic_UI.ui' ## Created by: PyQt5 UI code generator 5.11.3## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(672, 634)MainWindow.setStyleSheet("background-color: rgb(0, 0, 255);") self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout")self.gridLayout_4 = QtWidgets.QGridLayout()self.gridLayout_4.setObjectName("gridLayout_4")self.groupBox = QtWidgets.QGroupBox(self.centralwidget)font = QtGui.QFont()font.setPointSize(20)self.groupBox.setFont(font)self.groupBox.setStyleSheet("color: rgb(255, 255, 255);")self.groupBox.setObjectName("groupBox")self.widget = QtWidgets.QWidget(self.groupBox)self.widget.setGeometry(QtCore.QRect(20, 40, 601, 131))self.widget.setObjectName("widget")self.gridLayout = QtWidgets.QGridLayout(self.widget)self.gridLayout.setContentsMargins(0, 0, 0, 0)self.gridLayout.setObjectName("gridLayout")bel_2 = QtWidgets.QLabel(self.widget)font = QtGui.QFont()font.setPointSize(20)bel_2.setFont(font)bel_2.setObjectName("label_2")self.gridLayout.addWidget(bel_2, 0, 0, 1, 1)self.lineEdit_English = QtWidgets.QLineEdit(self.widget)font = QtGui.QFont()font.setPointSize(20)self.lineEdit_English.setFont(font)self.lineEdit_English.setStyleSheet("background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);")self.lineEdit_English.setText("")self.lineEdit_English.setObjectName("lineEdit_English")self.gridLayout.addWidget(self.lineEdit_English, 0, 1, 1, 1)self.pushButton_add = QtWidgets.QPushButton(self.widget)font = QtGui.QFont()font.setPointSize(16)self.pushButton_add.setFont(font)self.pushButton_add.setObjectName("pushButton_add")self.gridLayout.addWidget(self.pushButton_add, 0, 2, 1, 1)bel_3 = QtWidgets.QLabel(self.widget)font = QtGui.QFont()font.setPointSize(20)bel_3.setFont(font)bel_3.setObjectName("label_3")self.gridLayout.addWidget(bel_3, 1, 0, 1, 1)self.lineEdit_chinese = QtWidgets.QLineEdit(self.widget)font = QtGui.QFont()font.setPointSize(20)self.lineEdit_chinese.setFont(font)self.lineEdit_chinese.setStyleSheet("background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);")self.lineEdit_chinese.setObjectName("lineEdit_chinese")self.gridLayout.addWidget(self.lineEdit_chinese, 1, 1, 1, 1)self.pushButton_reset = QtWidgets.QPushButton(self.widget)font = QtGui.QFont()font.setPointSize(16)self.pushButton_reset.setFont(font)self.pushButton_reset.setObjectName("pushButton_reset")self.gridLayout.addWidget(self.pushButton_reset, 1, 2, 1, 1)self.gridLayout_4.addWidget(self.groupBox, 0, 0, 1, 1)self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)font = QtGui.QFont()font.setPointSize(20)self.groupBox_2.setFont(font)self.groupBox_2.setStyleSheet("color: rgb(255, 255, 255);")self.groupBox_2.setObjectName("groupBox_2")self.widget1 = QtWidgets.QWidget(self.groupBox_2)self.widget1.setGeometry(QtCore.QRect(40, 40, 561, 131))self.widget1.setObjectName("widget1")self.gridLayout_2 = QtWidgets.QGridLayout(self.widget1)self.gridLayout_2.setContentsMargins(0, 0, 0, 0)self.gridLayout_2.setObjectName("gridLayout_2")bel_4 = QtWidgets.QLabel(self.widget1)font = QtGui.QFont()font.setPointSize(20)bel_4.setFont(font)bel_4.setObjectName("label_4")self.gridLayout_2.addWidget(bel_4, 0, 0, 1, 1)self.lineEdit_find = QtWidgets.QLineEdit(self.widget1)font = QtGui.QFont()font.setPointSize(20)self.lineEdit_find.setFont(font)self.lineEdit_find.setStyleSheet("background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);")self.lineEdit_find.setText("")self.lineEdit_find.setObjectName("lineEdit_find")self.gridLayout_2.addWidget(self.lineEdit_find, 0, 1, 1, 1)self.pushButton_find = QtWidgets.QPushButton(self.widget1)font = QtGui.QFont()font.setPointSize(16)self.pushButton_find.setFont(font)self.pushButton_find.setObjectName("pushButton_find")self.gridLayout_2.addWidget(self.pushButton_find, 0, 2, 1, 1)self.groupBox_4 = QtWidgets.QGroupBox(self.widget1)self.groupBox_4.setTitle("")self.groupBox_4.setObjectName("groupBox_4")bel_result = QtWidgets.QLabel(self.groupBox_4)bel_result.setGeometry(QtCore.QRect(20, 10, 501, 51))font = QtGui.QFont()font.setPointSize(20)bel_result.setFont(font)bel_result.setText("")bel_result.setAlignment(QtCore.Qt.AlignCenter)bel_result.setObjectName("label_result")self.gridLayout_2.addWidget(self.groupBox_4, 1, 0, 1, 3)self.gridLayout_4.addWidget(self.groupBox_2, 1, 0, 1, 1)self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)font = QtGui.QFont()font.setPointSize(20)self.groupBox_3.setFont(font)self.groupBox_3.setStyleSheet("color: rgb(255, 255, 255);")self.groupBox_3.setObjectName("groupBox_3")bel_del = QtWidgets.QLabel(self.groupBox_3)bel_del.setGeometry(QtCore.QRect(40, 120, 561, 51))font = QtGui.QFont()font.setPointSize(20)bel_del.setFont(font)bel_del.setText("")bel_del.setAlignment(QtCore.Qt.AlignCenter)bel_del.setObjectName("label_del")self.widget2 = QtWidgets.QWidget(self.groupBox_3)self.widget2.setGeometry(QtCore.QRect(40, 40, 561, 61))self.widget2.setObjectName("widget2")self.gridLayout_3 = QtWidgets.QGridLayout(self.widget2)self.gridLayout_3.setContentsMargins(0, 0, 0, 0)self.gridLayout_3.setObjectName("gridLayout_3")bel_6 = QtWidgets.QLabel(self.widget2)font = QtGui.QFont()font.setPointSize(20)bel_6.setFont(font)bel_6.setObjectName("label_6")self.gridLayout_3.addWidget(bel_6, 0, 0, 1, 1)self.lineEdit_del = QtWidgets.QLineEdit(self.widget2)font = QtGui.QFont()font.setPointSize(20)self.lineEdit_del.setFont(font)self.lineEdit_del.setStyleSheet("background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);")self.lineEdit_del.setText("")self.lineEdit_del.setObjectName("lineEdit_del")self.gridLayout_3.addWidget(self.lineEdit_del, 0, 1, 1, 1)self.pushButton_del = QtWidgets.QPushButton(self.widget2)font = QtGui.QFont()font.setPointSize(16)self.pushButton_del.setFont(font)self.pushButton_del.setObjectName("pushButton_del")self.gridLayout_3.addWidget(self.pushButton_del, 0, 2, 1, 1)self.gridLayout_4.addWidget(self.groupBox_3, 2, 0, 1, 1)self.verticalLayout.addLayout(self.gridLayout_4)MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 672, 26))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.groupBox.setTitle(_translate("MainWindow", "添加词典"))bel_2.setText(_translate("MainWindow", "英⽂:"))self.pushButton_add.setText(_translate("MainWindow", "添加"))bel_3.setText(_translate("MainWindow", "中⽂:"))self.pushButton_reset.setText(_translate("MainWindow", "重置"))self.groupBox_2.setTitle(_translate("MainWindow", "查找词典"))bel_4.setText(_translate("MainWindow", "英⽂:"))self.pushButton_find.setText(_translate("MainWindow", "查找"))self.groupBox_3.setTitle(_translate("MainWindow", "删除词典"))bel_6.setText(_translate("MainWindow", "英⽂:"))self.pushButton_del.setText(_translate("MainWindow", "删除"))3、后台源码from PyQt5.QtWidgets import *class DIC:def __init__(self, ui, mainWnd):self.ui = uiself.mainWnd = mainWndself.mainWnd.setWindowTitle('英⽂学习词典作者:申俊')self.ui.pushButton_add.clicked.connect(self.add)self.ui.pushButton_reset.clicked.connect(self.reset)self.ui.pushButton_find.clicked.connect(self.find)self.ui.pushButton_del.clicked.connect(self.delate)def add(self):yinwen = self.ui.lineEdit_English.text()zhongwen = self.ui.lineEdit_chinese.text()print("添加:", yinwen, zhongwen)flag = 0dic = {}try:f = open("2016117249.txt", 'r')except FileNotFoundError:open("2016117249.txt", mode='w', encoding='utf-8')f = open("2016117249.txt", 'r')for line in f.readlines():line = line.replace("\n", "")line = list(line.split(","))key = line[0]coment = line[1:]dic[key] = comentif yinwen in dic.keys():f.close()flag = 1bel_result.setText("该单词已添加到字典库!")breakelse:f.close()if flag != 1:fw = open("2016117249.txt", 'a')try:fw.write(yinwen + ',' + zhongwen + '\n')bel_result.setText("添加成功!")except:bel_result.setText("添加失败!")fw.close()def reset(self):self.ui.lineEdit_chinese.clear()self.ui.lineEdit_English.clear()bel_result.setText("")def find(self):w = self.ui.lineEdit_find.text()fr = open("2016117249.txt", 'r')dic = {}for line in fr.readlines():line = line.replace("\n", "") # 去除每⼀⾏末尾的换⾏符line = list(line.split(",")) # 将每⾏的英⽂与各个汉语意思分隔开,⽣成⼀个列表 key = line[0] # 将每⾏开头的英⽂设置为键coment = line[1:] # 将1往后位置的所有汉语意思设置为值dic[key] = coment # 设置字典if w in dic.keys(): # 如果输⼊的单词存在,则对其键值打印bel_result.setText("翻译结果:" + str(dic[w]))else:bel_result.setText("字典库中未找到这个单词")fr.close()def delate(self):reply = QMessageBox.question(self.mainWnd, 'Message', '确认删除',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:word = self.ui.lineEdit_del.text()lines = [l for l in open("2016117249.txt", "r") if l.find(word, 0, len(word)) != 0] fd = open("2016117249.txt", "w")try:fd.writelines(lines)bel_del.setText(word + "已经被删除")except:bel_del.setText(word + "删除失败")fd.close()4、主程序import sysfrom dic_UI import Ui_MainWindowfrom PyQt5.QtWidgets import *from dictionary import DICif __name__ == '__main__':app = QApplication(sys.argv)mainWnd = QMainWindow()ui = Ui_MainWindow()# 可以理解成将创建的 ui 绑定到新建的 mainWnd 上ui.setupUi(mainWnd)display = DIC(ui, mainWnd)mainWnd.show()sys.exit(app.exec_())以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
python中英文词汇对照表
python中英文词汇对照表在Python中,可以使用字典(dictionary)来创建一个中英文词汇对照表。
以下是一个示例:python# 创建一个中英文词汇对照表chinese_english_dict = {"你好": "Hello","世界": "World","Python": "Python","编程": "Programming","字典": "Dictionary"}# 打印对照表for chinese, english in chinese_english_dict.items():print(f"{chinese}: {english}")这个例子中,我们创建了一个名为chinese_english_dict的字典,它包含了一些中英文词汇。
然后,我们使用items()方法来遍历字典中的每一对键值对,并使用print()函数将它们打印出来。
如果你想查找某个词汇的英文对应词,你可以使用字典的get()方法,如下所示:python# 查找词汇的英文对应词print(chinese_english_dict.get("Python")) # 输出: Python如果你要查找的词汇在字典中不存在,get()方法会返回None。
如果你想给出一个默认值,可以在get()方法中传递这个值,例如:python# 查找词汇的英文对应词,如果词汇不存在,返回默认值print(chinese_english_dict.get("Java", "Unknown")) # 输出: Unknown。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字典最快速的实现方法是trie tree。
这个树是专门用来实现字典的。
但是trie tree的删除操作比较麻烦。
用二叉查找树可以实现,速度也可以很快。
AVL tree只不过是平衡的二叉树,在字典这个应用上没有客观的速度提升,因为字典不会产生极端化的二叉树(链表)。
下面是我的二叉查找树的代码。
二叉查找树的优点是实现容易,而且它的inorder traverse 既是按照字母顺序的输出。
//binary search tree, not self-balancing
//by Qingxing Zhang, Dec 28,2009. prep for google interview
#include <iostream>
using namespace std;
struct BST
{
int data;
BST *left;
BST *right;
};
//runtime: O(logn) on average, O(n) worst case
bool search(BST *&root, int key)//return false if the key doesn't exist
{
if(root==NULL)
return false;
if(key < root->data)
return search(root->left,key);
else if(key > root->data)
return search(root->right,key);
else
return true;
}
//runtime: O(logn)on average, O(n) worst case
bool insert(BST *&root, int key)//return false if the key already exists
{
if(root==NULL)
{
BST *node = new BST;
node->data = key;
node->left = node->right = NULL;
root = node;
return true;
}
else if(key < root->data)
return insert(root->left,key);
else if(key > root->data)
return insert(root->right,key);
else
return false;
}
//runtime:O(logn) on average, O(n) worst case
bool remove(BST *&root,int key)//return false if the key doesn't exist.
{
if(root==NULL)//no such key
return false;
else if(key < root->data)
return remove(root->left,key);
else if(key > root->data)
return remove(root->right,key);
else//node found
{
if((root->left==NULL)&&(root->right==NULL))//no child(leaf node)
{
BST *tmp = root;
root = NULL;
delete tmp;
}
else if((root->left==NULL)||(root->right==NULL))//one child
{
BST *tmp = root;
if(root->left==NULL)
root = root->right;
else
root = root->left;
delete tmp;
}
else//two children:replace node value with inorder successor and delete that node {
BST *tmp = root->right;
while(tmp->left!=NULL)
tmp = tmp->left;
int tmpdata = tmp->data;
remove(root,tmpdata);
root->data = tmpdata;
}
return true;
}
}
//runtime:O(n)
void inorder(BST *&node) {
if(node!=NULL)
{
inorder(node->left);
cout << node->data << " ";
inorder(node->right);
}
}
//runtime:O(n)
void preorder(BST *&node) {
if(node!=NULL)
{
cout << node->data << " ";
preorder(node->left);
preorder(node->right);
}
}
//runtime:O(n)
void postorder(BST *&node) {
if(node!=NULL)
{
postorder(node->left);
postorder(node->right);
cout << node->data << " "; }
}
int main()
{
bool b;
BST *root = NULL;
b = insert(root,1);
b = insert(root,7);
b = insert(root,5);
b = insert(root,77);
b = insert(root,10);
b = insert(root,4);
b = insert(root,13);
//inorder
cout << "In-order:";
inorder(root);
cout << endl;
//preorder
cout << "Pre-order:";
preorder(root);
cout << endl;
//postorder
cout << "Post-order:";
postorder(root);
cout << endl;
// search for 7
if(search(root,7))
cout << "7 found!" << endl;
else
cout << "7 doesn't exist!" << endl;
b = remove(root,7);
cout << "----------------" << endl;
//inorder
cout << "In-order:";
inorder(root);
cout << endl;
//preorder
cout << "Pre-order:";
preorder(root);
cout << endl;
//postorder
cout << "Post-order:";
postorder(root);
cout << endl;
cout << "7 found!" << endl;
else
cout << "7 doesn't exist!" << endl; return 0;
}。