掲示板ランキング  靴下・ストッキング(かかとケア用靴下)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.7026

入れ子の構造体 応用
投稿者---kana(2007/01/21 22:41:16)


struct list {
   char name[12];//名前
   int num;     //番号

   struct test{
    int kadai; //課題番号
    int seigo[10];//正誤データ
         }
   struct list *next;//次のデータ
};

というような入れ子の構造体を作りたいと考えているのですが、
testの構造体に複数のデータを入れる(自己参照型にする)方法はありますか?
それとも二つの構造体を別々に扱わなければいけないのでしょうか?

説明ページの解説も読んだのですが、
自分では解決できなかったので助言をいただければと思います。
入れ子の構造体test無しの入力は下のソースを使っています。

メイン関数
int main( void )
{
        struct list *head= NULL;
        int code;

        while( 1 ) {
            printf( "機能→入力:%d 表示:%d 終了:%d\n" ,ADD,PRINT,END);
            printf( " 入力>>" );
            scanf( "%d", &code );

            if ( code == 9 )    break;
            else if ( code == 1 ){  head = write(code, head);
            }else if ( code == 5 ){ dispall(head);
            }else{                  fflush(stdin);
            }
        }
        free_list( head );      /* リストの開放 */

        return 0;
}

外部関数
struct list *write(int code, struct list *head)
{
    char name[10];
    int Num;

    printf( "Name:" );   scanf( "%s", name );
    printf( "Number:" );scanf("%d",&Num);
    head = asort( name, Num, head );

    return(head);
}

void dispall( struct list *p )
{
    while ( p != NULL) {
        printf( "%s %d\n", p->name, p->Num );
            p = p->next;
        }
}

void free_list( struct list *p )
{
        struct list *p2;

        while ( p != NULL ) {
                p2 = p->next;
                free( p );
                p = p2;
        }
}

struct list *sort( char *str, int Num, struct list *head )
{
        struct list *p, *new_p;

        if ( ( new_p = ( struct list * )malloc( sizeof( struct list ) ) ) == NULL ) {
                printf( "malloc error\n" );  exit( 1 );
        }
        strcpy( new_p->name, str );
        new_p->Num = Num;

        if ( head == NULL || Num > head->Num ) {
                new_p->next = head;
                return new_p;
        }

        for ( p = head;  p->next != NULL; p = p->next )
                if ( Num > p->next->Num ) break;

        new_p->next = p->next;
        p->next = new_p;
        return head;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:入れ子の構造体 応用 7027 akg 2007/01/21 23:58:33


No.7027

Re:入れ子の構造体 応用
投稿者---akg(2007/01/21 23:58:33)


struct testの中に、
struct test *next;
のような記述を
加えればよいのではないでしょうか。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