All pastes #281614 Raw Edit

Untitled

public cpp v1 · immutable
#281614 ·published 2006-12-16 22:59 UTC
rendered paste body
daten.h ===========================================================================================================#include <iostream>using namespace std;#ifndef DATEN_H_#define DATEN_H_class Daten{	private:		int iwert;	public:		Daten (int iVal): iwert(iVal)		{			cout << "Objekt [Daten] erzeugt\n";		}		~Daten(){}		int vergleichen(const Daten&);	// Referenz		void anzeigen() const;};class Knoten{	public:		Knoten(){}		virtual ~Knoten(){}		virtual Knoten* einfuegen(Daten* d) = 0;		virtual void anzeigen() = 0;};class EndKnoten : public Knoten{	public:		EndKnoten()		{			cout << "Objekt [EndKnoten] erzeugt\n";		}		~EndKnoten(){}		Knoten* einfuegen(Daten* d);		void anzeigen(){};};class AnfangsKnoten : public Knoten{	private:		Knoten* next;	public:		AnfangsKnoten()		{			next = new EndKnoten;			cout << "Objekt [AnfangsKnoten] erzeugt\n";		}		~AnfangsKnoten(){}		Knoten* einfuegen(Daten* d);		void anzeigen();};class AllgemeinerKnoten : public Knoten{	private:		Daten* daten;		Knoten* next;	public:		AllgemeinerKnoten(Daten* d, Knoten* n): daten(d), next(n)		{			cout << "Objekt [AllgemeinerKnoten] erzeugt\n";		}		~AllgemeinerKnoten()		{			delete next;			delete daten;		}		Knoten* einfuegen(Daten* d);		void anzeigen();};class Liste {	private:		AnfangsKnoten *anfang;	public:		Liste() 		{			anfang = new AnfangsKnoten;		}		~Liste()		{			delete anfang;		}		void einfuegen(Daten* d)		{			anfang->einfuegen(d);		}		void alles_anzeigen()		{			anfang->anzeigen();		}};int Daten::vergleichen(const Daten& d){	if(iwert > d.iwert) 	{ 		return 1; 	}	if(iwert < d.iwert)	{		return -1;	}	return 0;}void Daten::anzeigen() const{	cout << iwert << '\n';}void AnfangsKnoten::anzeigen(){	next->anzeigen();}void AllgemeinerKnoten::anzeigen(){	daten->anzeigen();	next->anzeigen();}Knoten* AnfangsKnoten::einfuegen(Daten* d){	next = next->einfuegen(d);	return this;}Knoten* EndKnoten::einfuegen(Daten *d){	AllgemeinerKnoten* daten = new AllgemeinerKnoten(d, this);	return daten;}Knoten* AllgemeinerKnoten::einfuegen(Daten* d){	int ret = daten->vergleichen(*d);	switch(ret)	{		case 1:		{			AllgemeinerKnoten* dKnoten = new AllgemeinerKnoten(d, this);			return dKnoten;		}		case -1:		{			next = next->einfuegen(d);			return this;		}	}	return this;}#endifdaten.h ENDE ====================================================================================================daten.cpp =======================================================================================================#include "daten.h"int main(void){	Liste elemente;	Daten* daten;	int iwert;	for(;;)	{		cout << "Wert eingeben (0=Ende): ";		if((!(cin >> iwert)) || iwert == 0)		{			break;		}		daten = new Daten(iwert);		elemente.einfuegen(daten);	}	elemente.alles_anzeigen();	return 0;}daten.cpp ENDE ==================================================================================================