2つのリニアテーブル交換位置(アレイ要素又は円運動)

線形アレイ、次々に、2つのリニアテーブル切替位置に2つのテーブルに。本明細書で使用される場合、リニアテーブル、最初の線形テーブルを表す第1のn個の要素は、m個の要素は、第2の直線テーブルを表します。

n番目のループに配列が対応の要素は、左又はMの右。

コード:

する#include <stdio.hに>
 の#define MAX 100
 構造体Sqlist {
     int型データ[MAX]。
    int型の長さ。
}です。
ボイド入力(Sqlist * S){ 
    のprintf(" 请输入元素个数:" )。
    scanf関数(" %のD "、&​​S - > 長さ)。
    printf(" 请输入%D个元素:"、S - > 長さ)。
    以下のためにINT iが= 0 ; I <S - >長さ; I ++ ){ 
        scanf関数(" %のD "、&​​S - > データ[I])。
}
ボイドプリント(Sqlist S){ 
    のprintf(" %dの\ n " 、s.length)。
    以下のためにINT iが= 0 ; I <s.length; I ++ ){ 
        のprintf(" %dの" 、s.data [I])。
    } 
    のputchar(' \ n ' ); 
} 
ボイド reverse_s(Sqlist * S、INT L、INT R){
     一方(L < R){ 
        S - >データ[L] ^ = S - > データ[R]。
        S - >データ[R] ^ = S - > データ[L]。
        S- >データ[L] ^ = S - > データ[R]。
        L ++ ; 
        R - ; 
    } 
} 
ボイド swap_s(Sqlist * S、整数 nは、INT M){ 
    reverse_s(S、0、N + M - 1 )。
    reverse_s(S、0、M - 1 )。
    reverse_s(S、M、N + M - 1 )。
} 
int型のmain(){ 
    入力(S)。
    整数N、M。
    printf(" 请输入N、M:" ); 
    scanf関数("%D%D "、&​​N、&M); 
    swap_s( S、n、m)は、
    プリント(S); 
    戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/8023spz/p/11838444.html
おすすめ