Autoparkplatz verkettete Liste erstes und letztes Auto

Igig1

Mitglied
Hi, ich erstelle einen Autoparkplatz als verkettete Liste selber. Mein Autoparkplatz kann 7 Autos parken, die Kapazität ist in einem Array vom Typ Auto vorgegeben.

mein Parkplatz kennt immer seinen erstest und letztes Auto, also das Auto im Arrayit dem Index 0 wäre ja das erste Auto, aber wie definiere ich das letzte Auto? Ich hab vom Typ Auto das Atteibut letztesauto z. B. aber wie definiere ich es? Ich habe einen Konstruktor der bei Erstellung des Parkplatzes automatisch ein Auto mitgeben muss, das tue ich dann in den Artay und das ist mein erstes Auto, was der Parkplatz kennt, aber wie initialisiere ich mein letztes Auto? Wenn ich nur zwei Autos habe, habe ist ja das zweite Auto immer das letzte, wie weise ich das zu? Und wenn ich ein Auto entferne, muss ich ja auch immer das erste und letzte Auto verändern, wie soll das gehen?
 
Was hat ein Array mit einer verketteten Liste zu tun? Richtig - nichts!

Schau evtl. mal bei https://www.java-forum.org/thema/einfach-verkettete-liste-verstehen.194516/
Da wird recht ausgiebig über verkettete Listen diskutiert.
Sorry, habs vielleicht nicht gut erklärt, aber ich erstelle selber einen Parkplatz der eine verkettete Liste und in der Klasse die den Parkplatz darstellt habe ich rinen Array der Größe 7, wo alle Autos reingelegt werden, der Array ist dafür, um die maximale Größe ded Parkplatzes darzustellen


Das ist z.B ein Bücherregel als verkettete Liste, hat die gleichen Eigenschaften wie mein Parkplatz und auch einen Array enthalten
 
Du willst doch sowas wie eine doppelt verkette Liste machen oder?

Da musst du beim hinzufügen immer dem vorherigen Auto die ref auf dich selber geben.

Nicht nur die ref des neuen in dich selber abspeichern.
 
aber wie definiere ich das letzte Auto?
Die letzte Stellfläche des Parplatzes findest du so:
Java:
var letzter = parkplatz[parkplatz.length - 1];
-> wenn dein Parkplatz ein Array ist.
Das letzte Auto zu finden ist Definitionssache. Ein Parkplatz kann ja auch leere Stellflächen haben und das Auto auf dem letzten Stellplatz muss ja nicht als letztes angekommen sein. Was ist dann das letzte Auto - das welches zuletzt angekommen ist oder das mit dem höchsten Index im Array?

Ich denke dein Array ist eine Sackgasse und ist gar nicht was du willst. Du willst eine verkette Liste der Autos und die nicht ein Array der Stellflächen vom Parkplatz. Du musst also dein Parkplatz-Array loswerden und eine verkettete Liste von Autos erstellen.
 
Aso, bei mir ist es so, ich habe eine Klasse Auto, die zeigt auf beide Nachbarautos, also doppelt verkette Liste und nun soll ich einen Parkplatz erstellen, der die Autos parkenläsdt in sich, die maximale Kapazität des Parkplatzes beträgt 7 Autos, deshalb habe ich einen Array erstellt mit der Kapazität 7 in der Klasse Parkhaus, das Parkhaus muss auch keine verkettete Liste sein, dafür habe ich ja Autos schon.

aber das Parkhaus muss halt das erste und letzte Auto in sich kennen und ich weiß nicht wie ich das darstelle, ist vielleicht auch Definitionssache, aber das letzte soll in dem Fall das letzte Auto sein, was gerade vorhanden ist. Der Parkplatz hat Platz für 7 Autos, wenn 3 enthalten sind, wäre ja der im Index 2 das letzte Auto, aber wie stelle ich ein, dass das immer geschieht? Also immer das letzte Auto dann angepasst wird, wenn ich ein Auto hinzugüge oder entferne ? Klar ist ich erstelle zwei Attribute in Parkhaus vom Typ Auto die das erste und letzte Auto darstellen, das erste Auto ist immer das Auto welches vorhanden ist, sagen wir mein Parkplatz ist voll alle 7 Autos sinf drinne, dann wäre das erste das Auto im Index 0 des Arrays, aber wenn das ausparkt und keiner dazukommt, ist ja das erste Auto der im Index 1 und so muss ich dir Attribute halt immer anpassen
 
Ist das so vorgegeben?
Das musste ich erstellen, Aufgabenstellung lautet:

„Erstelle eine Klasse Auto, sei dir bewusst dass ein Auto auf einem Parkplatz, der nur Parkplätze hat die nebeneinander stehen, sein zu sich links und rechts stehendes Auto kennt! Erstelle danach die Klasse Parkplatz, sei die bewusst, dass der Parkplatz nur die Kapazität von 7 Autos aufweist und der Parkplatz kennt das erste und letzte Auto, welches in ihm ist und zudem kennt er immer die insgesamte Anzahl an Autos die in ihm stehen!“
 
