matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

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
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenAlgorithmen und Datenstrukturenverkettete Listen
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
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.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]