【剑指offer】4.2 画图让抽象问题形象化

面试题19:二叉树的镜像

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点的定义如下:

struct BinaryTreeNode
{
	int             m_nValue;
	BinaryTreeNode* m_pLeft;
	BinaryTreeNode* m_pRight;
};

解答:代码如下:

void Mirror(BinaryTreeNode *pRoot)
{
	if(NULL == pRoot)
	{
		return ;
	}
        
	BinaryTreeNode *pTmp = pRoot->m_pLeft;
	pRoot->m_pLeft = pRoot->m_pRight;
	pRoot->m_pRight = pTmp;
        
	if(pRoot->m_pLeft != NULL)
	{
		Mirror(pRoot->m_pLeft);
	}
        
	if(pRoot->m_pRight != NULL)
	{
		Mirror(pRoot->m_pRight);
	}
}

面试题20:顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。

解答:代码如下:

vector<int> vec;

void PrintMatrixInCircle(vector<vector<int> > &matrix,int columns,int rows,int start)
{
	int endX = columns - 1 - start;
	int endY = rows - 1 - start;
        
	for(int i = start;i <= endX;++i)
	{
		int number = matrix[start][i];
		vec.push_back(number);
	}
        
	if(start < endY)
	{
		for(int i = start + 1;i <= endY;i++)
		{
			int number = matrix[i][endX];
			vec.push_back(number);
		}
	}
        
	if(start < endX && start < endY)
	{
		for(int i = endX - 1;i >= start;--i)
		{
			int number = matrix[endY][i];
			vec.push_back(number);
		}
	}
        
	if(start < endX && start < endY - 1)
	{
		for(int i = endY - 1;i >= start + 1;--i)
		{
			int number = matrix[i][start];
			vec.push_back(number);
		}
	}
}
    
vector<int> printMatrix(vector<vector<int> > matrix)
{
	if(matrix.size() == 0 || matrix[0].size() == 0)
	{
		return vec;
	}
        
	int rows = matrix.size();
	int columns = matrix[0].size();
	int start = 0;
	while(columns > start * 2 && rows > start * 2)
	{
		PrintMatrixInCircle(matrix,columns,rows,start);
		++start;
	}
        
	return vec;
}

 

基于Python的医学知识图谱问答系统源码+说明文档(毕业设计),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业
内容概要:本文以程序"Hello.c"为研究对象,系统剖析了C语言程序在Linux系统中的完整生命周期。通过GCC工具链对预处理、编译、汇编、链接等编译流程进行实证分析,揭示了可执行文件从源代码到进程的P2P(Program to Process)转化过程。借助readelf、objdump等工具深入解析ELF文件格式,探讨了进程管理中的fork-exec机制、虚拟内存的地址转换体系(包括段式管理、四级页表与TLB),以及动态链接库的加载原理。通过异常信号处理实验,验证了Linux系统的进程调度策略与存储管理机制。本案例研究将计算机系统核心概念具象化,构建了从高级语言到机器指令、从静态文件到动态进程的知识闭环,为深入理解计算机系统工作原理提供了实践范本。 适合人群:计算机专业学生、对计算机系统原理感兴趣的编程爱好者以及从事嵌入式开发、系统编程等相关领域的工程师。 使用场景及目标:①帮助读者理解编译过程的各个阶段及其工具链的使用;②通过具体实例讲解ELF文件格式及其解析;③深入探讨进程管理机制,包括fork-exec机制、虚拟内存管理、动态链接等;④通过异常信号处理实验,验证Linux系统的进程调度策略与存储管理机制。 其他说明:本文不仅详细描述了程序从源代码到可执行文件的转换过程,还通过实验验证了计算机系统核心概念的应用,为读者提供了理论与实践相结合的学习路径。建议读者结合实际操作,通过搭建实验环境,加深对计算机系统工作原理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值