Also irgend etwas stimmt hier nicht. Wenn ein Auto in ein Parkhaus fährt wird es auf einen bestimmten Platz gestellt. Wenn der Nachbar wegfährt, dann gibt es keinen Nachbarn mehr. Die anderen Autos werden deswegen ja nicht umgeparkt. Es gibt dann einfach einen freien Parkplatz im Parkhaus.
Man muss eben unterscheiden, ob man eine Liste von Autos verwaltet oder Parkplätze. Parkplätze wären ja quasi unveränderlich wie ein Array. Auf einem Parkplatz parkt ein Auto oder eben nicht.
Das ist dann aber immer noch keine Liste von Autos.
Eine Liste von Autos könnte man am Eingang mit einer Schranke erstellen. Wenn 7 Autos drin sind, dann lasse ich keins mehr rein. Dabei ist mir aber egal wo sie stehen. Es interessiert im Moment nur die Anzahl der Autos.
Somit wäre eine einfache Zählvariable im Moment ausreichend. Eine Liste sollst du vermutlich deshalb verwenden, weil das Programm noch erweitert werden soll. Also konzentriere dich auf die Liste der Autos und nicht so sehr auf die Parkplätze. Damit wird das Problem eigentlich ganz überschaubar.
Eine doppelt verkettet Liste hat immer ein erstes und ein letztes Element (Auto), das muss die Liste einfach kennen. Notfalls findest du das letzte Element dadurch, dass es nur einen Vorgänger und keinen Nachfolger hat. Das erste Element (Wurzel) musst man sich aber in der Liste auf jeden Fall merken und es hat nur einen Nachfolger aber keinen Vorgänger. Alle anderen Elemente der Liste haben einen Vorgänger und einen Nachfolger - man könnte auch linker und rechter Nachbar dazu sagen.
Du kannst die Elemente der Liste ganz einfach zählen, indem du bei der Wurzel beginnst und immer wieder den Nachfolger abfragst. Jedes mal wenn es einen Nachfolger gibt, erhöhe den Zähler um eins. Wenn es keinen Nachfolger gibt (null), dann bist du am Ende der Liste.
 
Zuletzt bearbeitet:
Also irgend etwas stimmt hier nicht. Wenn ein Auto in ein Parkhaus fährt wird es auf einen bestimmten Platz gestellt. Wenn der Nachbar wegfährt, dann gibt es keinen Nachbarn mehr. Die anderen Autos werden deswegen ja nicht umgeparkt. Es gibt dann einfach einen freien Parkplatz im Parkhaus.
Man muss eben unterscheiden, ob man eine Liste von Autos verwaltet oder Parkplätze. Parkplätze wären ja quasi unveränderlich wie ein Array. Auf einem Parkplatz parkt ein Auto oder eben nicht.
Das ist dann aber immer noch keine Liste von Autos.
Eine Liste von Autos könnte man am Eingang mit einer Schranke erstellen. Wenn 7 Autos drin sind, dann lasse ich keins mehr rein. Dabei ist mir aber egal wo sie stehen. Es interessiert im Moment nur die Anzahl der Autos.
Somit wäre eine einfache Zählvariable im Moment ausreichend. Eine Liste sollst du vermutlich deshalb verwenden, weil das Programm noch erweitert werden soll. Also konzentriere dich auf die Liste der Autos und nicht so sehr auf die Parkplätze. Damit wird das Problem eigentlich ganz überschaubar.
Eine doppelt verkettet Liste hat immer ein erstes und ein letztes Element (Auto), das muss die Liste einfach kennen. Notfalls findest du das letzte Element dadurch, dass es nur einen Vorgänger und keinen Nachfolger hat. Das erste Element (Wurzel) musst man sich aber in der Liste auf jeden Fall merken und es hat nur einen Nachfolger aber keinen Vorgänger. Alle anderen Elemente der Liste haben einen Vorgänger und einen Nachfolger - man könnte auch linker und rechter Nachbar dazu sagen.
Ja, eins drüber habe ich Ihnen die 1 zu 1 Aufgabenstellung für der 7 a) genannt, erst bei 7 b kommen andere Sachen dazu. Denke wenn das Auto keinen Nachbar mehr hat, so muss ich dann den Nachbar vllt null setzen?
 
Denke wenn das Auto keinen Nachbar mehr hat, so muss ich dann den Nachbar vllt null setzen?
Nein, wenn wir bei der Liste der Autos bleiben dann nicht. Wenn ein Element X aus der Liste entfernt werden soll, dann wird der Vorgänger des Elements X als Vorgänger des nächsten Elements nach X - also dem Nachfolger von X gesetzt. Somit wird X nicht mehr in der Liste gefunden, wenn man wieder bei der Wurzel beginnt durch die Liste zu wandern. Die Liste ist somit ein Element kürzer.
Das ist der Unterschied zum Parkplatz, dieser wäre dann einfach leer, bleibt aber erhalten.
 
Der Parkplatz hat Platz für 7 Autos, wenn 3 enthalten sind, wäre ja der im Index 2 das letzte Auto
Vergiss das Array und vergiss "Index". Das letzte Auto ist dasjenige, welches keinen Nachfolger mehr hat (verkettete Liste). Die Sache mit dem "Platz" kannst du über einen Zähler lösen, den du beim "Einparken" erhöhst und beim "Ausparken" verringerst.
 

Zurück
Oben