ich brauche Hilfe bei Listen

Diskutiere ich brauche Hilfe bei Listen im Java Basics - Anfänger-Themen Bereich.
F

filiporetii997

ich brauche bitte diese Methoden void insertAfter(int i) und void insertAfter(ListNode node) :/(a) - >(b) ->null (c) - >(d) ->null a . insertAfter ( c )
(a) - >(c) - >(d) - >(b) ->null
ich habe zwei Klassen , ListNode(int Wert,ListNode Next) und Listhead(ListNode head).
Danke im Voraus
 
mihe7

mihe7

Ja, und wenn ihr gerade dabei seid: ich bräuchte bitte 500 g Hackfleisch, Petersilie und Eier.
 
J

JustNobody

Dann beschreibe doch einmal exakt in Worten:
a) Was sollen die Methoden jeweils genau machen?
b) Was sind die exakten Schritte, um das Ziel zu erreichen? Dazu am Besten auf einem Zettel im Detail durchgehen, was Du von Hand machen müsstest, um das zu erreichen.
 
mihe7

mihe7

Ja, Fleischpflanzerl. Fahr schon mal los, bist Du da bist, sind die fertig.
 
MoxxiManagarm

MoxxiManagarm

Du musst uns schon zeigen, was du bereits versucht hast und direktere Fragen stellen. Ansonsten kann ich dir nur sagen: es handelt sich bei dir um LinkedLists. Eventuell hilft dir das beim googlen.
 
F

filiporetii997

Dann beschreibe doch einmal exakt in Worten:
a) Was sollen die Methoden jeweils genau machen?
b) Was sind die exakten Schritte, um das Ziel zu erreichen? Dazu am Besten auf einem Zettel im Detail durchgehen, was Du von Hand machen müsstest, um das zu erreichen.
Die beiden Methoden machen das gleiche , die sollen ein Element nach dem Listenknoten einfügen . die Aufgabe davor war void insert(int index, int i)
und void insert(int index, ListNode node ) , hier sollen die Methoden , ein Element nach dem Index einfügen,diese Beiden methoden hab ich geschafft aber die andere Methoden (insertAfter) leider nicht. es geht um Einfach verkettete Listen .
 
MoxxiManagarm

MoxxiManagarm

Nochmal die Bitte: zeig was du bisher hast, wo kommst du nicht weiter? Code ist immer gut bei solchen Fragen, auch wenn der Code nicht gut ist. Wir helfen dir den zu verbessern.
 
F

filiporetii997

Nochmal die Bitte: zeig was du bisher hast, wo kommst du nicht weiter? Code ist immer gut bei solchen Fragen, auch wenn der Code nicht gut ist. Wir helfen dir den zu verbessern.
Dankeschön
also ich habe drei Klassen



.::::::::Erste Klasse.:::::::::::
package aufgabe2.model;
public class ListNode{
int value;
ListNode Next;
public ListNode(int value,ListNode Next){
this.value=value;
this.Next=Next;

}
public void setValue(int value){
this.value=value;
}
public int getValue(){
return value;
}
public void setNext(ListNode Next){
this.Next=Next;
}
public ListNode getNext(){
return Next;
}
}


.:::::::zweite Klasse.:::::::::::::
package aufgabe2.model;
public class ListHead{
ListNode Head;


public ListHead(int[] data){
if(data.length>0){
this.Head=new ListNode(data[0],null);
ListNode prev=this.Head;
for(int i=1;i<data.length;i++){
prev.setNext(new ListNode(data,null));
prev=prev.getNext();
}
}
else{
this.Head=null;
}
}
public ListHead(ListNode Head){
this.Head=Head;
}
public String str(){
String stri="";
ListNode tp=this.Head;
for(;tp!=null;tp=tp.getNext()){
stri= stri+"("+String.valueOf(tp.getValue())+")"+"->";

}
String ch="null";
stri=stri+ch;
return stri;
}
public void sort(){

for(ListNode one=this.Head;one!=null;one=one.getNext()){
for(ListNode two=this.Head;two.getNext()!=null;two=two.getNext()){
if(two.getValue()>two.getNext().getValue()){
int a=two.value;
int b=two.Next.value;
two.value=b;
two.Next.value=a;
}
}
}
}
public void insert(int index,ListNode nod) {
ListNode prev=Head;

for(int i=0; i<index-1;i++) {
prev=prev.Next;
}
ListNode current=prev.Next;
nod.Next=current;
prev.Next=nod;

}


}


