データ構造実験のチェーンテーブル5:単一チェーンテーブルの分割
2464 ワード
データ構造実験のチェーンテーブル5:単一チェーンテーブルの分割
Time Limit:1000 ms Memory limit:65536 K質問は?ここをクリック^^;
タイトルの説明
N個の整数の順序を入力して、単一チェーンテーブルを作成し、この単一チェーンテーブルを2つのサブチェーンテーブルに分割し、第1のサブチェーンテーブルはすべての偶数を保存し、第2のサブチェーンテーブルはすべての奇数を保存した.2つのサブチェーンテーブルのデータの相対順序は、元のチェーンテーブルと一致します.
入力
1行目は整数Nを入力する.
2行目にN個の整数を順次入力します.
しゅつりょく
第1行は、偶数チェーンテーブルと奇数チェーンテーブルの要素個数をそれぞれ出力する.
2行目は偶数サブチェーンテーブルのすべてのデータを順次出力する.
3行目は奇数サブチェーンテーブルのすべてのデータを順次出力します.
サンプル入力
サンプル出力
ヒント
配列は使用できません!
Time Limit:1000 ms Memory limit:65536 K質問は?ここをクリック^^;
タイトルの説明
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>
typedef struct node
{
int data;
struct node *next;
}NODE;
int main()
{
NODE *head, *tail, *q, *tail1, *head1, *head2, *tail2, *p;
head = (NODE *)malloc(sizeof(NODE));
head->next = NULL;
tail = head;
int n;
scanf("%d", &n);
int i;
for(i = 0;i < n;i++){
q = (NODE *)malloc(sizeof(NODE));
q->next = NULL;
scanf("%d", &q->data);
tail->next = q;
tail = q;
}
head1 = (NODE *)malloc(sizeof(NODE));
head1->next = NULL;
tail1 = head1;
head2 = (NODE *)malloc(sizeof(NODE));
head2->next = NULL;
tail2 = head2;
p = head->next;
q = p->next;
while(p != NULL){
if(p->data%2 == 0){
p->next = NULL;
tail1->next = p;
tail1 = p;
}else {
p->next = NULL;
tail2->next = p;
tail2 = p;
}
p = q;
if(q != NULL){
q = q->next;
}
}
int cnt1 = 0;
p = head1->next;
while(p != NULL){
cnt1++;
p = p->next;
}
p = head2->next;
int cnt2 = 0;
while(p != NULL){
cnt2++;
p = p->next;
}
printf("%d %d
", cnt1, cnt2);
p = head1->next;
while(p != NULL){
if(p->next != NULL){
printf("%d ", p->data);
}else {
printf("%d
", p->data);
}
p = p->next;
}
p = head2->next;
while(p != NULL){
if(p->next != NULL){
printf("%d ", p->data);
}else {
printf("%d
", p->data);
}
p = p->next;
}
return 0;
}