Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Doppelt Verkettete Liste mit Pointern

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
26.09.2005, 15:08 Uhr
~Manda el
Gast


Hallo zusammen,

bin neu hier und hab gleich mal ne Frage über "doppelt verkette liste mit pointern".
Erstmal der Quelltext:

Bearbeitung:
Code-Tags eingefügt


C++:
#include <iostream.h>
#include <string.h>

struct listenelement
{
        char daten[30];
        listenelement *next;                    //zeiger next zeigt immer auf den struct
};

listenelement *listenanfang;
listenelement *hilfszeiger;

void einfuegen(char datenneu[30])
{
        hilfszeiger = listenanfang;

        while(hilfszeiger->next != NULL)
        {
                hilfszeiger = hilfszeiger->next;
        }
        hilfszeiger->next = new(listenelement);
        hilfszeiger = hilfszeiger->next;

        strcpy(hilfszeiger->daten, datenneu);
        hilfszeiger->next = NULL;
}

void ausgeben()
{
        hilfszeiger = listenanfang;
        cout << hilfszeiger->daten <<endl;

        while(hilfszeiger->next != NULL)
        {
                hilfszeiger = hilfszeiger->next;
                cout << hilfszeiger->daten <<endl;
        }
}

void init()
{
        listenanfang = new(listenelement);

        listenanfang->next = NULL;
        strcpy(listenanfang->daten, "Element 0");
}

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

void main()
{
        init();
        einfuegen("Element 1");
        einfuegen("Element 2");
        ausgeben();
        ende();

        char p[50];
        cin.getline(p,50);
}


Problem: Eigentlich ganz einfach, ich muss die ausgabe nur Rückwärts wieder ausgeben. Dazu muss ich einen neuen Zeiger im Struct erstellen (name: last) und eine Funktion schreiben die dies ausgibt (name: void ausgaberueckwaerts()). Das dann in main aufrufen, sonst bitte im Quelltext soweit wie möglich nichts verändern.
Ich bin schon seit mehr als ein paar tagen an diesem programm und komme nich weiter. Ich hoffe ihr könnt mir helfen!!!
Dank schon mal im Vorraus

Dieser Post wurde am 26.09.2005 um 16:24 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.09.2005, 15:52 Uhr
imhotep
followed the white rabbit



Bearbeitung:
Code-Tags eingefügt


C++:
struct listenelement
{
char daten[30];
listenelement *next; //zeiger next zeigt immer auf den struct
listenelement *pre;
};

void einfuegen(char datenneu[30])
{
hilfszeiger = listenanfang;

while(hilfszeiger->next != NULL)
{
hilfszeiger = hilfszeiger->next;
}

hilfszeiger->next = new(listenelement);
hilfszeiger->next->pre = hilfszeiger;  // änderung hier
hilfszeiger = hilfszeiger->next;

strcpy(hilfszeiger->daten, datenneu);
hilfszeiger->next = NULL;
}

void init()
{
listenanfang = new(listenelement);

listenanfang->next = NULL;
listenanfang->pre = NULL; //änderung hier
strcpy(listenanfang->daten, "Element 0");
}


Denke das sollte reichen. Beim Rückwärtslaufen musst du einfach pre folgen.

Dieser Post wurde am 26.09.2005 um 16:24 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.09.2005, 16:06 Uhr
predator



Kann eigentlich niemand die Code-Tags benutzen?
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.09.2005, 16:20 Uhr
~Manda el
Gast



Bearbeitung:
Code-Tags eingefügt

Danke für die hilfe!!!! hab dann folgende Rückwärts funktion geschrieben, weis nich ob sie gut ist, aber es geht trotzdem. lol

C++:

void ausgaberueckwaerts()
{
        cout<< endl;
        cout << hilfszeiger->daten <<endl;
        while(hilfszeiger->next != NULL);
        {
                hilfszeiger = hilfszeiger->last;
                cout << hilfszeiger->daten <<endl;
                cout << hilfszeiger->last->daten;
        }
}


Dieser Post wurde am 26.09.2005 um 16:25 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: