mxListe.h


/*
 * mxListe.h
 *
 * =====================================================================================================================
 * Das Modul mxListe stellt Datenstrukturen und Operationen fuer das Arbeiten
 * mit Indexlisten zur Verfuegung. Indexlisten sind Listen, in denen
 * int-Zahlen miteinander verkettet werden koennen. Aufgabe solcher Listen
 * ist es, Listen von Feldelementen zu verwalten. Die in einem Listenknoten
 * gespeicherte int-Zahl entspricht dabei dem Index, den das von dem Knoten
 * referenzierte Feldelement in seinem Feld hat.
 * =====================================================================================================================
 */

#ifndef __mxListe__
#define __mxListe__

/***************
** Strukturen **
***************/
typedef struct tListenKnoten {                                          /* Knoten in einer Indexliste                   */
  struct tListenKnoten *Vorgaenger;                                     /* Verweis auf Vorgaengerknoten in Liste        */
  struct tListenKnoten *Nachfolger;                                     /* Verweis auf Nachfolgerknoten in Liste        */
  int Index;                                                            /* Index des referenzierten Feldelements        */
} tListenKnoten;

typedef struct {                                                        /* Listenkopf einer Indexliste                  */
  tListenKnoten *Anfang;                                                /* Verweis auf ersten Listenknoten              */
  tListenKnoten *Ende;                                                  /* Verweis auf letzten Listenknoten             */
} tListe;

/***************
** Prototypen **
***************/
void ListeInitialisieren(tListe *Liste);
/* Macht aus <Liste> eine leere Indexliste
 */

int ListeLeer(tListe *Liste);
/* Gibt an, ob die Indexliste <Liste> leer ist
 */

void KnotenInitialisieren(tListenKnoten *Knoten, int aIndex);
/* Macht aus <Knoten> einen freien Listenknoten fuer das Feldelement
 * mit Index <aIndex>, d.h. der Knoten steht in keiner Liste
 */

void KnotenAnhaengen(tListe *Liste, tListenKnoten *Knoten);
/* Haengt den freien Listenknoten <Knoten> an das Ende der Indexliste
 * <Liste> an.
 */

tListenKnoten *KnotenAbhaengen(tListe *Liste);
/* Entfernt den ersten Knoten aus der Liste <Liste> und gibt in
 * <KnotenP> einen Zeiger auf den jetzt freien Listenknoten zurueck
 */

void KnotenExtrahieren(tListe *Liste, tListenKnoten *Knoten);
/* Entfernt den Listenknoten <Knoten>, der Element der Indexliste
 * <Liste> sein muss, aus <Liste>.
 */

int InitListe(void);
/* Init fuer das Modul mxListe */

#endif


Bei Problemen mit der Seite bitte eine Mail an Marek
Converted with C2HTML V0.669 by Iluvatar
Prozeßdatenverarbeitung