C言語で配列の要素を右に循環シフトする方法を教えてください

配列の要素を右に循環させるには、以下の手順を実行できます。

  1. 最後の要素を格納するための一時的な変数tempを定義する;
  2. 配列の最後から2番目の要素から始めて、最初の要素まで1つずつ後ろに要素をずらします。
  3. 最初の要素にtempの値を代入して、循環右シフトを完了します。

以下にサンプルコードを示します。

#include <stdio.h>

void rotateRight(int arr[], int n) {
    int temp = arr[n-1];

    for (int i = n-1; i > 0; i--) {
        arr[i] = arr[i-1];
    }

    arr[0] = temp;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("原始数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    rotateRight(arr, n);

    printf("\n循环右移后的数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

実行結果:

原始数组:1 2 3 4 5 
循环右移后的数组:5 1 2 3 4

例に示したコードで、配列を右にローテートする関数を定義し、メイン関数内で配列を右にローテートしています。

bannerAds