Script Problem "Dynamische Datenstruktur"

Status
Nicht offen für weitere Antworten.

bluej

Mitglied
Hey,

ich habe mich hier neu angemeldet weil ich eure Hilfe brauche. Ich muss für Informatik ein Referat über "Dynamische Datenstrukturen" machen (BlueJ-Java) Mir wurde eine Aufgabe zugeteilt, diese lautet:

Erstellen Sie 100 Knoten aus Zufallszahlen und hängen sie diese aneinander. Danach geben Sie bitte diese Liste aus.

Hier ist das Problem, ich habe einige Ansätze aber irgendwie fehlt mir die weitere vorgehensweise und ich muss das am Montag vortragen! Kann mir bitte jemand beim Schreiben des Scripts helfen? Laut Lehrer sind das 3/4 Zeiler, kleine Dinger.

Folgendes habe ich:

Java:
public class lineareliste
{
node first;
int zufallszahl;
node next;

public lineareliste()
{
// erstellen Sie 100 Knoten
}

public void addnode()
{
node Knoten;

for (int i=1; i<=100; i++)
{
zufallszahl = (int)(math.random89*1+100);
Knoten = new node (zufallszahl);
next = Knoten;
}

}
public void ausgabe()
{
// Knoten müssen ausgegeben werden
}

}

Sorry, ich bin eig recht gut in Informatik, nur da es ein neues Thema ist brauch ich unbedingt euren Rat! Wie bekomme ich das hin, dass sich 100 Knoten mittels Zufallszahlen erstellen und jeweils aneinander gehängt werden. Das ganze sollte noch ausgegeben werden!

Was kann ich an meiner Grundlage noch verändern, was fehlt?
Ich bin euch über jede Hilfe dankbar, gerne auch per mail/icq!
Schreibt, VIELEN DANK

Liebe Grüße,
euer Oliver
 
S

SlaterB

Gast
das Zusammenbauen sieht schon recht ordentlich aus, wobei du dich noch entscheiden musst, wie die Klasse heißen soll

> public class lineareliste
passt kaum zu
> new node (zufallszahl);

oder soll lineareliste die Nodes enthalten und ist selber kein Node? wieso dann Klassenattribute next + zufallszahl?
man kann natürlich beides vermischen, aber dann musst du auch korrekt immer denselben Klassenname verwenden,
oder zwei verschiedene Klassen

Klassen groß schreiben, Variablen klein!

die fertige Liste musst du irgendwo speichern, die Ausgabe erfolgt wiederum in einer Schleife:
aktuelles Element ausgeben, wenn noch Rest da, dann Rest ausgeben
 

Danto

Mitglied
Du brauchst aufjeden Fall 2 Klassen. Beispielsweise so:

Node:
Java:
public class Node {

    private int value;
    private Node next;

    public Node(int value) {
        this.value = value;
    }

    public Node getNext() {
        return next;
    }

    public int getValue() {
        return value;
    }
}

Liste:
Java:
public class Liste {

    Node first;


    public Liste() {
        for (int i = 0; i < 100; i++) {
            int zufallszahl = new Random().nextInt();
            this.add(new Node(zufallszahl));
        }
    }

    public void add(Node node) {

    }

    public void print() {

    }
}

Die eigentliche Funktionalität liegt in der add-Methode.
Du musst erst überprüfen ob die Liste leer ist (first==null), falls sie leer ist, wird der eingefügte Knoten zum ersten gemacht.
Falls nicht, setze wegen der Übersicht einen neuen Node current=first. Dann gehst du solange durch die Liste bis keine Element mehr vorhanden ist (current.getNext()==null).
Und genau da fügst du dann das aktuelle Element ein.

Die Ausgabe Methode läuft genauso. Du setzt current=first und gehst solang durch die Liste bist current.getNext()==null und gibst jeweils current.getValue() aus.
 

bluej

Mitglied
oha, vielen dank für eure Antworten :D Aber bei uns im Kurs wird das nie so "umständlich" gemacht, ich glaub ich habe noch nie den Befehl current. gehört ( als Beispiel )

Also um es vielleicht einfacher zu machen.

[Java]
public void addnode () // hier soll 1 Knoten einer Zufallszahl erstellt werden und eingefügt werden
// Ich hab hier so einen Ansatz
{
node Knoten;
zufallszahl = (int)(Math.random()*1+100);
Knoten = news node (zufallszahl);
next = Knoten;
}
//Würde dies funktionieren? Zuerst wird ja eine Zufallszahl erstellt
//Dann wird ein neuer Knoten erstellt mit dem Wert zufallszahl
//Dann wird bei next der Knoten angehängt
//richtig so oder falsch?

public lineareliste() // hier sollte mittels einer Schleife 100x das gleiche getan werden
{
for (int i =1; i<100;i++)
{
addnode();
}
}
//Hier rufe ich mittels einer for Schleife 100x die Funktion addnode(); auf
//richtig oder falsch?

