2010-08-28 4 views
0

bonjour j'essaye de trier une liste liée quand je le trier il fonctionne sur le studio visuel mais quand je le déplace vers linux la liste liée n'est pas triée pour une raison quelconque. mes sortes obtient un pointeur vers un pointeur de la liste et ceci est mon code de tri: i appeler la fonction comme ceci: SortQueue(&pprocessQueue, ProcessPrIdCompare); et voici ma fonction la fonction utilise EnqueueInOrder qui met chaque lien à sa place.déplacer un code C de Visual Studio à Linux

void SortQueue(Queue **pqueue, CompareFunction CompareElements) 
{ 
    Queue *ptemp = CreateQueue((*pqueue)->CopyElement, 
           (*pqueue)->FreeElement, 
           CompareElements, 
           (*pqueue)->PrintElement); 

    (*pqueue)->CompareElements = CompareElements; 

    while (!(IsEmpty(*pqueue) == SUCCESS)) 
    EnqueueInOrder(ptemp, DequeueLink(*pqueue)); 

    while (!(IsEmpty(ptemp) == SUCCESS)) 
    EnqueueInOrder(*pqueue, DequeueLink(ptemp)); 

    FreeQueue(ptemp); 
} 

1 chose de plus j'utilise gcc pour compiler.

+0

Pourriez-vous s'il vous plaît formater le code en utilisant le bouton '101010'. Battez-moi aussi! –

+0

Je pense que le problème est dans une partie du code que vous n'avez pas collé ici. – jilles

+0

Est-ce que votre code compile sans avertissements: utilisez -ansi -pedantic -W -Wall -Werror –

Répondre

0

Je ne vois pas le problème avec votre code. Il sera probablement sage de vérifier le code qui repose en dehors du code que vous nous avez montré.

+1

J'ai découvert quel était mon problème ... je n'ai pas utilisé le casting sur la fonction de comparaison de la défense de la mémoire de toute façon –