• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

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];
}
 
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];
        }
    }