王道C语言督学营OJ课后习题(课时15)

2024-04-02 10:04

本文主要是介绍王道C语言督学营OJ课后习题(课时15),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef int KeyType;
typedef struct BSTNode{KeyType key;struct BSTNode *lchild,*rchild;
}BSTNode,*BiTree;
//递归
int BST_Insert(BiTree &T,KeyType k)
{if(NULL==T){//为新结点申请空间,第一个作为树根,后面递归再进入的不是树根,是为叶子结点T= (BiTree)calloc(1,sizeof(BSTNode) );T->key=k;return 1;} else if(k==T->key)return 0;//发现相同元素,不插入,考研不考else if(k<T->key)return BST_Insert(T->lchild,k);elsereturn BST_Insert(T->rchild,k);
}
void  Creat_BST(BiTree &T,KeyType *str,int n)
{T=NULL;//T是树根int i=0;while (i<n){BST_Insert(T,str[i]);//把某一个结点放入二叉树i++;}
}
int element_pos=0;
void InOrder(BiTree T,int *arr)
{if(T!=NULL){InOrder(T->lchild,arr);printf("%3d",T->key);arr[element_pos++]=T->key;InOrder(T->rchild,arr);}
}
BSTNode *BST_Search(BiTree T,KeyType key,BiTree &p)
{p=NULL;while (T!=NULL&&key!=T->key){p=T;if (key<T->key)T=T->lchild;elseT=T->rchild;}return T;
}
int BinarySearch(int *str,KeyType key,int len)
{int low=0,high=len-1,mid;while (low<=high){mid=(low+high)/2;if(key>str[mid]){low=mid+1;} else if (key<str[mid]){high=mid-1;} else{return mid;}}return -1;
}
int main() {BiTree T=NULL;//树根BiTree parent;//存储父亲结点的地址值BiTree search;int pos;KeyType str[10];for (int i = 0; i < 10; ++i) {scanf("%d",&str[i]);}Creat_BST(T,str,10);InOrder(T,str);printf("\n");int key_pos;key_pos= BinarySearch(str,21,10);printf("%d",key_pos);return 0;
}

 

这篇关于王道C语言督学营OJ课后习题(课时15)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869678

相关文章

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用