#include #include #include using namespace std; class Playa { char * tag; int sernum; Playa * next; public: Playa(); ~Playa(); Playa * NextGet() { return next; } void NextSet(Playa * x) { next = x; } void Print(); char * TagGet() { return tag; } void TagSet(char * s); }; Playa::Playa() { static int n=1; next = NULL; sernum = n++; tag = new char[128]; strcpy(tag, "-ImA-n00b-"); } Playa::~Playa() { cout << "playa " << sernum << " says buh-bye..." << endl; delete [] tag; } void Playa::Print() { printf("%s -> ", tag); if (next != NULL) next->Print(); } /* void Playa::Print() { if (next != NULL) next->Print(); printf("%s -> ", tag); } */ void Playa::TagSet(char * newtag) { strcpy(tag, newtag); } /* * Append a new Playa with tag Tag to the end of the list pointed to by Playa. */ void AppendToList(Playa * List, char * Tag) { Playa * TmpPlaya; Playa * NewPlaya; NewPlaya = new Playa(); NewPlaya->TagSet(Tag); TmpPlaya = List; while (TmpPlaya->NextGet() != NULL) TmpPlaya = TmpPlaya->NextGet(); /* * TmpPlaya points to last valid Playa in the list. * NewPlaya has its data and points to NULL (set in the ctor). */ TmpPlaya->NextSet(NewPlaya); } void AppendToList(Playa * List, Playa * NewPlaya) { Playa * TmpPlaya; // Playa * NewPlaya; // NewPlaya = new Playa(); // NewPlaya->TagSet(Tag); TmpPlaya = List; while (TmpPlaya->NextGet() != NULL) TmpPlaya = TmpPlaya->NextGet(); /* * TmpPlaya points to last valid Playa in the list. * NewPlaya has its data and points to NULL (set in the ctor). */ TmpPlaya->NextSet(NewPlaya); } /* * Insert a new Playa with tag Tag into the list after Item. */ void InsertAfter(Playa * Item, char * Tag) { if (Item == NULL) return; } int main() { int n; Playa * p; char strbuf[64]; Playa * playas = NULL; Playa * XY = NULL; for (int i=0; i<5; i++) { sprintf(strbuf, "%s.%d", "Playa", i); p = new Playa; p->TagSet(strbuf); p->NextSet(playas); playas = p; } cout << "Playas tag: " << playas->TagGet() << endl; playas->Print(); cout << endl; for (n=0,p=playas; p != NULL; p = p->NextGet()) n++; cout << "There are " << n << " playas raight naow" << endl; cout << endl << endl; AppendToList(playas, (char *)"NewestN00b"); AppendToList(playas->NextGet()->NextGet(), (char *)"NewNewestN00b"); playas->Print(); for (int i=0; i<5; i++) { sprintf(strbuf, "%s.%d", "XY", i); p = new Playa; p->TagSet(strbuf); p->NextSet(XY); XY = p; } cout << endl << "**** XY is: ****" << endl; XY->Print(); AppendToList(playas, XY); cout << endl << "****" << endl; cout << endl << "****" << endl; cout << "Playas after append" << endl; cout << endl << "****" << endl; cout << endl << "****" << endl; (*playas).Print(); return 0; }