[PR]

配列の要素を逆順に並べ替える

戻る

 配列の要素を逆順に並べ替える関数を作る。

//*********************************************************
// 大きさ size の要素 num 個からなる配列 array の要素を
// 逆順に並べ替える。
//*********************************************************
void
memreverse
	(
		void   *array,
		size_t  num,
		size_t  size
	)
{
	char *l;
	char *r;

	l = (char *)array;
	r = (char *)array + ((num-1) * size);
	for( ; l < r; l = l+size, r = r-size )
	{
		memswap( l, r, size );
	}
}//memreverse

使用例

// 関数 memreverse() の使用例です。
int main( void )
{
	char str1[] = "Able was I, ere I saw Elba!";
	char str2[] = "Do geese see God? - O, no!";
	char str3[] = "A man, a plan, a cannal - Panama!";

	puts( str1 );
	memreverse( str1, strlen(str1), sizeof(char) ); puts( str1 );
	memreverse( str1, strlen(str1), sizeof(char) ); puts( str1 );

	printf( "\n%s\n", str2 );
	memreverse( str2, strlen(str2), sizeof(char) ); puts( str2 );

	printf( "\n%s\n", str3 );
	memreverse( str3, strlen(str3), sizeof(char) ); puts( str3 );

	return 0;
}//main

実行結果

Able was I, ere I saw Elba!
!ablE was I ere ,I saw elbA
Able was I, ere I saw Elba!

Do geese see God? - O, no!
!on ,O - ?doG ees eseeg oD

A man, a plan, a cannal - Panama!
!amanaP - lannac a ,nalp a ,nam A

関連

配列の要素を回転移動する
整列済み配列から重複する要素を取り除く
配列が整列されているかどうか調べる
配列から要素を検索する
配列をランダムに並べ替える



Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。