1

リストの情報を印刷する方法は知っていますが、ファイルの内容が反転して表示されます。

void imprimi_tabuleiro(Tabuleiro* tabu)
{
    Tabuleiro* aux; // p auxiliar a prcorrer o tabuleiro
    for (aux = tabu; aux != NULL ; aux = aux ->Prox)
    {
        printf("\n%s %s %s %d\n ", aux ->casa , aux ->proxcasa , aux ->regracasa , aux ->energia);
    }
}

たとえば、私のファイルは次のとおりです。

1 2 0 0

3 4 5 7


1 9 0 4

そして、コードを実行すると表示されます

1 9 0 4


3 4 5 7


1 2 0 0

どうすればそれを変更できますか?

4

3 に答える 3

2

その理由はおそらく、リンクされたリストが 1 つしかなく、リストにエントリを追加するときに、それらをリストの先頭に追加するためです。

解決策は、リストの末尾を追跡し、代わりにそこに追加することです。

于 2012-10-31T06:48:00.923 に答える
0

二重にリンクされたリストがあるように見えますが、リストの末尾ではなく先頭にエントリを挿入しているように見えます。それは確かに逆の順序を説明します。

読み取りコードと挿入コードを表示できますか?

于 2012-10-31T06:50:49.487 に答える
0

わかった !

abuleiro* inserir_tabuleiro(Tabuleiro* Tab, char casa[] , char proxcasa[] , char regracasa[], int energia)

{

Tabuleiro* Novo  = cria(casa , proxcasa ,  regracasa,  energia); //cria novo no





Tabuleiro* anterior = NULL; //ponteiro p o anterior
Tabuleiro* p= Tab; // p percorrer








while(p!=NULL ){



            anterior = p ;
            p = p->Prox;




}



if(anterior==NULL)
{
    Novo->Prox = Tab;

    Tab = Novo;
}
else
{
    Novo->Prox = anterior->Prox;
    anterior->Prox = Novo;
}





return Tab;

}

ありがとうございます!

于 2012-10-31T13:55:12.907 に答える