線形アレイ、次々に、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 ; }