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;
}
Ora mi da errore in print().............mi stampa sempre gli indirizzi, why?
Tnk