public void ausgabe() // hier sollten alle 100 Knoten ausgegeben werden
{
// Hier fehlt mit jeglicher Ansatz, da ich nicht weiß wie ich an die einzelnen Knoten
// rankomme. Früher ging das ja immer leicht mit variable/wert+i oder so
// aber bei node weiß ich echt nicht weiter
}

//was muss ich bei public class definieren?
// node first? node next? int zufallszahl?

// Das kann doch nicht so schwer sein ;-) Vielen Dank
[/Java]
 

Danto

Mitglied
Das ist so halb richtig.

Du musst zwischen 2 Datenstrukturen unterscheiden.

Die eine ist Node, diese enthält einen int-Wert und einen Zeiger/Referenz auf den nächsten Knoten next.

Die andere ist die eigentliche Liste. Diese Liste enthält eigentlich nur einen Zeiger/Referenz auf den ersten Knoten first.
Von dem first Knoten aus, ergibt sich dann über die jeweiligen next-Zeiger die ganze Liste.
Bspw. kannst du so die komplette Liste durchlaufen:
Java:
Node current = first; 
while(current.getNext() != null) 
{ 
    current = current.getNext();
}
 

bluej

Mitglied
Das ist so halb richtig.

Du musst zwischen 2 Datenstrukturen unterscheiden.

Die eine ist Node, diese enthält einen int-Wert und einen Zeiger/Referenz auf den nächsten Knoten next.

Die andere ist die eigentliche Liste. Diese Liste enthält eigentlich nur einen Zeiger/Referenz auf den ersten Knoten first.
Von dem first Knoten aus, ergibt sich dann über die jeweiligen next-Zeiger die ganze Liste.
Bspw. kannst du so die komplette Liste durchlaufen:
Java:
Node current = first; 
while(current.getNext() != null) 
{ 
    current = current.getNext();
}

Ach, gut dann habe ich aber paar Fragen damit ich das verstehe.

Was bedeutet:

Node current = first; ?

Wie erklärt sich die while schleife und was bedeutet current = current.getNext(); ?
muss ich current vorher deklarieren?

Da fehlt doch noch die richtige Ausgabe mittels print oder sowas oder?

Danke

// War meine addnode(); Funktion oben richtig?
 
S

SlaterB

Gast
> Node current = first; ?

Deklaration einer Variablen

> muss ich current vorher deklarieren?

..

> was bedeutet current = current.getNext();

einer Variablen wird ein neuer Wert zugewiesen

wenn dir diese Grundoperationen jeder Programmiersprache nicht klar ist, dann hast du ein Problem,
da steht nicht mehr als
int x = 4;
nur andere Klassennamen, Variablenname, andere Werte,

dieses Grundsystem aus Objekten, Klassen, Methodenaufrufen, Rückgabewerte usw. musst du erstmal lernen,
dann kann Aufgaben lösen
 

bluej

Mitglied
> Node current = first; ?

Deklaration einer Variablen

> muss ich current vorher deklarieren?

..

> was bedeutet current = current.getNext();

einer Variablen wird ein neuer Wert zugewiesen

wenn dir diese Grundoperationen jeder Programmiersprache nicht klar ist, dann hast du ein Problem,
da steht nicht mehr als
int x = 4;
nur andere Klassennamen, Variablenname, andere Werte,

dieses Grundsystem aus Objekten, Klassen, Methodenaufrufen, Rückgabewerte usw. musst du erstmal lernen,
dann kann Aufgaben lösen

Ach Danke, ja nach den Sommerferien hab ich einiges vergessen :)
Entschudigt, aber als du sagtest int x = 4; wusst ich sofort bescheid :)

soll ich unter dem current Befehl noch return current; verzeichnen oder lohnt sich System.out.println(current); besser?
 
S

SlaterB

Gast
die Liste sollte sicher nicht gleichzeitig bei der Erstellung ausgegeben werden (zum Testen durchaus wertvoll, aber für die Hauptaufgabe nicht),
wie du die Liste speicherst/ übergibst musst du entscheiden, kann direkt in einem Klassenattribut landen,
Rückgabewert klingt aber auch vernünftig,

current allerdings wohl eher nicht, das dürfte das letzte Element in der Liste sein, man möchte doch eher das erste haben,
falls es eine Klasse Liste gibt und nicht nur Node, dann braucht man nur die Liste, nicht den Node..
 

bluej

Mitglied
current allerdings wohl eher nicht, das dürfte das letzte Element in der Liste sein, man möchte doch eher das erste haben,
falls es eine Klasse Liste gibt und nicht nur Node, dann braucht man nur die Liste, nicht den Node..


