-
Java Warteschlange Hilfe
Hallo,
ich habe folgendes Problem:
Wir haben in der Schule eine Warteschlange programmieren sollen, was ich auch geschafft habe, und nun will ich auch noch eine "up" und eine "down" Methode, mit der ich die Wartenden in der Schlange nach oben und unten verschieben kann.
Den Code könnt ihr euch hier mit den Benutzerdaten "Gast@Haggi94:free-hack" und dann in dem Ordner free-hack.com den Ordner Warteschlange dl'en.
Wär nett wenn mir jemand helfen könnte :D
lg
haggys22
BTW: ich benutze BlueJ wenns wichtig sein sollte.
-
Wieso macht jede Schule dasselbe -.-
Code hier rein oder hier rein dann helfe ich dir.
Wie wärs mit deinen Überlegungen?
Welche Ansätze hattest du?
Oder hast du überhaupt keine Idee?
Fehlt dir das Konzept oder das Wissen deine Idee umzusetzen?
-
Weil es im Lehrplan steht?^^
-
Ist doch total langweilig und ätzend dass jeder mit BlueJ arbeiten muss :(
Traurig dass alles vorgegeben wird.. als wäre es nicht schlimm genug mit Java zu arbeiten^^
-
naja nen Ansatz hätte ich ja, bloß keine Idee, wie ich das ganze umsetzen kann.
Also für die "up"-Methode jetzt mal mein bisheriger Ansatz:
FrEe-hAcK.com :: NoPaste
und für die "down" Methode wärs anders rum aber so funzt das ganze eben nicht
-
Die Informatikbücher sehen sowieso immer aus wie ein Bilderbuch für 3-Jährige und was den Stoff betrifft, so sollte man da maximal 1-2 Monate mit beschäftigt sein um das Buch durch zunehmen...
Naja back2topic:
Der Login zu der Seite funktioniert nicht - entweder du postest den Scheiß hier, oder irgendwo anders, wo man auch drauf zugreifen kann.
EDIT:
^---- zu spät.
-
Also die Warteschlange baut sich von oben nach unten auf.
0 A
1 B
2 C
3 D
4 E
Wenn der Knoten D (an Stelle 3) nun nach unten soll (also in der Warteschlange nach hinten, hoffe das ist richtig), dann musst du den Nachfolger von C zu E (aktuell der Nachfolger von D) machen, und den Nachfolger von E zu D. Dann wird daraus:
0 A
1 B
2 C
3 E
4 D
Was ich aber gerade nicht verstehe sind deine Knoten als Arrays oder wie? Theoretisch war das Prinzip der Nachfolgerkacke doch, dass die Liste bloß dadurch entsteht, dass jeder Knoten einen Nachfolger hat. Die Knoten kennen sich nicht untereinander, sondern nur ihren Nachfolger (und vielleicht noch ihren Vorgänger, was hier wichtig wäre wenn du es nicht umständlich machen willst).
-
Also wegen MyDrive - Ihr kostenloser Online-Speicher ich hab beim PW des "-"-Zeichen vergessen des PW lautet als "freehack".
Die Knoten sind nicht als Arrays gespeichert, aber ich habe eine Methode mit der ich die Knoten der Reihe nach als Array ausgeben kann, um mir Arbeit zu sparen wenn ich einen Knoten an einer bestimmten Stelle haben will. aber ansonsten stimmt es, dass jeder Knoten genau einen Nachfolger hat und sonst keine Verknüpfungen.
aber wenn ich das ganze eben so mache, wie ich im NoPaste gepostet habe, kennt ja der Vorgänger vom Knoten a nur den Knoten, dessen Attribute der Knoten a übernommen hat, aber nicht den Knoten a an sich. Also ist das Problem, dass sich dabei in meinen Augen die Struktur dadurch in Luft auflöst, und man dann 2 Ketten hat, und ein paar freie Radikale
-
Habt ihr das so gelernt? Sonst ist es eigentlich eine Vergewaltigung der vorgegebenen Datenstruktur.. du könntest deinen Knoten insoweit erweitern, als dass er seinen Vorgänger kennt. Dann hast du alle benötigten Verknüpfungen um sowohl deine bereits vorhandene "nach vorne" Methode, als auch meine dir oben theoretisch dargestellte "nach hinten" Methode zu realisieren. Ich hoffe du kriegst das selber hin, denn ich versuche nur zu helfen, aber mache nicht deine Arbeit. Über deinen letzten Part hab ich mir jetzt keine Gedanken gemacht, denn wenn du nach vorne und hinten springen kannst, dann solltest du mein Vorhaben ohne Probleme durchführen können. Natürlich müssten auch immer Ausnahmen beachtet werden, für den Fall dass es keinen Nachfolger oder Vorgänger mehr gibt.
/edit
Also ich bin jetzt erstmal ein paar Stunden weg, wenn du es geschafft hast editier es hier bitte irgendwo rein. Sonst versuchen wir es nochmal später bzw. heue Abend. Wenn ich micht nicht gerade selber irre, dann ist das aber die beste Möglichkeit.
-
Mal eben zum verstehen, vielleicht kann ich dir auch helfen. Haben im LK natürlich die selben Abstrakten Datentypen gemacht.
Bei welcher Schlange seid ihr im Moment?
Macht ihr noch die "Queue" mit Nachfolger?
Oder macht ihr vielleicht schon eine andere generische Schlange mit Vorgänger und Nachfolger bzw vielleicht schon den ADT "List"?
Nehme aber an, dass ihr bei der Queue seid.
Also wir haben uns auch langsam an die Queue rangetastet, mit mehreren Verbesserungen und Optimierungen unser ersten Überlegungen, was das Ding können muss/sollte.
Unser Endprodukt war dann eine Klasse "Queue" mit der inneren Klasse "Knoten".
Ich füg den Code mal bei Pastebin ein: http://pastebin.com/XVe3eJLh
Die Methodennamen sind sogar schon nach den Zentralabi Vorgaben ;)
Wenn du was daran lernen willst, vollzieh den Code erst nach, bevor du ihn einfach benutzt.
Die Schlange kann alles verwalten, wegen "private Object kenntObject;", is ja klar. Kann man natürlich auch beschränken.
War wiegesagt unser Endprodukt.
Wenn man sich noch Gedanken macht, wie es einfacher geht, kommt man auf die beste Möglichkeit, nämlich die "List".
Kannste dir ja auch mal angucken: http://pastebin.com/75xffiZR
Natürlich auch nach Zentralabivorgaben.
Die List hat den Vorteil, dass es start und ende als Knoten gibt. Daraus folgt, dass man einen Runner benutzen kann. Dieser hat die Funktion eines Zeigers und steht immer über einem "richtigen" Knoten in der Verkettung. Jeder Knoten kennt seinen Vorgänger und Nachfolger. Dadurch ist es möglich Knoten zu ersetzen, zu löschen oder neue irgentwo einzufügen. Das wiederrum, wird dadurch leichter, dass es sich leichter realisieren lässt einen Knoten nach vorne oder nach hinten zu rutschen (mit dem Runner).
Sehe grade zwar, dass die List nicht komplett ist weil insertInFront und insertBehind nicht da sind, aber das ist eigentlich auch egal... Kann man auch selber machen, ist sehr leicht. Der Inhalt eines Knoten ist in der Klasse mit Value ausgefüllt.
Hoffe ich konnte dir helfen und dir nen Ausblick darauf geben, was sicherlich als nächstes ansteht :lol
Ich teile übrigens dein Schicksal, wir programmieren selbst im 12er LK ab und zu noch mit BlueJ, zum Kotzen dieses verbuggte Scheißprogramm.