利用C语言怎么实现数组的循环左移和右移操作

您所在的位置:网站首页 循环左移和循环右移crol 利用C语言怎么实现数组的循环左移和右移操作

利用C语言怎么实现数组的循环左移和右移操作

2023-06-07 01:21| 来源: 网络整理| 查看: 265

概述

数组是我们最常用的一种数据结构,对数组进行操作也是编程中必不可少的一部分。今天我们来看看如何通过C语言实现数组的循环左移和右移操作。循环左移和循环右移是指把一个数组或者字符串中的元素往左或者往右移动若干个位置,移动出去的元素又回到了数组/字符串的另一端。

循环左移

循环左移可以通过三步来实现:

把数组的前k个元素翻转 把数组的后n-k个元素翻转 最后把整个数组翻转

举个例子,设数组arr=[1,2,3,4,5,6,7],需要把它左移3个位置,则需要把[1,2,3]元素翻转变成[3,2,1],然后把[4,5,6,7]元素翻转变成[7,6,5,4],最后再把整个数组翻转变成[3,2,1,7,6,5,4]就完成了左移操作。下面是实现代码:

void reverse(int arr[], int start, int end){ while(start

reverse是一个辅助函数,用于翻转数组的一部分。leftRotate实现了循环左移操作,其中n是数组的长度,k是要左移的位数。

循环右移

循环右移可以通过类似的方法来实现:

把数组的后k个元素翻转 把数组的前n-k个元素翻转 最后把整个数组翻转

举个例子,设数组arr=[1,2,3,4,5,6,7],需要把它右移3个位置,则需要把[5,6,7]元素翻转变成[7,6,5],然后把[1,2,3,4]元素翻转变成[4,3,2,1],最后再把整个数组翻转变成[5,6,7,1,2,3,4]就完成了右移操作。下面是实现代码:

void rightRotate(int arr[], int n, int k){ reverse(arr, n-k, n-1); reverse(arr, 0, n-k-1); reverse(arr, 0, n-1); }

rightRotate实现了循环右移操作,其中n是数组的长度,k是要右移的位数。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3