首页 > 其他分享 >C练习--补充或纠错代码

C练习--补充或纠错代码

时间:2024-05-09 21:33:59浏览次数:26  
标签:结点 -- 练习 pp len char dest 纠错

数据结构

回顾--树

1.阅读以下说明和C代码,直接把答案填入空格中。

本函数的功能是删除二叉查找树中的一个结点

将要删除的结点可能有以下三种情况。

情况①是删除叶子结点。

情况②是删除只有1个子结点的结点。

情况③是删除有左右子树的结点。

int DeleteNode(Bitree *r, int e){
Bitree p = *r, pp, s, c;
while(          ①           )	/* 从树根结点出发查找键值为e的结点 */
{
pp = p;
if(e < p->data)  p = p->Lchild;
else	 p = p->Rchild;
}
if(!p)  return -1;			/* 查找失败 */
if(p->Lchild && p->Rchild)	/* 处理情况③ */
{
s =                     ;
pp = p;
while(        ②              )
{
p->data = s->data;
}
p = s;
}
/* 处理情况①、② */
if(        ③            )  c = p->Lchild;
else  c = p->Rchild;
if(p == *r)  *r = c;
else if(          ④           )  pp->Lchild = c;
else  pp->Rchild = c;
free(p);
return 0;
}

①:if(p && p->data != e)	/* 从树根结点出发查找键值为e的结点 */

②:if(!s->Lchild)	/* 找到待删除结点的后继结点 */

③:!pp

④:e < pp->data   

2.请找出下面代码中的所有错误说明:以下代码是把一个字符串倒序,如”abcd”倒序后变为

“dcba”

	#include “string.h”
	int main()
	{
		char *src = “hello, world”;
		char *dest = NULL;
		int len = strlen(src);
		dest = (char *)malloc(len);
		char * d = dest;
		char * s = src[len];
		while(len-- != 0)
			d++ = s--;
		printf(“%s”, dest);
		return 0;
	}


//找出的错误有以下几个
1.第7行分配内存时,应该为 dest = (char *)malloc(len + 1);,需要考虑字符串末尾的空字符 '\0'。
2.第9行中,src[len] 会导致访问越界,应该修改为 char * s = src + len - 1;,指向字符串末尾的前一个字符。
3.第11行中,d++ = s--; 应该修改为 *d++ = *s--;,以逐个复制字符。
4.在使用 printf 输出 dest 时,需要确保 dest 所指向的内存已经被初始化,并以空字符 '\0' 结尾。因此,需要在循环结束后在 dest 的最后一个位置加上空字符

标签:结点,--,练习,pp,len,char,dest,纠错
From: https://www.cnblogs.com/little-mirror/p/18183108

相关文章

  • 洛谷 P1031 [NOIP2002 提高组] 均分纸牌 题解
    题目简述有$N$堆纸牌,编号分别为$1,2,\ldots,N$。每堆上有若干张,但纸牌总数必为$N$的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为$1$堆上取的纸牌,只能移到编号为$2$的堆上;在编号为$N$的堆上取的纸牌,只能移到编号为$N-1$的堆上;其他堆上取的纸牌,可......
  • C#中的对象深拷贝和浅拷贝
    目录C#中的对象深拷贝和浅拷贝概述1.浅拷贝2.深拷贝总结引用C#中的对象深拷贝和浅拷贝概述在C#中,对象拷贝是指将一个对象的副本创建到另一个对象中。对象拷贝通常用于数据传输或创建对象的新实例。C#中有两种主要的拷贝方式:浅拷贝和深拷贝1.浅拷贝浅拷贝是指只拷贝对象的......
  • swagger简介
    Swagger是一个用于设计、构建和文档化WebAPI的开源工具。它可以帮助开发人员设计和描述API,并生成易于理解的文档。通过Swagger,开发人员可以更方便地了解API的功能、参数、请求和响应等信息,提高了API的可读性和易用性。Swagger提供了一套工具和规范,包括:1.SwaggerUI:一个用于展......
  • PCI-Express-Technology(四)
    PCIe支持三个地址空间,与PCI中的三个地址空间完全相同:n配置空间(Configuration)n内存地址空间(Memory)nIO地址空间(IO)4.1.1配置空间(ConfigurationSpace)如我们在Chapter1中所讨论的,配置空间是由PCI引入的,软件通过配置空间就可以用一种标准化的方法来对设备的状态进行控制和......
  • 七下期中考试游记
    怎么就要上初二了呢。跟两只若只在一个考场,变成若只了。###5.6------------a.m.|Politics困得要死,前几天病了在家,8:30起,突然7:00起不太适应。先开大题。?怎么最后一个题6分忘了,废了废了,胡答白兰。选择对完答案错了一个,现在都没搞懂。p.m.|Chinese&&Math&&Geography考完......
  • springboot3.2.3如何集成swagger
    在SpringBoot中集成Swagger可以方便地生成API文档并进行接口测试。要在SpringBoot3.2.3中集成Swagger,你可以按照以下步骤进行操作:1.添加Swagger依赖到pom.xml文件中:点击查看代码<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<......
  • BGP小实验
    目录拓扑图环境介绍复盘实验总结配置R3R4R1R2拓扑图环境介绍每台路由器上都有looback0,比如R4是4.4.4.4/32,直连接口地址为10.1.34.4/24,其他路由器直连和looback口地址类似,R4上还有looback1,地址为44.44.44.44/24。R3和R4是EBGP邻居关系,AS123内路由器是IBGP邻居关系,并且AS123......
  • Vue入门到关门之Vue3学习
    一、常用API注意:本文项目均使用脚手架为Vite1、setup函数(1)介绍如果在项目中使用配置项API,那么写起来就和vue2的写法是一样的;但是如果在项目中写的是组合式API,那么组件中所用到的:数据、方法等等,均要配置在setup中。此外,setup()钩子也是在组件中使用组合式API的入口,通常只在......
  • 固态继电器 一体式调压模块
    固态继电器: 无触点的中间继电器,相应时间1ms,(普通中间继电器10ms)      单相调压模块 ......
  • 力学笔记
    无滑滚动假设有拉力\(F\)以及摩擦力\(F_f\),圆柱体无滑滚动(\(a=\alphaR\)),下面讨论其动能变化由质心运动定理:\[F-F_f=ma\]由刚体定轴转动的转动定理:\[(F+F_f)R=I_c\alpha\]可得:\[a=\frac{2F}{m+\frac{I_c}{R^2}}\]故刚体动能为:\[\begin{aligned}E_k&=\frac{1}{2}mv^2+\f......