Ergebnis 1 bis 2 von 2
  1. #1
    Boskoop
    Themenstarter

    Registriert
    07.2008
    Beiträge
    39

    Finde den Fehler: Doppelt verkettete Liste

    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:
    ////  main.cpp
    //  Aufgabe5
    //
    //  Created by du on 06.12.11.
    //  Copyright 2011 __MyCompanyName__. All rights reserved.
    //
    
    
    #include <iostream>
    
    
    usingnamespacestd;
    
    
    struct ListElem{
    private:
        ListElem* m_Next;
        ListElem* m_Prev;
        int m_Elem;
        
    public:
        int getElem(){
            return m_Elem;
        }
        
        void setPrev(ListElem* elem){
            m_Prev = elem;
        }
        
        ListElem* getPrev(){
            return m_Prev;
        }
        
        void setNext(ListElem* next){
            m_Next = next;
        }
        
        ListElem* getNext(){
            return m_Next;
        }
        
        void setElem(int elem){
            m_Elem = elem;
        }
        
        ListElem(int elem, ListElem* next, ListElem* prev){
            m_Next = next;
            m_Prev = prev;
            m_Elem = elem;
            
            if(m_Next != 0)
                m_Next->setPrev(this);
            if (m_Prev != 0)
                m_Prev->setNext(this);
        }
    };
    
    
    struct DoubleList{
        ListElem* m_Head;
        ListElem* m_Tail;
        
        DoubleList(){
            m_Head = 0;
            m_Tail = 0;
        }
        
        void pushFront(int elem){
            if(m_Head == 0)
                m_Head = m_Tail = new ListElem(elem, 0, 0);
            else
                m_Head = new ListElem(elem, m_Head, 0);
        }
        
        void pushBack(int elem){
            if(m_Tail == 0)
                m_Tail = m_Head = new ListElem(elem, 0, 0);
            else
                m_Tail = new ListElem(elem, 0, m_Tail);
        }
        
        void addElement(int elem){
            m_Tail = m_Head;
            m_Head = new ListElem(elem, m_Head, 0);
        }
        
        void print(){
            for (ListElem* elem = m_Head; elem != 0; elem->getNext()) {
                cout << elem->getElem() << endl;
            }
        }
    };
    
    
    int main (int argc, const char * argv[])
    {
    DoubleListdl;
        dl.addElement(5);
        dl.addElement(10);
        /*
        dl.pushFront(5);
        dl.pushBack(10);
        dl.pushFront(10);
        dl.pushFront(15);
        dl.pushFront(25);
        dl.pushFront(35);
         */
        dl.print();
        return 0;
    }

  2. #2
    Boskoop
    Themenstarter

    Registriert
    07.2008
    Beiträge
    39
    ok hier die Lösung:

    Code:
    void print(){        for (ListElem* elem = m_Head; elem != 0; elem = elem->getNext()) {
                cout << elem->getElem() << endl;
            }
        }

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •