用二叉树,实现建立词典,查找,插入,删除单词.doc_第1页
用二叉树,实现建立词典,查找,插入,删除单词.doc_第2页
用二叉树,实现建立词典,查找,插入,删除单词.doc_第3页
用二叉树,实现建立词典,查找,插入,删除单词.doc_第4页
用二叉树,实现建立词典,查找,插入,删除单词.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,.txt1617#include #include #include #include #define MAXWORD 100typedef struct tnodechar *word;int count;struct tnode *left;struct tnode *right;/ tnode(char *s, int w, tnode *p, tnode *q)/ / *tnodeptr;struct tnode *addtree(struct tnode *, char *);void deltree(struct tnode *, char *);void treeprint(struct tnode*, FILE *fp, int n, int &m);void showMenu();void main()int N, k; FILE *fp;struct tnode *root;char wordMAXWORD, txt25;root=NULL; while (1)showMenu();scanf(%d, &N);switch(N)case 1:printf( 0 :n);while (scanf(%s, word)!=EOF)if(word0=0) break;if(isalpha(word0)root=addtree(root, word);printf(n);break;case 2:if(root=NULL) printf(NULLn); break;printf(n);treeprint(root, fp, 0,k = 1);break;case 3:printf(n);scanf(%s, word);deltree(root, word);break;case 4:printf(: );scanf(%s, txt);strcat(txt, .txt);fp=fopen(txt, w);if(fp=NULL) printf(!); break;treeprint(root, fp, 1, k = 1);fclose(fp);printf(%s n, txt);break;case 0:return ;default:printf(!);break;return ;struct tnode* talloc();char *strdup(char*);struct tnode *addtree(struct tnode *p, char *w)int cond;if (p=NULL)p=talloc();p-word=strdup(w);p-count=1;p-left=p-right=NULL;else if(cond=strcmp(w, p-word)=0)p-count+;else if (condleft=addtree(p-left, w);elsep-right=addtree(p-right, w);return p;/* 4* 1. * 2. * 3. * 4. * a. * * b. */void deltree(struct tnode *p, char *w)int co, t=0;struct tnode *q=NULL, *r=NULL;while (p!=NULL & (co=strcmp(w, p-word)!=0)if(co left; t =1;else q =p; p=p-right; t =0;if(p=NULL)printf(n);else if (p-left=NULL & p-right=NULL) /if(t=1)q-left= NULL;else q-right=NULL;else if(p-left & p-right=NULL) /if(t=1) q-left=p-left;else q-right =p-left;else if(p-left=NULL & p-right) /if(t=1)q-left=p-right;else q-right=p-right;else / r=p-left;while(r-right)r =r-right;r-right =p-right;if(t=1)q-left = r;else q-right = r;printf(%s n, w);return ;/-/print/-void treeprint(struct tnode* p,FILE *fp, int n, int &m)if(p!=NULL)treeprint(p-left, fp, n,m);if(n)fprintf(fp, %-4d%-4d%sn,m+,p-count,p-word);else printf(%-4d%-4d%sn,m+,p-count,p-word);treeprint(p-right, fp, n,m);struct tnode *talloc()return (struct tnode*)malloc(sizeof(struct tnode);char *strdup(char*s)char *p;p=(char*)malloc(strlen(s)+1);if(p!=NULL) strcpy(p, s);return p;void showMenu()printf(n t n 1. n 2. n 3. n 4. n 0. n);/*struct Node int id; Node *left,*right;class IDTree Node *root; void Show(Node*& t) if(t=NULL) return; Show(t-left); coutidright); void Add(Node*& t,int n) if(t=NULL) t=new Node; t-id=n; t-left=t-right=NULL; else if(nid) Add(t-left,n); else Add(t-right,n); int Count(Node*t) int i=1; coutileft); i+=Count(t-right); return i; else return 0; public: IDTree() root=NULL; void AddID(int n) Add(root,n); void ShowID() Show(root); int CountID() return Count(root); bool Find(int n) Node *t=root; while(t) if(n=t-id) return true; if(nt-id) t=t-right; if(nid) t=t-left; return false;void Removeint n)*/*void Remove(Node *BT,int x) Node *p=*BT,*q,*r,*t; q=NULL; while(p!=NULL&p-data!=x) if(xdata) q=p; p=p-left; else q=p; p=p-right; if(p=NULL) coutleft=NULL)/ if(q=NULL)/ t=p-right; else if(q-left=p) q-left=p-right; else q-r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论