c語(yǔ)言數(shù)組循環(huán)右移怎么實(shí)現(xiàn)

小億
129
2024-07-26 22:48:12

要實(shí)現(xiàn)c語(yǔ)言數(shù)組的循環(huán)右移,可以通過(guò)以下步驟實(shí)現(xiàn):

  1. 確定右移的位數(shù),假設(shè)為n。
  2. 創(chuàng)建一個(gè)臨時(shí)數(shù)組,將原數(shù)組的后n個(gè)元素復(fù)制到臨時(shí)數(shù)組中。
  3. 將原數(shù)組的前面部分向后移動(dòng)n個(gè)位置,空出的位置補(bǔ)0。
  4. 將臨時(shí)數(shù)組中的元素復(fù)制到原數(shù)組中。

以下是一個(gè)示例代碼:

#include <stdio.h>

void rightRotate(int arr[], int n, int shift) {
    int temp[shift];
    // 將后shift個(gè)元素復(fù)制到臨時(shí)數(shù)組中
    for (int i = 0; i < shift; i++) {
        temp[i] = arr[n - shift + i];
    }
    // 將前面的元素向后移動(dòng)shift個(gè)位置
    for (int i = n - 1; i >= shift; i--) {
        arr[i] = arr[i - shift];
    }
    // 將臨時(shí)數(shù)組中的元素復(fù)制到原數(shù)組中
    for (int i = 0; i < shift; i++) {
        arr[i] = temp[i];
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    int shift = 2;
    
    rightRotate(arr, n, shift);
    
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

以上代碼實(shí)現(xiàn)了一個(gè)將數(shù)組循環(huán)右移的功能,并輸出移動(dòng)后的結(jié)果。

0