ok hier die Lösung:
Code:void print(){ for (ListElem* elem = m_Head; elem != 0; elem = elem->getNext()) { cout << elem->getElem() << endl; } }
Ergebnis 1 bis 2 von 2
- 06.12.2011, 13:20 #1Boskoop
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; }
- 06.12.2011, 13:39 #2Boskoop
Themenstarter
- Registriert
- 07.2008
- Beiträge
- 39


Zitieren