Ich soll eine einfach verkettete Liste mit zwei Arrays implementieren.
Nur ich kriegs einfach nicht auf die Reihe.
Ich sitze hier schon Stunden dran und komm einfach kaum weiter!
Ich finde das sowieso witzlos..., dann hat man ne statische Liste...
Man lernt in der Uni halt viel Unsinn und macht nie was Produktives...
Hier mal meine Versuch. Ich habe es selber nicht testen können, weil ich nicht weiter kommen. Kompelieren tut es sich, aber wenn ich den Code theoretisch nachvollziehe läuft das hinten und vorne nicht!
Hier mal das Aufgabenblatt dazu: A1, A3, A4 sind leicht und fertig, aber die A2....
http://www-ai.math.uni-wuppertal.de/SciComp/teaching/ss09/info2/Ueb/blatt1_ss09.pdf
Nur ich kriegs einfach nicht auf die Reihe.
Ich sitze hier schon Stunden dran und komm einfach kaum weiter!
Ich finde das sowieso witzlos..., dann hat man ne statische Liste...
Man lernt in der Uni halt viel Unsinn und macht nie was Produktives...
Hier mal meine Versuch. Ich habe es selber nicht testen können, weil ich nicht weiter kommen. Kompelieren tut es sich, aber wenn ich den Code theoretisch nachvollziehe läuft das hinten und vorne nicht!
Code:
/*=======================================*/
/* 20.04.2009 - WarSlash*/
/* AuD, Blatt 1, Aufg.2, v1.0 laeuft */
/* Einfach verkettete Liste */
/* Tutor: */
/*=======================================*/
#include <stdlib.h>
#include <stdio.h>
#include "boolean.h"
enum {N_MAX = 10}; /* maximale Laenge der Liste */
typedef int L_datentyp; /* Typ der Eintraege */
typedef struct Liste{
int anf; /* Anfang der Liste */
int z; /* Nummer des aktuellen Elementes */
int z_vorg; /* Nummer des Vorgaengers */
L_datentyp daten[N_MAX]; /* Speicherung der Listeneintraege */
int nachf[N_MAX]; /* Verweis auf Speicherplatz des */
/* nachfolgenden Listenelementes */
int anzahl; /* momentane Anzahl der belegten Elemente*/
} Liste;
void l_create(Liste *list){
(*list).anzahl = 0;
(*list).anf = 0;
(*list).z = 0;
(*list).z_vorg = 0;
}
void l_insert(L_datentyp e, Liste *list){
if ((*list).anzahl > N_MAX) {
printf("Fehler: Die Liste hat keine freien Plaetze mehr!\n");
}
else {
if ( (*list).anzahl == 0 ) {
/* Fuege Inhalt e in die leere Liste an Position 0 des Arrays ein*/
(*list).daten[(*list).anzahl] = e;
/* aktuelles Element soll zugleich Listeende sein */
(*list).nachf[(*list).anzahl] = -1;
(*list).z_vorg = (*list).nachf[(*list).anzahl];
(*list).z = (*list).z_vorg;
(*list).anf = 0;
(*list).anzahl++;
}
else {
(*list).daten[(*list).anzahl] = e;
}
}
}
int main(void){
Liste list;
Liste *pL;
L_datentyp a=31;
*pL = list;
l_create(pL);
l_insert(a,pL);
return 0;
}
Hier mal das Aufgabenblatt dazu: A1, A3, A4 sind leicht und fertig, aber die A2....
http://www-ai.math.uni-wuppertal.de/SciComp/teaching/ss09/info2/Ueb/blatt1_ss09.pdf