冬休みの翌日--線形表--データ構造実験のチェーン表5:単鎖表の分割
2052 ワード
データ構造実験のチェーンテーブル5:単一チェーンテーブルの分割
Time Limit: 1000MS Memory limit: 65536K
タイトルの説明
N個の整数の順序を入力して、単一チェーンテーブルを作成し、この単一チェーンテーブルを2つのサブチェーンテーブルに分割し、第1のサブチェーンテーブルはすべての偶数を保存し、第2のサブチェーンテーブルはすべての奇数を保存した.2つのサブチェーンテーブルのデータの相対順序は、元のチェーンテーブルと一致します.
入力
1行目は整数Nを入力する.
2行目にN個の整数を順次入力します.
しゅつりょく
第1行は、偶数チェーンテーブルと奇数チェーンテーブルの要素個数をそれぞれ出力する.
2行目は偶数サブチェーンテーブルのすべてのデータを順次出力する.
3行目は奇数サブチェーンテーブルのすべてのデータを順次出力します.
サンプル入力
サンプル出力
ヒント
配列は使用できません!
ソース
サンプルプログラム
Time Limit: 1000MS Memory limit: 65536K
タイトルの説明
N個の整数の順序を入力して、単一チェーンテーブルを作成し、この単一チェーンテーブルを2つのサブチェーンテーブルに分割し、第1のサブチェーンテーブルはすべての偶数を保存し、第2のサブチェーンテーブルはすべての奇数を保存した.2つのサブチェーンテーブルのデータの相対順序は、元のチェーンテーブルと一致します.
入力
1行目は整数Nを入力する.
2行目にN個の整数を順次入力します.
しゅつりょく
第1行は、偶数チェーンテーブルと奇数チェーンテーブルの要素個数をそれぞれ出力する.
2行目は偶数サブチェーンテーブルのすべてのデータを順次出力する.
3行目は奇数サブチェーンテーブルのすべてのデータを順次出力します.
サンプル入力
10
1 3 22 8 15 999 9 44 6 1001
サンプル出力
4 6
22 8 44 6
1 3 15 999 9 1001
ヒント
配列は使用できません!
ソース
サンプルプログラム
#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
node *next;
};
int main()
{
int i , n , count = 0;
node *head1 = NULL, *p = NULL, *q = NULL , *head2 = NULL;
scanf("%d", &n);
head1 = new node;
head1 ->next = NULL;
q = head1;
for(i =1 ; i <= n ; i++)
{
p = new node;
scanf("%d", &p->data);
q->next = p ;
q = p ;
}
head2 = new node;
head2->next = NULL;
q = head1 ; p = head2;
for(i = 1 ; i <= n ; i++)
{
if( (q->next->data)%2==0)
{
node *r ;
r = q->next ;
p->next = r ;
p = r ;
q->next = r->next ;
count++;
}
else
q = q->next;
}
printf("%d %d
", count, n-count);
q = head2->next ;
for(i = 1 ; i <= count ; i++)
{
printf("%d", q->data);
if(i < count)
printf(" ");
else
printf("
");
q = q->next;
}
p = head1->next ;
for(i = 1 ; i <= (n-count) ; i++)
{
printf("%d", p->data);
if(i <(n-count) )
printf(" ");
else
printf("
");
p = p->next;
}
return 0;
}