2016-09-01 1 views
-3

Je suis en train de mettre en œuvre la fonction de vérifier l'égalité Deque en C. L'algorithme de la fonction devrait être comme:l'égalité Contrôle de deux conteneurs Deque en C

bool isDequeEqual(Deque d1,Deque d2) 
{ 

    if size of d1 and d2 are different 
    then 
     return false 

    loop from front to rear of both dequeue 
     if element at current position of d1 != element at current position of d2 
     then 
      return false 
     else 
      continue 

if loop ends return true 
} 

J'ai mis en œuvre la plupart de la logique, mais pas obtenir comment comparer si les éléments de la position actuelle dans d1 et d2 sont identiques. Le type de données que le conteneur Deque contient peut être un type de données basique ou dérivé. Dans ce cas, comment puis-je vérifier si le contenu à l'emplacement actuel est le même? J'ai également essayé de vérifier comment cela est implémenté dans std::Deque. Mais je ne comprends pas exactement comment cela se fait dans la bibliothèque Deque.h.

Aidez-nous s'il vous plaît.

Édition1: Le conteneur Deque peut contenir n'importe quel type de données par ex. int, char array, structure etc.

+0

Je suppose que vous voulez dire C++ non c – pm100

+0

Non, je ne mets en œuvre que dans C. J'ai implémenté toutes les fonctions moi-même et n'utilise pas std :: Deque –

+0

généralement, vous ne pouvez pas - à moins qu'un opérateur/fonction d'égalité ne soit fourni (sauf si vos structures sont comparables bytewise, mais pour les dérivées - non) - pour la comparaison bytewise peut essayer 'memcmp' –

Répondre

1

Si le deque peut contenir quoi que ce soit alors vous avez besoin de l'appelant pour fournir une fonction de comparaison (comme qsort voir http://linux.die.net/man/3/qsort). Soit ils doivent le fournir quand ils créent le deque et vous devez vous en souvenir, ou il doit être fourni sur toutes les fonctions (comme votre égal) qui requièrent le concept de 'fait élément x = élément y'.