Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » einfach verkettete Liste zu doppelt verkettete Liste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.05.2015, 23:12 Uhr
tomi15



Hallo an Alle,

ich musste eine einfach verkettete Liste erstellen, mit Zeigern in einer struktur, bisher ist es ok, aber... ich brauche hilfe bei deiser Aufgabe. Ich muss aus dieser einfach verkettete Liste eine doppelt verkettete liste machen. Und es soll irgendwie rückwärts laufen. Mit meinem Übungsbuch komme ich seit zwei Wochen nicht weiter, und der Lehrer hilft mir nix. Und ich darf es nicht neu schreiben, muss das hier verwenden.
Bitte um Rat, egal was, aber ich kann es langsam nicht mehr sehen!
Hoffe ich habe alles richtig gemacht.




C++:
#include <iostream>

using namespace std;

struct listenelement
{
  string daten;
  listenelement* next;
};

void anhaengen(string datenneu, listenelement* listenanfang)
{
  listenelement* hilfszeiger;
  hilfszeiger = listenanfang;
  while(hilfszeiger->next != NULL)
  hilfszeiger = hilfszeiger->next;
  hilfszeiger->next =  new (listenelement);
  hilfszeiger = hilfszeiger->next;
  hilfszeiger->daten = datenneu;
  hilfszeiger->next = NULL;
}
void ausgeben(listenelement *listenanfang)
{
  listenelement* hilfszeiger;
  hilfszeiger = listenanfang;
  cout << hilfszeiger->daten << '\n';
  while (hilfszeiger->next != NULL)
  {
     hilfszeiger = hilfszeiger->next;
      cout << hilfszeiger->daten << '\n';
  }
}

void ende(listenelement* listenanfang)
{
  listenelement* hilfszeiger;
  while (listenanfang !=NULL)
  {
    hilfszeiger = listenanfang;
    listenanfang = listenanfang->next;
    delete (hilfszeiger);
  }
}


int main ()
{
  listenelement* listenanfang;
  listenanfang = new (listenelement);
  listenanfang->next = NULL;
  listenanfang->daten = "Element 1",
  anhaengen("Element 2", listenanfang);
  anhaengen("Element 3", listenanfang);
  anhaengen("Element 4", listenanfang);
  ausgeben (listenanfang);
  ende (listenanfang);
  
  return 0;
}



-----
Edit: Quelltext neu formatiert.

Dieser Post wurde am 19.05.2015 um 01:11 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.05.2015, 00:23 Uhr
Hans
Library Walker
(Operator)


Hi,

eine doppelt verkettete Liste besitzt 2 Zeigerelemente, d.h. Du musst die Struktur um einen weiteren Zeiger erweitern. Dieser Zeiger verweist dann auf das vorherige Element der Liste (oder einen NULL-Zeiger, wenn es das erste Element ist). Eine solche, doppelt verkettete Liste kann man dann auch Rückwärts durchlaufen, d.h. beim letzten Element anfangen und sich von dort aus zum ersten Element vor arbeiten.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.05.2015, 18:55 Uhr
tomi15



Vielen Vielen Dank!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: