我们在考虑数据前后交换的问题时,若middle指针的位置小于中位数,即后方移动的数据多于前方,故需要将前方数据先进行备份,再将后方数据移动至front指针位置,最后将先前备份的数据拷贝回剩余的数据结构中。
这是一种通用的解决方案。着重理解rotate1方法。注意内存位置的移动和计算(核心思想)。memmove方法与memcpy方法相似,不同的是,目标和源 有重叠时,其能够正常工作。
#include <iostream> #include <string.h> using namespace std; void rotate1(void *front, void *middle, void *end) { int front_size = (char *)middle - (char *)front; int back_size = (char *)end - (char *)middle; // char buffer[front_size]; char *buffer = (char *) malloc(front_size); memcpy(buffer, front, front_size); memmove(front, middle, back_size); memcpy((char *)end - front_size, buffer, front_size); //also like follow //memcpy((char *)front + ((char *)end - (char *)middle), temp, (char *)middle - (char *)front); free(buffer); } void rotate2(void *front, void *middle, void *end) { char *temp = (char *) malloc((char *)middle - (char *)front); memcpy(temp, front, (char *)middle - (char *)front); memmove(front, middle, (char *)end - (char *)middle); memcpy((char *)front + ((char *)end - (char *)middle), temp, (char *)middle - (char *)front); free(temp); } int main() { int a[7] = {1, 2, 3, 4, 5, 6, 7}; rotate1(&a[0], &a[2], &a[6]); int i=0; for(; i < 7; i++) { cout << a[i] << endl; } getchar(); return 0; }
相关推荐
Python支持多种编程范式,包括面向对象编程、命令式编程、函数式编程等。 在文件内容中,我们可以看到Python基础语法的应用,如变量定义、函数定义、条件语句和循环控制结构等。例如,定义变量时使用了赋值运算符...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它以“对象”为核心,对象是类的实例,包含了数据(属性)和操作这些数据的方法(函数)。在这个KWIC项目中,我们可以创建一个`Word`类,用于...
面向对象编程(OOP)是JavaScript中的一种高级编程范式,它通过类和对象的概念,使代码更易于组织和维护。在这个案例中,我们可以创建一个名为`ImageCarousel`的类,该类可能包含以下属性和方法: 1. **属性**: -...
首先,Python是一种广泛用于大数据开发的编程语言,它具有易学易用、支持多种编程范式、丰富的第三方库等优点。在大数据开发中,Python常常被用于数据处理、分析、可视化以及机器学习等领域。 Pillow是Python的一个...
链式编程是一种编程范式,通过返回自身实例来实现方法调用的串联,使得代码更具有可读性。在AXAnimationChain中,你可以像这样创建一个动画链: ```swift view.animate .alpha(to: 0) .scale(to: 0.5, duration: ...
它支持多种编程范式,包括面向对象、命令式和函数式编程。Python的强大之处在于其庞大的标准库和第三方库,这使得开发者能够轻松地开发各种类型的应用程序,从Web应用到科学计算、数据分析等。 #### PIL简介 PIL...
在Java编程中,面向对象编程(Object-Oriented Programming, OOP)是一种重要的编程范式,它将数据和操作数据的方法封装在一起,形成对象。在这个游戏中,我们可以看到以下面向对象设计的关键概念: 1. 类(Class)...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作这些数据的方法封装在一起。在OOP中,对象是类的实例,类是对象的蓝图。这种编程方式允许我们通过模拟...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计中的实体(如数据和操作)封装在独立的对象中。在"使用面向对象设计的俄罗斯方块源码"中,我们可以深入理解如何运用OOP原则来...
Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,广泛应用于大数据处理、科学计算和高性能计算领域。在本话题中,我们将深入探讨如何使用Scala来实现Cordic算法,这是一种高效计算三角函数值的算法...
它的语法简洁,性能高效,支持多种编程范式,包括面向对象、面向组件和函数式编程,这使得开发者能够灵活地构建复杂的游戏逻辑和交互系统。 游戏的主程序可能由多个C#类组成,每个类代表游戏中的一个实体或功能模块...