2024.7.24 作业

1.二叉树的创建、遍历自己实现一遍

bitree.h

#ifndef BITREE_H
#define BITREE_H#include <myhead.h>typedef char datatype;typedef struct Node
{datatype data;struct Node *left_child;struct Node *right_child;
}Node,*BiTreePtr;//创建二叉树
BiTreePtr tree_create();//先序遍历
void prio_order(BiTreePtr B);//中序遍历
void in_order(BiTreePtr B);//后序遍历
void post_order(BiTreePtr B);#endif

bitree.c 

#include "bitree.h"//创建二叉树
BiTreePtr tree_create()
{char data = 0;scanf(" %c",&data);if( data=='#'){return NULL;}BiTreePtr p = (BiTreePtr)malloc(sizeof(Node));if( NULL==p ){printf("节点申请失败\n");return NULL;}p->data = data;p->left_child = tree_create();p->right_child = tree_create();return p;
}//先序遍历
void prio_order(BiTreePtr B)
{if( NULL==B ){return ;}printf("%c\t",B->data);prio_order(B->left_child);prio_order(B->right_child);
}//中序遍历
void in_order(BiTreePtr B)
{if( NULL==B ){return ;}in_order(B->left_child);printf("%c\t",B->data);in_order(B->right_child);
}//后序遍历
void post_order(BiTreePtr B)
{if( NULL==B ){return ;}post_order(B->left_child);post_order(B->right_child);printf("%c\t",B->data);
}

main.c 

#include "bitree.h"int main(int argc, const char *argv[])
{BiTreePtr B = tree_create();if( NULL==B ){printf("创建失败\n");return -1;}printf("创建成功\n");printf("先序遍历结果为:");prio_order(B);printf("\n");printf("中序遍历结果为:");in_order(B);printf("\n");printf("后序遍历结果为:");post_order(B);printf("\n");return 0;	
}

2.把所有的排序算法自己实现一遍

#include <myhead.h>void bubble_sort(int *arr,int n)              //冒泡排序
{for(int i=1;i<n;i++){int flag=0;for(int j=0;j<n-i;j++){if(arr[j]>arr[j+1]){flag=1;int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}if(flag==0){break;}}printf("冒泡排序成功\n");
}void select_sort(int *arr, int n)      //选择排序
{for(int i=0;i<n;i++){int x=i;for(int j=i+1;j<n;j++){if(arr[x]>arr[j]){x=j;}}if(x!=i){int temp = arr[x];arr[x]= arr[i];arr[i] = temp;}}printf("选择排序成功\n");
}void putout(int *arr,int n)                  //输出
{printf("当前元素为:");for(int i=0;i<n;i++){printf("%d\t",arr[i]);}printf("\n");
}void insert_sort(int *arr, int n)         //插入排序
{int i,j;for(i=1;i<n;i++){int x=arr[i];for(j=i-1;j>=0 && arr[j]>=x;j--){arr[j+1]=arr[j];}arr[j+1]=x;}printf("插入排序成功\n");
}int part(int *arr,int low,int high)
{int x=arr[low];while(high>low){while( arr[high]>=x && high>low ){high--;}	arr[low]=arr[high];while( arr[low]<=x && high>low ){low++;}	arr[high]=arr[low];}arr[low]=x;return low;
}void quick_sort(int *arr,int low,int high)     //快速排序
{if(low>=high){return;}int mid=part(arr,low,high);quick_sort(arr,low,mid-1);quick_sort(arr,mid+1,high);printf("快速排序成功\n");
}int main(int argc,const char *argv[])
{int arr[]={7,8,5,2,3,0,1,9};int len =sizeof(arr)/sizeof(arr[0]);bubble_sort(arr,len);putout(arr,len);int brr[]={7,8,5,2,3,0,1,9};select_sort(brr,len);putout(brr,len);int crr[]={7,8,5,2,3,0,1,9};insert_sort(crr,len);putout(crr,len);int drr[]={7,8,5,2,3,0,1,9};quick_sort(drr,0,len-1);putout(drr,len);return 0;
}

思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1487740.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MinerU、Magic-PDF、Magic-Doc

文章目录 一、关于 MinerU二、Magic-PDF1、简介2、项目全景3、流程图4、子模块仓库 三、Magic-PDF 上手指南1、配置要求2、安装配置1. 安装Magic-PDF2. 下载模型权重文件3. 拷贝配置文件并进行配置4. 使用CUDA或MPS加速推理CUDAMPS 3、使用说明1) 通过命令行使用直接使用更多用…

