• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Finde den Fehler: Doppelt verkettete Liste

drunkenkilla

Boskoop
Registriert
17.07.08
Beiträge
41
Moin,

wenn ich das Programm starte, läuft es in einer Endlosschleife und gibt nur einen Wert (den letzten) zurück. Wo ist der Fehler?

Code:
[COLOR=#008D00]//[/COLOR][COLOR=#008d00]//  main.cpp[/COLOR]
[COLOR=#008d00]//  Aufgabe5[/COLOR]
[COLOR=#008d00]//[/COLOR]
[COLOR=#008d00]//  Created by du on 06.12.11.[/COLOR]
[COLOR=#008d00]//  Copyright 2011 __MyCompanyName__. All rights reserved.[/COLOR]
[COLOR=#008d00]//[/COLOR]


[COLOR=#df0001][COLOR=#7d4625]#include [/COLOR]<iostream>[/COLOR]


[COLOR=#ca00a6]usingnamespace[COLOR=#7c1aaf]std[/COLOR][COLOR=#000000];[/COLOR][/COLOR]


[COLOR=#ca00a6]struct[/COLOR] ListElem{
[COLOR=#ca00a6]private[COLOR=#000000]:[/COLOR][/COLOR]
    [COLOR=#438388]ListElem[/COLOR]* m_Next;
    [COLOR=#438388]ListElem[/COLOR]* m_Prev;
    [COLOR=#ca00a6]int[/COLOR] m_Elem;
    
[COLOR=#ca00a6]public[COLOR=#000000]:[/COLOR][/COLOR]
    [COLOR=#ca00a6]int[/COLOR] getElem(){
        [COLOR=#ca00a6]return[/COLOR] [COLOR=#438388]m_Elem[/COLOR];
    }
    
    [COLOR=#ca00a6]void[/COLOR] setPrev([COLOR=#438388]ListElem[/COLOR]* elem){
        [COLOR=#438388]m_Prev[/COLOR] = elem;
    }
    
    [COLOR=#438388]ListElem[/COLOR]* getPrev(){
        [COLOR=#ca00a6]return[/COLOR] [COLOR=#438388]m_Prev[/COLOR];
    }
    
    [COLOR=#ca00a6]void[/COLOR] setNext([COLOR=#438388]ListElem[/COLOR]* next){
        [COLOR=#438388]m_Next[/COLOR] = next;
    }
    
    [COLOR=#438388]ListElem[/COLOR]* getNext(){
        [COLOR=#ca00a6]return[/COLOR] [COLOR=#438388]m_Next[/COLOR];
    }
    
    [COLOR=#ca00a6]void[/COLOR] setElem([COLOR=#ca00a6]int[/COLOR] elem){
        [COLOR=#438388]m_Elem[/COLOR] = elem;
    }
    
    ListElem([COLOR=#ca00a6]int[/COLOR] elem, [COLOR=#438388]ListElem[/COLOR]* next, [COLOR=#438388]ListElem[/COLOR]* prev){
        [COLOR=#438388]m_Next[/COLOR] = next;
        [COLOR=#438388]m_Prev[/COLOR] = prev;
        [COLOR=#438388]m_Elem[/COLOR] = elem;
        
        [COLOR=#ca00a6]if[/COLOR]([COLOR=#438388]m_Next[/COLOR] != [COLOR=#4400e0]0[/COLOR])
            [COLOR=#438388]m_Next[/COLOR]->[COLOR=#275a5e]setPrev[/COLOR]([COLOR=#ca00a6]this[/COLOR]);
        [COLOR=#ca00a6]if[/COLOR] ([COLOR=#438388]m_Prev[/COLOR] != [COLOR=#4400e0]0[/COLOR])
            [COLOR=#438388]m_Prev[/COLOR]->[COLOR=#275a5e]setNext[/COLOR]([COLOR=#ca00a6]this[/COLOR]);
    }
};


[COLOR=#ca00a6]struct[/COLOR] DoubleList{
    [COLOR=#438388]ListElem[/COLOR]* m_Head;
    [COLOR=#438388]ListElem[/COLOR]* m_Tail;
    
    DoubleList(){
        [COLOR=#438388]m_Head[/COLOR] = [COLOR=#4400e0]0[/COLOR];
        [COLOR=#438388]m_Tail[/COLOR] = [COLOR=#4400e0]0[/COLOR];
    }
    
    [COLOR=#ca00a6]void[/COLOR] pushFront([COLOR=#ca00a6]int[/COLOR] elem){
        [COLOR=#ca00a6]if[/COLOR]([COLOR=#438388]m_Head[/COLOR] == [COLOR=#4400e0]0[/COLOR])
            [COLOR=#438388]m_Head[/COLOR] = [COLOR=#438388]m_Tail[/COLOR] = [COLOR=#ca00a6]new[/COLOR] [COLOR=#438388]ListElem[/COLOR](elem, [COLOR=#4400e0]0[/COLOR], [COLOR=#4400e0]0[/COLOR]);
        [COLOR=#ca00a6]else[/COLOR]
            [COLOR=#438388]m_Head[/COLOR] = [COLOR=#ca00a6]new[/COLOR] [COLOR=#438388]ListElem[/COLOR](elem, [COLOR=#438388]m_Head[/COLOR], [COLOR=#4400e0]0[/COLOR]);
    }
    
    [COLOR=#ca00a6]void[/COLOR] pushBack([COLOR=#ca00a6]int[/COLOR] elem){
        [COLOR=#ca00a6]if[/COLOR]([COLOR=#438388]m_Tail[/COLOR] == [COLOR=#4400e0]0[/COLOR])
            [COLOR=#438388]m_Tail[/COLOR] = [COLOR=#438388]m_Head[/COLOR] = [COLOR=#ca00a6]new[/COLOR] [COLOR=#438388]ListElem[/COLOR](elem, [COLOR=#4400e0]0[/COLOR], [COLOR=#4400e0]0[/COLOR]);
        [COLOR=#ca00a6]else[/COLOR]
            [COLOR=#438388]m_Tail[/COLOR] = [COLOR=#ca00a6]new[/COLOR] [COLOR=#438388]ListElem[/COLOR](elem, [COLOR=#4400e0]0[/COLOR], [COLOR=#438388]m_Tail[/COLOR]);
    }
    
    [COLOR=#ca00a6]void[/COLOR] addElement([COLOR=#ca00a6]int[/COLOR] elem){
        [COLOR=#438388]m_Tail[/COLOR] = [COLOR=#438388]m_Head[/COLOR];
        [COLOR=#438388]m_Head[/COLOR] = [COLOR=#ca00a6]new[/COLOR] [COLOR=#438388]ListElem[/COLOR](elem, [COLOR=#438388]m_Head[/COLOR], [COLOR=#4400e0]0[/COLOR]);
    }
    
    [COLOR=#ca00a6]void[/COLOR] print(){
        [COLOR=#ca00a6]for[/COLOR] ([COLOR=#438388]ListElem[/COLOR]* elem = [COLOR=#438388]m_Head[/COLOR]; elem != [COLOR=#4400e0]0[/COLOR]; elem->[COLOR=#275a5e]getNext[/COLOR]()) {
            [COLOR=#7c1aaf]cout[/COLOR] << elem->[COLOR=#275a5e]getElem[/COLOR]() << [COLOR=#480086]endl[/COLOR];
        }
    }
};


[COLOR=#ca00a6]int[/COLOR] main ([COLOR=#ca00a6]int[/COLOR] argc, [COLOR=#ca00a6]const[/COLOR] [COLOR=#ca00a6]char[/COLOR] * argv[])
{
[COLOR=#438388]DoubleList[COLOR=#275a5e]dl[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
    dl.[COLOR=#275a5e]addElement[/COLOR]([COLOR=#4400e0]5[/COLOR]);
    dl.[COLOR=#275a5e]addElement[/COLOR]([COLOR=#4400e0]10[/COLOR]);
    [COLOR=#008d00]/*[/COLOR]
[COLOR=#008d00]    dl.pushFront(5);[/COLOR]
[COLOR=#008d00]    dl.pushBack(10);[/COLOR]
[COLOR=#008d00]    dl.pushFront(10);[/COLOR]
[COLOR=#008d00]    dl.pushFront(15);[/COLOR]
[COLOR=#008d00]    dl.pushFront(25);[/COLOR]
[COLOR=#008d00]    dl.pushFront(35);[/COLOR]
[COLOR=#008d00]     */[/COLOR]
    dl.[COLOR=#275a5e]print[/COLOR]();
    [COLOR=#ca00a6]return[/COLOR] [COLOR=#4400e0]0[/COLOR];
}
 

drunkenkilla

Boskoop
Registriert
17.07.08
Beiträge
41
ok hier die Lösung:

Code:
[COLOR=#ca00a6]void[/COLOR] print(){        [COLOR=#ca00a6]for[/COLOR] ([COLOR=#438388]ListElem[/COLOR]* elem = [COLOR=#438388]m_Head[/COLOR]; elem != [COLOR=#4400e0]0[/COLOR]; elem = elem->[COLOR=#275a5e]getNext[/COLOR]()) {
            [COLOR=#7c1aaf]cout[/COLOR] << elem->[COLOR=#275a5e]getElem[/COLOR]() << [COLOR=#480086]endl[/COLOR];
        }
    }