我们在考虑数据前后交换的问题时,若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;
}

编程范式之rotate操作相关推荐

  1. c语言是函数式原型的编程,编程范式|程序世界里的编程范式,探索编程本质

    最近看了一些关于编程范式的文章,简要做一些小结和记录 什么是编程范式 在现实生活中,为了适配各种规格的螺帽,我们需要许多种类的螺丝刀. 在编程世界中,静态语言有许多种类的数据类型. 不过,我们可以发现 ...

  2. python标准库很丰富支持多种编程范式_计算机考试简答题

    1 .简述 python 的特点: Python 具有简单易学,免费.开源,可扩展性.可嵌人性和可移植性强,代码规范.代 码具有较好可读性, Python 标准库很丰富,支持命令式编程.面向对象程序设 ...

  3. 编程范式,程序员的编程世界观

    编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式.随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐 ...

  4. 再谈编程范式-程序语言背后的思想

    link link 编程范式 托马斯.库尔提出"科学的革命"的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三个方面,以OOP ...

  5. 基于对象和面向对象编程范式辨析和主流编程语言中的应用

    基于对象和面向对象编程范式辨析和主流编程语言中的应用 前言 本文的目的是想告诉大家,为什么C++的模板这么强大.为什么Ruby的Duck Typing(像鸭子那样编程)这么强大! 基于对象和面向对象编 ...

  6. 课时 23:Kubernetes API 编程范式(陈显鹭)

    本文将主要分享以下四个方面的内容: 需求来源 用例解读 操作演示 架构设计 需求来源 首先我们先来看一下 API 编程范式的需求来源. 在 Kubernetes 里面, API 编程范式也就是 Cus ...

  7. 从零开始入门 K8s | Kubernetes API 编程范式

    作者 | 陈显鹭  阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 23 讲,点击"阅读原文"直达课程页面. 关注"阿里 ...

  8. Flutter React编程范式实践

    作者:闲鱼技术-匠修 Flutter Widget的设计灵感来源于React,是一款原生就立足于响应式的UI框架.本文基于Flutter特点,试图结合闲鱼在Flutter的工程应用来谈下我们对Flut ...

  9. 编程范式,程序员的编程世界观(转)

    编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式.随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐 ...

最新文章

  1. etcd部署集群的三种方式
  2. 数据结构——括号匹配问题
  3. (转)求单链表是否有环,环入口和环长
  4. Oracle中用For Loop 替代Cursor
  5. Navicat Premium 未保存和已执行SQL存储位置
  6. Java实验9 T6.将对象和数组存储在dat文件中
  7. 萌妹子语音在线吹彩虹屁陪你写代码!一个神奇的 VSCode 插件
  8. C#基础5:字符串操作
  9. 二叉树的高度_完全二叉树的子节点数
  10. JavaScript函数 思维导图
  11. 神经元模型图手工制作,神经元模型图手工模型
  12. mysql chroot debian_在我的终端提示中“${debian_chroot:+($debian_chroot)}”有什么作用?...
  13. Dbeaver Phoenix 各种报错
  14. 计算机考试函数应用题及答案,2016年全国职称计算机考试EXCEL考前练习题4
  15. Tensorflow的安装与报错
  16. 异域公主连接iOS怎么修改服务器,公主连结ios账号在电脑端登录方法 模拟器使用技巧分享...
  17. 格式化 计算机术语,计算机格式化操作步骤
  18. 鸿蒙系统照样没有谷歌服务,曝华为Mate40 Pro+升级鸿蒙2.0系统 谷歌服务照样能用...
  19. DNS劫持原理与操作
  20. 【数据结构课设】扫雷 (java实现)

热门文章

  1. VS2008编辑器代码适合的配色方案下载
  2. Linux服务-bind
  3. 用哪个版本的基因组和注释文件好?| 亲测
  4. ArrayBuffer和TypedArray,以及Blob的使用
  5. Windows server 2008 R2搭建主域控制器 + 辅域控制器
  6. Excel .net读取
  7. GTD时间管理系统入门
  8. 详解linux系列之FTP的安装及配置
  9. Oracle的dbms_output包的put()和put_line()的区别只是有没有回车换行吗?
  10. 2018-2019-2 20175320实验三《敏捷开发与XP实践》实验报告