.::::::::::: die Main Klasse.:::::::::::

package aufgabe2;
import aufgabe2.model.*;
class Main{
public static void main (String[] args){
int[] arr={1, 2, 6, 3};
ListHead tete=new ListHead(arr);
System.out.println(tete.str());
tete.sort();
System.out.println(tete.str());
int [] tab= {1, 2, 3};
ListHead nk=new ListHead(tab);
ListNode nl=new ListNode(0,null);
nk.insert(1,nl);
System.out.println(nk.str());
}
}
also der code so kompiliert , mir fehlt die nur die beiden Methoden
 
MoxxiManagarm

MoxxiManagarm

Ich denke der verständlichste Weg, nicht unbedingt der beste Weg, ist wenn du dir 2 Hilfsmethoden baust und du sie dir anschließend zu nutze machst.
Hilfsmethode 1: Verkettete Liste in 2 Listen aufspalten (Name der Methode könnte split sein)
Hilfsmethode 2: 2 Verkettete Listen aneinanderhängen (Name der Methode könnte concat sein)

Dein Einfügevorgang ist dann nichts anderes als die erste Kette A in A1 und A2 an Position i aufzuspalten und anschließen A1-B-A2 aneinanderzuhängen.


Es erhöht die Lesbarkeit, und damit die Chance, dass dir jemand hilft, deutlich, wenn du deinen Code in Code-Tags verfasst.



Kleiner Tipp für ListHead(int[] data): Wenn du die Liste von hinten befüllst (Rückwärtslaufende Schleife) dann könntest du dir das Zwischenspeichern von prev sparen und nur mit head arbeiten.
 
MoxxiManagarm

MoxxiManagarm

Noch ein Tipp: Du hast dann mindestens 2 Methoden wo du mit einem index i arbeitest. Ich empfehle dir eine Methode getNodeAt (wie auch immer du sie nennst) zu schreiben, die dir einfach auf eine Referenz auf den entsprechenden Knoten gibt. Mit dieser Referenz arbeitest du. Ansonsten musst du dir für bei jeder index-Methode die gleiche Index-Suche schreiben. Also sinngemäß:

Java:
public ListNode getNodeAt(int i) { /*...*/ }

public void insertAfter(ListNode afterThis, ListHead otherList) { /*...*/ }

public void insertAfter(int i, ListHead otherList) {
  insertAfter(getNodeAt(i), otherList);
}
 
F

filiporetii997

Noch ein Tipp: Du hast dann mindestens 2 Methoden wo du mit einem index i arbeitest. Ich empfehle dir eine Methode getNodeAt (wie auch immer du sie nennst) zu schreiben, die dir einfach auf eine Referenz auf den entsprechenden Knoten gibt. Mit dieser Referenz arbeitest du. Ansonsten musst du dir für bei jeder index-Methode die gleiche Index-Suche schreiben. Also sinngemäß:

Java:
public ListNode getNodeAt(int i) { /*...*/ }

public void insertAfter(ListNode afterThis, ListHead otherList) { /*...*/ }

public void insertAfter(int i, ListHead otherList) {
  insertAfter(getNodeAt(i), otherList);
}
Das Problem insertAfter nimmt nur ein Integer i oder ein ListNode als Parameter und so muss das aussehen :
(a) - >(b) ->null ,,,,,,,,, (c) - >(d) ->null
a . insertAfter ( c )
(a) - >(c) - >(d) - >(b) ->null
 
MoxxiManagarm

MoxxiManagarm

Achso, dann sind das aber Methoden im ListNode, dachte es wären Methoden in ListHead.
 
Thema: 

ich brauche Hilfe bei Listen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben