From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_40,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: FRENCH,ASCII-7-bit X-Google-Thread: 103376,7389fa9b800e13a6,start X-Google-Attributes: gid103376,public From: coug01@uqah.uquebec.ca (bert) Subject: J'ai besoin d'aide avec un package generique Date: 1997/06/05 Message-ID: <339614f0.172823568@News>#1/1 X-Deja-AN: 246234221 Sender: news@UQuebec.CA (news) Organization: Universite du Quebec Newsgroups: comp.lang.ada Date: 1997-06-05T00:00:00+00:00 List-Id: Vous devez ecrire un package generique ADA qui permet de faire la gestion de listes chainees. Chaque liste devra etre ordonnee de facon ascendante selon une fonction fournie par l'utilisateur du package. Votre package devra permettre a un programmeur de: - creer une liste a l'aide d'une fonction, - une fonction qui nous permet de verifier si la liste est vide, - demander la valeur de l'element "courrant" de la liste, - fixer le pointeur courrant a l'element precedant de la liste, - fixer le pointeur courrant a l'element suivant de la liste, - detruire l'element courrant de la liste, - ajouter un element a la liste, - detruire la liste, Pour accomplir la tache, je vous suggere de creer une structure liste qui aura comme champ une liste doublement chainee contenant un element generique, un pointeur au debut de la liste et un pointeur a l'element courrant de la liste. - pour creer une liste utiliser une fonction nommee creer_liste qui retourne une structure de liste. La creation d'une liste doit se faire de la facon suivante: L: LISTE := CREER_LISTE; profil: function CREER_LISTE return LISTE; Lorsque la liste est vide, le pointeur a l'element courrant doit etre nulle. - on demande la valeur de l'element courrant de la facon suivante: ITEM := LISTE_COURRANT( L ); profil: function LISTE_COURRANT( L : LISTE ) return ELEMENT; - pour fixer le pointeur courrant a l'element suivant: LISTE_SUIVANT( L ); profil: procedure LISTE_SUIVANT( L: in out LISTE ); - pour fixer le pointeur courrant a l'element precedant: LISTE_PRECEDANT( L ); profil: procedure LISTE_PRECEDANT( L: in out LISTE ); - destruction de l'element courrant: LISTE_DETRUIT_ELEMENT( L ); profil: procedure LISTE_DETRUIT_ELEMENT( L: in out LISTE ); Apres la destruction de l'element courrant, le nouvel element courrant sera l'element qui suivait l'element detruit. Si on detruit le dernier element de la liste, le nouvel element courrant est le dernier element de la liste. - ajout d'une element: LISTE_AJOUTER( L, I ); profil: procedure LISTE_AJOUTER( L: in out LISTE; I: ELEMENT ); apres un ajout dans la liste, l'element courrant est l'element ajoute. N'oubliez pas que la liste doit etre ordonnee!!! - destruction de la liste: LISTE_DETRUIRE( L ); profil: procedure LISTE_DETRUIRE( L: in out LISTE ); detruit la liste et tous les elements qui s'y trouvent. Pour utiliser ce package, un programmeur doit indiquer le type d'element qui sera place dans la liste. Puisque la liste doit etre ordonnee, le programmeur doit aussi fournir une fonction de comparaison qui surchargera l'operateur "<". Merci. (coug01@uqah.uquebec.ca)