www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Algorithmen und Datenstrukturen" - verkettete Listen
verkettete Listen < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

verkettete Listen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:19 So 23.04.2006
Autor: nathenatiker

Hallo,

komme bei folgendem Problem nicht weiter:
ich probiere gerade eine einfach verkettete Liste(gegeben durch eine Referenz auf das erste Element) umzudrehen. Dies soll aber nur durch manipulieren der Referenzen passieren(dass heisst ohne Benutzung von Methoden, insbesondere keine Kopien).
Rein theoretisch brauch ich doch nur die länge der liste
und nehme das erste Element und hänge es ans ende,
dann nehme ich das neue erste und setzte es vor das letzte element usw.

Bin mir leider nicht sicher ob das ein guter weg ist,
bzw ob das verschieben durch ändern der Referenzen so überhaupt möglich ist.
wäre froh wenn mir jemand anregungen geben könnte.
MFG

Nathenatiker

        
Bezug
verkettete Listen: Antwort
Status: (Antwort) fertig Status 
Datum: 18:21 So 23.04.2006
Autor: Frank05


> Hallo,

Hallo,

> komme bei folgendem Problem nicht weiter:
>  ich probiere gerade eine einfach verkettete Liste(gegeben
> durch eine Referenz auf das erste Element) umzudrehen. Dies
> soll aber nur durch manipulieren der Referenzen
> passieren(dass heisst ohne Benutzung von Methoden,
> insbesondere keine Kopien).
> Rein theoretisch brauch ich doch nur die länge der liste
>   und nehme das erste Element und hänge es ans ende,
>  dann nehme ich das neue erste und setzte es vor das letzte
> element usw.

  
Was "möglich" betrifft, so musst du dir immer überlegen, ob nach deiner jeweiligen Änderung noch immer eine ordentliche verkettete Liste vorliegt. Du musst also jedes betroffene Element der Liste genau betrachten und prüfen, ob sein Zeiger auf das nächste Element stimmt und ob der Zeiger auf das betroffene Element stimmt. Gerade wenn es mehr Zeiger werden (z.B. bei doppelt verketteten Listen) verrutscht gern mal der ein oder andere Zeiger wenn man nicht aufpasst.

Dein Ansatz ist zwar noch etwas unpräzise formuliert, ist aber durchaus machbar. Die Schwierigkeit liegt hier lediglich im Detail: Wenn du sagst du setzt es vor das letzte Element, wie machst du das dann genau?

Vielleicht ist es einfacher, wenn du dir das Ergebnis als eine neue Liste vorstellst. Also jedesmal wenn du ein Element der alten Liste an der 'richtigen' Stelle einfügst kannst du das auch betrachten als 'entferne das Element aus der alten Liste und füge es in die neue Liste ein'. Somit widerspricht das nicht deiner Anforderung, dass keine Kopie gemacht werden darf, da ja nur Zeiger umgebogen werden.

Wie du schon richtig erkannt hast genügt es immer wieder das erste Element der Liste zu betrachten und an die richtige Stelle zu setzen. Wenn du nun eine zweite Liste konstruierst, anstatt an das Ende der ersten Liste anzuhängen, dann benötigst du auch die Information über die Länge der Liste nicht.

Du musst dir jetzt nur noch überlegen, wo in der neuen Liste das jeweilige Element eingefügt werden muss (was nicht weiter schwer ist). Wenn du die Originalliste dermaßen abgebaut hast bleibt nur noch die ursprüngliche Referenz auf das erste Element der neuen Liste zu setzen.

Ich weiß nicht, was du damit meinst, dass du keine Methoden benutzen darfst. Wahrscheinlich ist gemeint, dass du keine API Aufrufe o.ä. verwenden sollst. Aber das ist ja auch nicht nötig. Eine Kopie der Liste ebenfalls nicht. Der Speicherbedarf liegt bei n+c wobei n die Element der Liste sind und c der Platz für eine (konstante) Anzahl von Hilfsvariablen - abhängig von deiner genauen Implementierung. Die Laufzeit ist genauso groß, wenn du nicht vorher die Länge der Liste berechnest (sonst hättest du 2*n).

> Bin mir leider nicht sicher ob das ein guter weg ist,
>  bzw ob das verschieben durch ändern der Referenzen so
> überhaupt möglich ist.

Bis auf die unnötige Berechnung der Listenlänge ist deine Idee soweit in Ordnung. Versuch dich einfach mal an einer Implementierung, dann wirst du schnell erkennen, wo du dir das Ganze noch nicht weit genug klar gemacht hast.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de