2011-09-10 2 views
2

Voici le problème.Implémentation de la liste chaînée avec l'interface de l'itérateur

Ecrivez une fonction pour fusionner plusieurs listes chaînées (triées) en une liste chaînée triée. Cette fonction doit accéder aux éléments via l'interface Iterator (n'accédez pas directement aux éléments via la liste chaînée). Les arguments de la procédure de fusion sont un tableau de Iterators et la taille du tableau. La valeur de retour doit être un autre Iterator avec une implémentation de liste sous-jacente .

Étapes:

(1) Mettre en œuvre la liste liée à l'interface iterator. Définir l'élément dans la liste ci-dessous:

typedef struct 
{ 
int idno; 
char name[25]; 
float marks; 
} Element; 

(a) Liste CreateList(); (B) Insert de liste (liste L, élément e);

(c) liste vide d'impression (liste L); (D) itérateur initIterator (liste L);

(e) booléen hasMoreElements (itérateur I);

(f) itérateur moveNext (itérateur I);

(2) Fonction de fusion de l'outil.

iterator merge(iterator I[],int size) 

Cette fonction fusionnera les éléments dans toutes les listes ordonnées par l'attribut « marques ». La fonction de fusion doit accéder à la liste via les fonctions de l'itérateur.

(3) Fonction de pilote d'outil.

Remplir les listes à partir des fichiers d'entrée (fournis en tant que support). Appelez la fonction de fusion et stockez les données dans la liste fusionnée résultante dans un fichier de sortie.

fichiers de support: Test1.TXT, Test2.txt, test3.txt, test4.txt, test5.txt, test6.txt, test7.txt, test8.txt

Livrables: dataDef.h, mergeOps. c, mergeOps.h, main.c, output.txt

Maintenant, je ne veux pas la solution pour cela, mais je veux savoir ce qu'est une interface d'itérateur. Je n'en ai jamais entendu parler auparavant.

Et comment puis-je procéder à l'implémentation de la liste chaînée avec l'interface d'itérateur. Qu'est-ce que cela signifie?

En outre, il utilise un type de données de iterator ce que ce serait?

+1

Erm, êtes-vous * sûr * que vous parlez de 'c'? –

+0

@Brian Roach je suis à peu près .. je peux poster le reste de la question aussi .. – Kraken

+0

'Iterator' est une structure personnalisée, vous pouvez jeter un oeil à l'équivalent C++ sur MSDN - [itérateur Struct] (http://msdn.microsoft.com/en-us/library/x9be4t1b.aspx). –

Répondre

4

Un itérateur est simplement un terme généralisé pour quelque chose qui vous permet de traverser un conteneur (comme un tableau, une liste, etc.).

De wikipedia,

Dans la programmation de l'ordinateur, un itérateur est un objet qui permet à un programmeur à traverser un récipient. Différents types d'itérateurs sont souvent fournis par l'intermédiaire de l'interface d'un conteneur ( ). Bien que l'interface et la sémantique d'un itérateur donné soient fixes, les itérateurs sont souvent implémentés en termes de structures sous-jacentes à un conteneur et sont souvent étroitement couplés au conteneur pour permettre la sémantique opérationnelle de l'itérateur. Notez qu'un itérateur effectue une traversée et donne également accès aux éléments de données dans un conteneur, mais n'effectue pas d'itération (c'est-à-dire non sans une certaine liberté significative prise avec ce concept ou avec une utilisation triviale de la terminologie ). Un itérateur est similaire au comportement d'un curseur de base de données .

Comme vos entretiens d'affectation sur la création d'un itérateur sans accéder aux éléments directement, vous pouvez jeter un oeil à Iterator Design Pattern

Plus d'informations sur Iterator

Questions connexes