Ora mi da errore in print().............mi stampa sempre gli indirizzi, why?codice:#include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; struct List { /* * The information index */ int index; /* * The information value */ void * data; /* * The next list element */ List * next; /* * Create struct * 1. The struct index * 2. The struct data * 3. The next structure addres */ List(int Index, void * Data, List * Next) { data = Data; index = Index; next = Next; } /* * Add a element * 1. A List pointer * 2. A index of element * 3. The value of element */ void add(List * pr, int index, void * data) { if(pr == NULL){ /* first element */ pr->index = index; pr->data = data; pr->next = NULL; } /* another case */ List * p = pr; while(p->next != NULL) p = p->next; p->next = new List(index, data, NULL); } /* * Print all element * 1. A List pointer * 2. A mode * 0 = wiew into a addres * 1 = wiew into a string */ void print(List * pr, int mode=1) { List * p = pr; while(p->next != NULL){ if(mode==0) cout << "Info " << p->index <<" = " << p->data << "\n"; else if(mode==1) cout << "Info " << p->index <<" = " << (char *) p->data << "\n"; p = p->next; } } /* * Find a element * 1. A List pointer * 2. A index that you wont to find */ List *find(List * pr, int index) { List * p = pr; while((p->next != NULL) && (p->index != index)) p = p->next; return p; } /* * Remove a element * 1. A List pointer * 2. A index of element */ void remove(List * pr, int index) { List * p = pr; if(!p) return; if(p->index == index) { List * tmp = p->next; delete p; p = tmp; } else remove(p->next, index); } /* * Generate a list. * 1. a array * 2. a array lenght */ List* generate(List * pr, void * parms[], int lenght) { for(register int i=0; i<lenght; i++){ pr->next = new List(i, parms[i], NULL); } } }; int main(int *argc, char *argv[]) { string * st = new string("ciao"); List * p = new List(0, st, NULL); int i = 0; while( i != 10){ p->add(p, i, (string *) st); i++; } cout << "Prima\n"; p->print(p); p->remove(p, 5); cout << "Dopo\n"; p->print(p); system("PAUSE"); return 0; }
Tnk

Rispondi quotando