版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*题目:编写循序查找程序* 编写二分查找程序* 编写建立二叉排序树的程序* 编写在二叉排序树上的查找、输入、删除结点的程序* 编写二叉排序树的中序输出的程序* 设计一个选择式菜单,一级菜单形式如下:* 查 找 子 系 统* * * 1-顺 序 查找 * * 2-二 分 查找 * * 3-二叉排序树 * * 0-返 回 * * 请选择菜单号(0-3):* 二叉排序树的二级菜单如下:* 二叉排序树* * * 1-更新二叉排序树 * * 2-查 找 结 点 * * 3-插 入 结 点 * * 4-删 除 结 点 * * 5-中序输出排序树 * * 0-返 回 * * 请选择菜单号(0-5):*/#
2、include #include #include #define SEARCHMAX 30typedef struct node int trData; /根节点 struct node *lchild; /左子树 struct node *rchild; /右子树BtNode, *pBtNode;void seqSearch();void binSearch();void btSearch();pBtNode createBT();void searchBT(pBtNode T, int k);void insBT(pBtNode *T, int k);void delBT(pBtNode
3、 *T, int k);void inorderBT(pBtNode T);void main() int choice, k = 1; while (k) printf(n 查 找 子 系 统n); printf(*n); printf(* 1-顺 序 查找 *n); printf(* 2-二 分 查找 *n); printf(* 3-二叉排序树 *n); printf(* 0-返 回 *n); printf(*n); printf(请选择菜单号(0-3):); fflush(stdin); scanf(%d, &choice); switch(choice) case 1: seqSear
4、ch(); break; case 2: binSearch(); break; case 3: btSearch(); break; case 0: k = 0; break; default: printf(输入错误,请重新输入。); getchar(); k = 1; break; void seqSearch() /顺序查找 int aSEARCHMAX, x, y, i; char ch; printf(建立一个整数的顺序表(以-1结束):); for (i = 0; iSEARCHMAX; i+) scanf(%d, &ai); getchar(); if (ai = -1) /记
5、录结束位置,结束循环 y = i; break; printf(是否需要查找(Y/N):); scanf(%c, &ch); while (ch = y|ch = Y) printf(请输入要查找的数据:n); scanf(%d, &x); getchar(); i = 0; /找到数组的结束位置。 while (i y-1&ai != x) /找到要查找的数据的位置 i+; if (i = -1) /没找到 printf(对不起,没有找到。n); else printf(该数据在第%d个位置上。n, i+1); printf(是否继续查找(Y/N):); scanf(%c, &ch); vo
6、id binSearch() /二分查找 int bSEARCHMAX, i, y, x, low, mid, high, n; char ch; printf(建立递增有序的查找顺序表(以-1结束):n); for (i = 0; iSEARCHMAX; i+) scanf(%d, &bi); getchar(); if (bi = -1) /记录结束位置,结束循环 y = i; break; printf(是否需要查找(Y/N):); scanf(%c, &ch); while (ch = y|ch = Y) printf(请输入要查找的数据:); scanf(%d, &x); getch
7、ar(); low = 0; /低 high = y-1; /高 n = 0; /记录次数 while (low x) /在左边 high = mid-1; else if (bmid high) printf(对不起,没有找到该数据。n); printf(共进行%d次比较。n, n); if (bmid trData = k) /判断是否找到该数据 printf(已找到数据。n); return; f = (k trData )?f-lchild:f-rchild; /判断下一个查找的位置 printf(没有找到数据。n);void insBT(pBtNode *T, int k) /插入二
8、叉树结点 pBtNode f, p; p = (*T); /指向指针的指针 while (p) /当结点不为空 if (p-trData = k) printf(树中已有%d,不需要插入。, k); return; else f = p; p = (k trData)?p-lchild:p-rchild; /判断插入的数据的位置 p = (BtNode *)malloc(sizeof(BtNode); /分配空间 p-trData = k; p-lchild = p-rchild = NULL; if (*T) = NULL) (*T) = p; else if (ktrData) f-lch
9、ild = p; else f-rchild =p; void delBT(pBtNode *T, int k) /删除二叉树结点 pBtNode p, q, child, parent = NULL; p = *T; while (p) /找到输入的数据的位置 if (p-trData = k) break; parent = p; /记录上一个结点 p = (k trData)?p-lchild:p-rchild; if (!p) /没有找到位置 printf(没有找到你要删除的数据结点。n); return; q = p; if (q-lchild&q-rchild) for (parent = q, p = q-rchild; p-lchild; parent = p, p=p-lchild) ; child = (p-lchild)?p-lchild:p-rchild; /下一个指针的指向 if (!parent) *T = child; else if (p = parent-lchild) parent-lchild = child; else parent-rchild = child; if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年现代工业设计史论问题
- 传染病防控工作总结
- 村干部平安建设不力整改措施
- 2026年大学室内游戏活动策划案例
- 2026年暑期健身房活动方案策划书
- 双减背景下的作业设计语文
- 苏教版科学小学五年级上册 期末测试卷3 (三)
- 苏教版科学小学五年级上册 期末测试卷【综合卷】 (二)
- 医疗器械维修保养服务
- 苏教版科学小学五年级上册 期末测试卷 (四)
- 2025年江苏省无锡市梁溪区侨谊教育集团小升初数学招生试卷(含答案解析)
- 行政人事自我介绍
- 博雷顿产品介绍
- 支气管哮喘急性发作的紧急救护技巧
- 【耳鼻喉9版】绪论和耳科学第七章 中耳炎性疾病
- 成人术中非计划低体温预防与护理-2024中华护理学会团体标准
- 《工业用N,N-二乙基羟胺(DEHA)》
- 《梨状肌综合征》课件
- 医院品管圈大赛课题研究型、问题解决型、平衡记分卡评分标准
- 第八届全国职工职业技能大赛(网络和信息安全管理员)浙江选拔赛试题库-上(单选题部分)
- 轮椅转运法操作评分标准
评论
0/150
提交评论