データ構造上のテスト2-2:シングルチェーンテーブル操作B SDUT-1139

1581 ワード

データ構造上のテスト2-2:シングルチェーンテーブルの操作B
Time Limit: 1000 ms メモリLimit: 65536 KiB
Submit Sttistic ディスク
Problem Description
データ入力の逆順序(逆ビット順)に従って、単一チェーンテーブルを作成し、単一チェーンテーブルに重複する要素を削除します.
Input
最初の行に要素の個数nを入力します.2行目はn個の整数を入力します.
Output
最初の行は初期のチェーン要素の個数を出力します.2行目の出力は逆ビット順に作成された初期チェーン表です.第三行出力は重複要素を削除した後の単一チェーン表の要素の個数を削除します.4行目の出力は重複した要素を削除した後のシングルチェーン表を出力します.
Sample Input
10
21 30 14 55 32 63 11 30 55 30
Sample Output
10
30 55 30 11 63 32 55 14 30 21
7
30 55 11 63 32 14 21
ベント
ソurce
ヽoo.ツ
struct node{    struct node*next;    int data;^*head、*tail、**p、**q;struct node*creat(int n){    int i;    struct node*head、*p;    head=(struct node*)malloc;head->next=NULL;    for(i=0;i<n;i++)    {        p=(struct node*)malloc;        scanf("%d"、&p->data);        p->next=head->next;head->next=p    }     return head;;void show(struct node*head){    struct node*t;    t=head->next;    while(t)    {        if(t->next!=NULL)printf("%d",t->data);        else printf("%d",t->data);        t=t->next;    } } int main(){    int n;    scanf("%d"、&n);head=creat(n);    printf(“%d”,n);show(head);    p=head->next;    while(p!=NULL)    {        tail=p;q=p->next;        while(q!=NULL)        {            if(q->data==p->data)            {                tail->next=q->next;q=tail->next;n--            }             tail=tail->next;q=q->next;        }         p=p->next;    }     printf(“%d”,n);show(head);    return 0;