带您详细了解安全漏洞的产生和防护

什么是漏洞&#xff1f; 漏洞是 IT、网络、云、Web 或移动应用程序系统中的弱点或缺陷&#xff0c;可能使其容易受到成功的外部攻击。攻击者经常试图寻找网络安全中的各种类型的漏洞来组合和利用系统。 一些最常见的漏洞&#xff1a; 1.SQL注入 注入诸如 SQL 查询之类的小代…

机器学习周报第四周(7.15-7.21)

文章目录 摘要Abstract1.批次&#xff08;Batch&#xff09;和动量&#xff08;momentum&#xff09;1.1 批次&#xff08;Batch&#xff09;1.2 Momentum 2.自动调整学习速率&#xff08;Learning rate&#xff09;2.1 Adagrad 算法2.2 RMSProp2.3 Adam2.4 学习率调度 3.朴素贝…

美摄科技企业级视频拍摄与编辑SDK解决方案

在数字化浪潮汹涌的今天&#xff0c;视频已成为企业传递信息、塑造品牌、连接用户不可或缺的强大媒介。为了帮助企业轻松驾驭这一视觉盛宴的制作过程&#xff0c;美摄科技凭借其在影视级非编技术领域的深厚积累&#xff0c;推出了面向企业的专业视频拍摄与编辑SDK解决方案&…

JVM系列(二) -类的加载过程

一、背景介绍 我们知道 Java 是先通过编译器将.java类文件转成.class字节码文件&#xff0c;然后再通过虚拟机将.class字节码文件加载到内存中来实现应用程序的运行。 那么虚拟机是什么时候加载class文件&#xff1f;如何加载class文件&#xff1f;class文件进入到虚拟机后发…

干部任免管理系统(五)开源了一个c#开发的任免审批表转word的程序

前言&#xff1a; 好久没有写博文了&#xff0c;最近有几位csdn的网友想找过来借鉴开发的管理系统&#xff0c;因为工作调整我已经不在公司管理干部了&#xff0c;整套系统当时本身就是为了方便自己工作捣鼓的&#xff0c;现在也没人用了。牵涉到打架java运行环境&#xff0c;数…

HP ilo4服务器硬件监控指标解读

随着企业IT架构的复杂化&#xff0c;服务器的稳定性和可靠性成为保障业务连续性的关键因素。HP ilo4作为HP服务器的一个重要组件&#xff0c;提供了强大的远程管理和监控功能。本文将对使用监控易软件通过HP ilo4进行服务器硬件监控的指标进行解读&#xff0c;帮助运维团队更好…

802.11无线网络权威指南(二):无线帧结构

802.11无线网络权威指南&#xff08;二&#xff09;&#xff1a;无线帧结构 无线协议桢的三种类型无线网络帧结构完整帧格式control frameDuration/IDAddressSequence ControlQoS ControlHT Control 字段Frame Body 帧体FCS 校验域 帧细节管理帧控制帧RTS 帧CTS 帧ACK 帧格式PS…

6.1 面向对象技术-面向对象相关概念

大纲 面向对象基本概念 面向对象分析

LeetCode 热题 HOT 100 (010/100)【宇宙最简单版】

【链表】No. 0206 反转链表 【简单】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xf…

鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)

cryptocj 库 介绍 cryptocj 是一个安全的密码库&#xff0c;包括常用的密码算法、常用的密钥生成和签名验证。 该库是对 C 语言的 openSSL 封装的仓颉加密算法 1 提供SHA、MD5、HMAC摘要算法。 前置条件&#xff1a;NA 场景&#xff1a; OHOS&#xff0c; Linux&#xff…

C#使用csvhelper实现csv的操作

新建控制台项目 安装csvhelper 33.0.1 写入csv 新建Foo.cs namespace CsvSut02;public class Foo {public int Id { get; set; }public string Name { get; set; } }批量写入 using System.Globalization; using CsvHelper; using CsvHelper.Configuration;namespace Csv…

Meta发布Llama 3.1模型

Llama 3.1模型 Meta&#xff08;原Facebook&#xff09;开发的一款大型语言模型&#xff08;LLM&#xff09;&#xff0c;该模型在多个方面展现出了强大的性能和广泛的应用潜力。关于Llama 3.1模型的规模与参数&#xff0c;具体概述如下&#xff1a; 一、模型规模 Llama 3.1…

VBA实例-从Excel整理数据到Word

实现目录 功能需求数据结构复制数据到新sheet并分类数据添加序号、日期、时间三列数据添加序号列添加时间列 将名称和类别复制到word文件中将参数5和参数9中的一个复制到word文件中 实例 功能需求 1、将原始数据中不要的数据剔除 2、原始数据中增加序号、日期和时间三列数据&a…

opengl 写一个3D立方体——计算机图形学编程 第4章 管理3D图形数据 笔记

计算机图形学编程&#xff08;使用OpenGL和C&#xff09; 第4章 管理3D图形数据 笔记 数据处理 想要绘制一个对象&#xff0c;它的顶点数据需要发送给顶点着色器。通常会把顶点数据在C端放入 一个缓冲区&#xff0c;并把这个缓冲区和着色器中声明的顶点属性相关联。 初始化立…

【Unity2D 2022:UI】无法拖拽TextMeshPro组件

在预制体Card上挂载了四个Text Mesh Pro组件&#xff0c;分别命名为Name、HP、ATK、Description。 将预制体Card挂载脚本CardDisplay用来在预制体上显示属性&#xff0c;并创建TextMeshPro对象来接收TextMeshPro组件。 using TMPro; using UnityEngine; using UnityEngine.UI;…

leetcode日记(49)旋转链表

其实不难&#xff0c;就是根据kk%len判断需要旋转的位置&#xff0c;再将后半段接在前半段前面就行。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : …

2、springboot3 vue3开发平台-后端-基础数据准备,MybatisPlus整合

文章目录 1. 基础数据准备2. 整合MybatisPlus3. MybatisPlus 配置3.1 数据源配置3.2 mybatis-plus 分页插件配置3.3 mybatis-plus 自动填充3.4 代码生成器 1. 基础数据准备 直接拿前辈做的表结构使用。 /*Navicat Premium Data TransferSource Server : localhost_my…

sql server 连接报错error 40

做个简单的记录,造成40 的原因有很多,你的错误并不一定就是我遇到的这种情况. 错误描述: 首先我在使用ssms 工具连接的时候是可以正常连接的,也能对数据库进行操作. 在使用 ef core 连接 Sql Server 时报错: Microsoft.Data.SqlClient.SqlException (0x80131904): A network-r…

【Linux】从零开始认识多线程 --- 线程互斥

人生有许多事情 正如船后的波纹 总要过后才觉得美的 -- 余光中 线程互斥 1 线程类的封装1.1 框架搭建1.2 线程启动1.3 线程终止1.4 线程等待1.5 运行测试 2 线程互斥2.1 多线程访问的问题2.2 解决办法 --- 锁2.3 从原理角度理解锁 Thanks♪(&#xff65;ω&#xff65;)&am…