Ach okay, ich wollte die Liste automatisch ausgeben, mittels der for Schleife und der automatischen Knotenerzeugung, da ich nicht weiß, wie ich an diese Knoten nacher rankomme?

Wenn ich current returne, dann kriege ich ja nur den letzten Knoten. Wie bekomme ich den alle Werte ausgegeben? Langsam hab ich den Durchblick!
 
S

SlaterB

Gast
du brauchst die Liste oder den ersten Knoten und musst diesen in einer Schleife durchlaufen,
welch kreativer Tipp
 

bluej

Mitglied
du brauchst die Liste oder den ersten Knoten und musst diesen in einer Schleife durchlaufen,
welch kreativer Tipp

Danke, hast du da vielleicht noch einen kleinen Codeschnipsel für mich?

[Java]
public lineareliste()
{
// erstellen Sie 100 Knoten
}
[/Java]

Da ist meine Liste, darein setze ich die for Schleife mit der Funktion addnode(); bei jedem Durchlauf. Somit habe ich dann die 100 Knoten im Speicher.

Nun brauche ich noch die Funktion ausgabe();
Wie soll ich die nun schreiben? Kannst mir da einen kleinen Code basteln?
Oder muss ich einfach lineareliste() returnen? hm..da bin ich jetzt ratlos
 
S

SlaterB

Gast
vermisch doch nicht ständig die Dinge,
zum einen redest du seit ner Ewigkeit von dem einen Rückgabewert, zum anderen von der Ausgabe,
das sind doch separate Dinge

was du wo wann wie machen musst, kann ich nicht vorschreiben, ich weiß auch gar nicht was du bisher wo machst, wer der Aufrufer ist, der das ominöse return erhalten soll usw.,
das Ziel ist aber denkbar einfach:

1.
Liste list = new List(); // oder xy.createList();

2.
falls noch nicht geschehen nun
list.fuelleDich(); // oder xy.fuelleListe(list);

spätestens nun sollten die Elemente drin sein

3.
list.ausgabe();

fertig,
die Methode Ausgabe mit ner Schleife musst du nun natürlich noch programmieren,
ein Beispiel kann ich dafür nicht geben, die Schleife zum Befüllen ist Vorgabe genug, noch mehr wäre Abschreiben
 

bluej

Mitglied
2.
falls noch nicht geschehen nun
list.fuelleDich(); // oder xy.fuelleListe(list);

spätestens nun sollten die Elemente drin sein

Ja sorry, hätte ich kein Problem hätte ich nicht gefragt :) Aber ich glaube ich hab das so langsam verstanden. Nur um klar zu stellen:

Die Methode list.fuelleDich();

reicht das, wenn ich in dieser prozedur meine zufallszahlen erzeuge und diese neuen knoten mittels einer for-schleife 100x an einandner hänge? Dann hab ich doch in der liste meine 100 knoten mittels for-schleife erzeugt! Richtig?

Dann muss ich bei der Ausgabe mittels Schleife nur noch die Liste aufrufen und da hab ich dann alle Werte angezeigt. Ich probiere es gleich mal praktisch!

Lieben Dank, Wenn soweit alles klar ist, kann das Thema geclosed werden
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U URI Rechner (Java Script) Allgemeine Java-Themen 7
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
C Java Script Pause berechnen Allgemeine Java-Themen 5
E selenium script in Tampermonkey umschreiben Allgemeine Java-Themen 1
N Script mit Java ausführen Allgemeine Java-Themen 21
B Erste Schritte Script für Webseiten-Prozesse entwickeln Allgemeine Java-Themen 9
A Linux bash script ausführen Allgemeine Java-Themen 16
Viktim Bash Script in Java ausführen Allgemeine Java-Themen 6
T javax.script (JavaScript): Nicht-JRE-Packages importieren/nutzen Allgemeine Java-Themen 4
A Java erstellt Script und konvertier zu EXE Allgemeine Java-Themen 4
D Shell Script mit Parametern Allgemeine Java-Themen 2
D Java Script webseite Asufüllen Allgemeine Java-Themen 3
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
G Transaction Script, Table- Domain Model Allgemeine Java-Themen 2
R Script parser Allgemeine Java-Themen 6
R Java script extension Allgemeine Java-Themen 2
E Rückgabewert von Jave in Bash - Script Allgemeine Java-Themen 4
D per java bash script ausführen Allgemeine Java-Themen 3
L Externes Bash Script aus Java Datei heraus starten Allgemeine Java-Themen 2
M Javaprozess mit Batch-Script synchronisieren Allgemeine Java-Themen 2
R HSQLDB und db.script Allgemeine Java-Themen 4
H Php Script aus Java Applikation starten Allgemeine Java-Themen 2
S html script für java Allgemeine Java-Themen 8
G Script interpreter Allgemeine Java-Themen 3
M Login script mit java Allgemeine Java-Themen 3
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben