Помогите пожалуйста разобратся. Задача:Создать связной список, ввести целочисельные значения, вывести все значения по порядку. Списал программку из книжки. Скомпилировал. Выводит только непонятное предупреждение, ошибок нету. Ввожу значения. Потом должно всё по порядку вывести, а не выводит. И ещё, не понял что означает "=0" в выражении типа: virtual void show()=0;
| Код | #include <iostream> using namespace std;
class Data { private: int myValue; public: Data(int val):myValue(val){} ~Data(){} void Show(){cout<<myValue<<endl;} };
class Node { private: public: Node(){} virtual ~Node(){} virtual Node* Insert(Data* theData)=0; virtual void Show()=0; };
class InternalNode:public Node { private: Data* myData; Node* myNext; public: InternalNode(Data* theData, Node* next); ~InternalNode(){delete myData; delete myNext;} virtual Node* Insert(Data *theData); virtual void Show(){cout<<myData; myNext->Show();} };
InternalNode::InternalNode(Data* theData, Node* next):myData(theData),myNext(next){}
Node* InternalNode::Insert(Data* theData) { InternalNode* dataNode=new InternalNode(theData,this); return dataNode; }
class TailNode:public Node { private:
public: TailNode(){} ~TailNode(){} virtual Node* Insert(Data* theData); virtual void Show(){} };
Node* TailNode::Insert(Data* theData) { InternalNode* dataNode=new InternalNode(theData,this); return dataNode; }
class HeadNode:public Node { private: Node* myNext; public: HeadNode(); ~HeadNode(){delete myNext;} virtual Node* Insert(Data* theData); virtual void Show(){myNext->Show();} };
HeadNode::HeadNode() { myNext=new TailNode; }
Node* HeadNode::Insert(Data* theData) { myNext=myNext->Insert(theData); return this; }
class LinkedList { private: HeadNode* myHead; public: LinkedList(); ~LinkedList(){delete myHead;} void Insert(Data* theData); void ShowAll(){myHead->Show;} };
LinkedList::LinkedList() { myHead=new HeadNode; } void LinkedList::Insert(Data* pData) { myHead->Insert(pData); }
void main() { Data* pData; int val; LinkedList ll;
for(;;) { cout<<"Enter next value (0 to stop): "; cin>>val; if (!val) break; pData=new Data(val); ll.Insert(pData); } ll.ShowAll(); }
|
Помогите пожалуйста. |