当前位置: 首页 > news >正文

周口建设公司网站网站基础功能

周口建设公司网站,网站基础功能,网站建设文献英文,网站设计怎么做好目录 前言 已完成内容 二叉排序树实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-BinarySearchTreeCommon.cpp 04-BinarySearchTreeFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容#xff0c;除其中使用到C引用外#xff0c;全为C语言…目录 前言 已完成内容 二叉排序树实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-BinarySearchTreeCommon.cpp 04-BinarySearchTreeFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容除其中使用到C引用外全为C语言代码。使用C引用主要是为了简化指针的使用避免二重指针的出现。 已完成内容 [数据结构]01-顺序表C语言实现_Chandni.的博客-CSDN博客 [数据结构]02-单链表C语言实现_Chandni.的博客-CSDN博客 [数据结构]03-栈C语言实现_Chandni.的博客-CSDN博客 [数据结构]04-循环队列数组C语言实现_Chandni.的博客-CSDN博客 [数据结构]05-循环队列链表C语言实现_Chandni.的博客-CSDN博客 [数据结构]06-队列链表带头结点C语言实现_Chandni.的博客-CSDN博客 [数据结构]07-二叉树无头结点C语言实现_Chandni.的博客-CSDN博客 [数据结构]08-顺序查找顺序表指针实现形式C语言实现_Chandni.的博客-CSDN博客 [数据结构]09-二分查找顺序表指针实现形式C语言实现_Chandni.的博客-CSDN博客 二叉排序树实现 01-开发环境 语言C/C14 编译器MinGW64 集成开发环境CLion2022.1.3 02-文件布局 请在CLion集成开发环境中创建C可执行程序否则无法运行原因上面已解释。 ​​  03-代码 01-主函数 用于测试二叉排序树的创建、查找、删除。 其中创建、查找使用了两种方式实现。一种是非递归形式for循环另一种是递归形式。 #include ./Head/BinarySearchTreeData.h #include ./Source/BinarySearchTreeCommon.cpp #include ./Source/BinarySearchTreeFunction.cppint main() {// 创建BinaryTree BST NULL;int data[7] {54, 20, 66, 40, 28, 79, 58};int Length 7;BinarySearchTreeCreate(BST, data, Length);InOrderTraversalTree(BST); // 有小到大printf(\n);// 查找BinaryTree OutputTree;OutputTree BinarySearchTreeSearch(BST, 66);if (OutputTree) {printf(Value %d\n, OutputTree-data);} else {printf(Not Find.\n);}// 递归创建BinaryTree BST1 NULL;BinarySearchTreeRecursionCreate(BST1, data, Length);InOrderTraversalTree(BST1); // 有小到大printf(\n);// 查找OutputTree BinarySearchTreeRecursionSearch(BST1, 66);if (OutputTree) {printf(Value %d\n, OutputTree-data);} else {printf(Not Find.\n);}// 删除BinarySearchTreeRecursionDelete(BST, 66);InOrderTraversalTree(BST);printf(\n);return 0; }02-头文件 用于存储结构体和常量等。 // // Created by 24955 on 2023-03-04. //#ifndef INC_03_BINARYSEARCH_SORT_TREE_BINARYSEARCHTREEDATA_H #define INC_03_BINARYSEARCH_SORT_TREE_BINARYSEARCHTREEDATA_H // 头文件 #include stdio.h #include stdlib.h// 常量 typedef int ElemType;// 结构体 typedef struct BinaryTreeNode {ElemType data;struct BinaryTreeNode *lChild, *rChild; } BinaryTreeNode, *BinaryTree; #endif //INC_03_BINARYSEARCH_SORT_TREE_BINARYSEARCHTREEDATA_H03-BinarySearchTreeCommon.cpp 用于存储二叉排序树打印函数中序遍历--为有序排列从小到大。 // // Created by 24955 on 2023-03-04. // // 中序遍历 void InOrderTraversalTree(BinaryTree BTree) {/** 1. 左、自身、右*/if (BTree ! NULL) {InOrderTraversalTree(BTree-lChild);printf(%3d, BTree-data);InOrderTraversalTree(BTree-rChild);} } 04-BinarySearchTreeFunction.cpp 用于存储二叉排序树创建、查找、删除等函数。 // // Created by 24955 on 2023-03-04. // // 二叉排序树插入结点 void BinarySearchTreeInsert(BinaryTree BST, ElemType value) {/** 1. 初始化新结点* 2. 判断是否为根节点* 3. 不为根节点比较两节点数值大小决定插入位置*/// 初始化新结点BinaryTree NewNode (BinaryTree) calloc(1, sizeof(BinaryTreeNode));NewNode-data value;// 循环树结点标签BinaryTree BSTLabel BST;if (BST NULL) {BST NewNode;} else {// 插入结点while (BSTLabel) {if (BSTLabel-data value) {if (BSTLabel-lChild NULL) {BSTLabel-lChild NewNode;break;} else {BSTLabel BSTLabel-lChild;}} else {if (BSTLabel-rChild NULL) {BSTLabel-rChild NewNode;break;} else {BSTLabel BSTLabel-rChild;}}}// 或者采用以下代码(用空间减少循环中判断即换时间)/*BinaryTree BSTLabelParent;while (BSTLabel) {BSTLabelParent BSTLabel;if (BSTLabel-data value) {BSTLabel BSTLabel-lChild;} else { // 不用考虑相等情况408中未考过存在相同值的情况BSTLabel BSTLabel-rChild;}}if (BSTLabelParent-data value){BSTLabelParent-lChild NewNode;} else {BSTLabelParent-rChild NewNode;}*/} }// 创建二叉排序树 void BinarySearchTreeCreate(BinaryTree BST, const ElemType data[], int Length) {/** 1. 初始化树根* 2. 按数据值大小插入树*/// const是C语言的一种关键字它所限定的变量是不允许被改变的// 树根BST NULL;for (int i 0; i Length; i) {BinarySearchTreeInsert(BST, data[i]);} }// 二叉排序树查找(也可以采用递归方式) BinaryTree BinarySearchTreeSearch(BinaryTree BST, ElemType value) {/** 1. 判断根节点值是否与待查找值相等* 2. 若相等返回根结点地址* 3. 若不相等判断是否大于当前结点值若小于BST BST-lChild;反之大于BST BST-rChild;* 4. 若未查到返回NULL*/while (BST) {if (BST-data value) {return BST;} else if (BST-data value) {BST BST-lChild;} else {BST BST-rChild;}}return NULL; }/*************************** 以下为递归方式实现 *******************************/ // 递归方法插入树新结点 void BinarySearchTreeRecursionInsert(BinaryTree BST, ElemType value) {/** 1. 判断当前结点是否为空* 2. 若为空插入* 3. 若不为空判断大小进行递归*/if (BST NULL) {// 初始化新结点BinaryTree NewNode (BinaryTree) calloc(1, sizeof(BinaryTreeNode));NewNode-data value;BST NewNode;} else {if (BST-data value) {BinarySearchTreeRecursionInsert(BST-lChild, value);} else {BinarySearchTreeRecursionInsert(BST-rChild, value);}} }// 调用递归插入函数创建二叉排序树 void BinarySearchTreeRecursionCreate(BinaryTree BST, const ElemType data[], int Length) {/** 1. 初始化树根* 2. 按数据值大小插入树*/// const是C语言的一种关键字它所限定的变量是不允许被改变的// 树根BST NULL;for (int i 0; i Length; i) {BinarySearchTreeRecursionInsert(BST, data[i]);} }void BinarySearchTreeRecursionDelete(BinaryTree BST, ElemType value) {/** 1. 若删除元素值比当前元素值小递归传入左孩子* 2. 若删除元素值比当前元素值大递归传入右孩子* 3. 若相等则判断当前元素左、右孩子是否为空* 4. 若其中任意一个为空则将另一个替代要当前元素(要删除元素)* 5. 若都不为空循环寻找当前元素左子树中最大值替代当前元素值并删除左子树中用于替代的结点*/// 防止输入的为树中未包含元素无法停止递归if (BST NULL) {return;}if (BST-data value) {BinarySearchTreeRecursionDelete(BST-lChild, value);} else if (BST-data value) {BinarySearchTreeRecursionDelete(BST-rChild, value);} else {BinaryTree FreeNode;// 若左、右孩子其中任意一个为空则将另一个替代要当前元素(要删除元素)if (BST-lChild NULL) {FreeNode BST;BST BST-rChild;free(FreeNode);} else if (BST-rChild NULL) {FreeNode BST;BST BST-lChild;free(FreeNode);} else {// 左、右孩子都不为空// 一般删除策略为左子树的最大数据 或 右子树的最小数据替代要删除的结点// 此处采用左子树的最大数据BinaryTree TemporaryTree BST-lChild;// 寻找左子树中的最大值while (TemporaryTree-rChild) {TemporaryTree TemporaryTree-rChild;}// 替代删除替代结点BST-data TemporaryTree-data;// 此处注意不要传入TemporaryTree// 经单点调试发现传入TemporaryTree会造成乱码(未将叶子结点设为NULL)BinarySearchTreeRecursionDelete(BST-lChild, TemporaryTree-data);}} }// 二叉排序树查找-递归方式 BinaryTree BinarySearchTreeRecursionSearch(BinaryTree BST, ElemType value) {/** 1. 返回值为NULL或所查找到的结点*/if (BST ! NULL BST-data ! value) {if (BST-data value) {BST BinarySearchTreeRecursionSearch(BST-lChild, value);} else {BST BinarySearchTreeRecursionSearch(BST-rChild, value);}}return BST; } 结语 此博客主要用于408考研数据结构C语言实现记录内有不足可留言可讨论。
http://www.w-s-a.com/news/18431/

相关文章:

  • 网站开发文档合同怎么在wordpress导航条下方加入文字广告链接
  • 网站建设需怎么做有网站怎么做企业邮箱
  • 网站制作流程视频教程小程序多少钱一年
  • 暗网是什么网站花都网站建设哪家好
  • 贵州网站开发流程晋江论坛手机版
  • 网站建设丿金手指谷哥14阿里巴巴官网电脑版
  • 网站开发招聘信息匿名ip访问网站受限
  • 网站转app工具网站规划建设与管理维护大作业
  • flash是怎么做网站的.net购物网站开发
  • 烟台网站建设求职简历品质商城网站建设
  • 做百度外链哪些网站权重高点做网站具备的条件
  • 怎么样用ppt做网站红番茄 网站点评
  • 建设银行河北分行招聘网站哪里能找到网站
  • 兰州营销型网站网站建设收费标准
  • 网站首页动图怎么做自己做网站很难
  • 自建网站如何盈利推广引流最快的方法
  • 网页设计网站结构图怎么弄网站用户 分析
  • 企业手机网站建设策划天津网页设计工作
  • 苏州vr全景网站建设公司怎么讲解网页的制作技术
  • 徐州智能建站怎么做苏州建设网站首页
  • 网站支付功能报价wordpress主页透明
  • asia域名的网站宁波模板建站源码
  • 官网网站怎么做个人网站盈利
  • 青龙桥网站建设网站同时做竞价和优化可以
  • 沭阳建设网站婴儿辅食中企动力提供网站建设
  • 常州做网站的公司济宁网站建设seo
  • 用wordpress做企业网站视频教程韶关建设网站
  • 怎么做一个免费的网站云南网站设计选哪家
  • dw做六个页面的网站做网站运营有前途吗
  • 中级网站开发工程师 试题战地之王网站做任务