SDUT--データ構造実験のチェーンテーブル5:単一チェーンテーブルの分割(2つのチェーンテーブル)
2232 ワード
データ構造実験のチェーンテーブル5:単一チェーンテーブルの分割
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
N個の整数の順序を入力して、単一チェーンテーブルを作成し、この単一チェーンテーブルを2つのサブチェーンテーブルに分割し、第1のサブチェーンテーブルはすべての偶数を保存し、第2のサブチェーンテーブルはすべての奇数を保存した.2つのサブチェーンテーブルのデータの相対順序は、元のチェーンテーブルと一致します.
Input
1行目は整数Nを入力する.2行目にN個の整数を順次入力します.
Output
第1行は、偶数チェーンテーブルと奇数チェーンテーブルの要素個数をそれぞれ出力する.2行目は偶数サブチェーンテーブルのすべてのデータを順次出力する.3行目は奇数サブチェーンテーブルのすべてのデータを順次出力します.
Sample Input
Sample Output
Hint
配列は使用できません!
コードは以下の通りです:元のチェーンテーブルを使って偶数と新しいチェーンテーブルを保存して奇数を保存してみて、効果は悪くありません;
このようなコードスタイルを使うのは初めてで、ちょっと慣れていません...
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
N個の整数の順序を入力して、単一チェーンテーブルを作成し、この単一チェーンテーブルを2つのサブチェーンテーブルに分割し、第1のサブチェーンテーブルはすべての偶数を保存し、第2のサブチェーンテーブルはすべての奇数を保存した.2つのサブチェーンテーブルのデータの相対順序は、元のチェーンテーブルと一致します.
Input
1行目は整数Nを入力する.2行目にN個の整数を順次入力します.
Output
第1行は、偶数チェーンテーブルと奇数チェーンテーブルの要素個数をそれぞれ出力する.2行目は偶数サブチェーンテーブルのすべてのデータを順次出力する.3行目は奇数サブチェーンテーブルのすべてのデータを順次出力します.
Sample Input
10
1 3 22 8 15 999 9 44 6 1001
Sample Output
4 6
22 8 44 6
1 3 15 999 9 1001
Hint
配列は使用できません!
コードは以下の通りです:元のチェーンテーブルを使って偶数と新しいチェーンテーブルを保存して奇数を保存してみて、効果は悪くありません;
#include
using namespace std;
struct node{
int data;
struct node *next;
} *head1, *head2, *tail, *p, *q;
int main(){
int N;
while(~scanf("%d", &N)){
int a = N;
head1 = (struct node *)malloc(sizeof(struct node));
head1->next = NULL;
tail = head1;
for(int i = 0; i < N; i++){
p = (struct node *)malloc(sizeof(struct node));
p->next = NULL;
scanf("%d", &p->data);
tail->next = p;
tail = p;
}
p = head1->next;
tail = head1; //
head2 = (struct node *)malloc(sizeof(struct node));
head2->next = NULL;
q = head2;
while(p){
if(p->data % 2){
tail->next = p->next; //
q->next = p; // head2
q = p; //
a--; //
}
else tail = p; //
p = p->next;
}
printf("%d %d
", a, N - a);
p = head1->next;
while(p){
printf("%d%c", p->data, p->next?' ':'
');
p = p->next;
}
p = head2->next;
while(p){
printf("%d%c", p->data, p->next?' ':'
');
p = p->next;
}
}
return 0;
}
このようなコードスタイルを使うのは初めてで、ちょっと慣れていません...