1

私は宿題のために2つのリンクされたリストを作成し、ユーザーから与えられた整数を最初に入れ、次に最初から2番目のリストの各整数に対してresult=x^3を入れなければなりません。次のコードでは、scanf で読み取って、最初のリストに入れたものを印刷しようとしています。この方法で印刷できない理由はまだわかりません。説明していただけますか?前もって感謝します!!問題は、最後の要素と 0 のみを出力することです... :s

コード:

#include <stdio.h>
#include <stdlib.h>

struct L1 
{
    int x;
    struct L1 *next1;
};

struct L2 
{
    int x,i,v;
    struct L2 *next2;
};

int main()
{
    int i,N;
    struct L1 *root1; 
    struct L2 *root2;
    struct L1 *conductor1;  
    struct L2 *conductor2;

    root1 = malloc(sizeof(struct L1));  
    root2 = malloc(sizeof(struct L2));
    root1->next1=0;
    conductor1 = root1;
    printf("Dwste arithmo N");
    scanf("%d",&N);
    printf("\nDwse arithmo");
    scanf("%d",&conductor1->x);
    printf("%d",conductor1->x);

    for(i=0; i<N; i++)
    {
        conductor1->next1 = malloc(sizeof(struct L1));
        printf("\nDwste arithmo");
        scanf("%d",&conductor1->x);
        conductor1->next1=0;
    }
    conductor1 = root1;
    while (conductor1 != NULL)
    {
        printf("\n%d",conductor1->x);
        conductor1=conductor1->next1;
    }

    return 0;
}
4

1 に答える 1

3

forループでは、 の値を変更することはありませんconductor1。したがって、常にヘッド ノードを指し、そのノードのフィールドを常に上書きします。conductor1=conductor1->next1;各反復で次のノードに進むには、新しいノードを割り当てた後に追加する必要があります。

于 2013-01-09T17:47:34.837 に答える