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

原因可能是您有一个单一的链表,当您将条目添加到列表时,您将它们添加到列表的头部

一个解决方案是跟踪列表的尾部,然后添加到那里。

于 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 回答