maradona86
08-10-2007, 15:00
ciao a tutti. praticamente sono nuovo nuovo di questo linguaggio.
il mio problema consiste data una lista di interi che mi definisco io e dato un intero in ingresso la mia struttura deve diventare grossa n e ricopiare all interno della struttura nuova i miei numeri.
ad esempio se la mia struttura contiene 1,2,3,4 e in ingresso n = 2 deve restituirmi un altra struttura contenente 1,2,3,4,1,2,3,4
il codice da me fatto è questo ma sto trovando dei problemi perchè non mi funziona. qualcuno gentilmente mi potrebbe dare una mano ?? grazie mille
struct StructLista {
TipoElemLista info;
struct StructLista *next;
};
typedef struct StructLista TipoNodoLista;
typedef TipoNodoLista *TipoLista;
//definizione della mia lista
void InitLista(TipoLista *lis)
// lista inizialmente vuota
{
*lis = NULL;
}
boolean vuota(TipoLista lis)
//mi dice se la lista è vuota o no
{
return (lis == NULL);
}
void Inserisci(TipoLista *lis, TipoElemLista elem)
// inserimento degli elementi
{
TipoLista lista;
lista = malloc(sizeof(TipoNodoLista));
lista->info = elem;
lista->next = *lis;
*lis = lista;
}
void Ultimo(TipoLista lis, TipoElemLista *elem)
// mi da l ultimo elemento della lista
{
if (lis != NULL)
*elem = lis->info;
}
voiid Clear(TipoLista *lis)
//mi cancella la lista
{
TipoLista lista;
while (*lis != NULL) {
lista = *lis;
*lis = (*lis)->next;
free(lista);
}
}
void CopiaLista(TipoLista lis, TipoLista *copia)
// Restituisce una copia della lista lista.
{
TipoLista prec; // puntatore all'elemento precedente
prec = malloc(sizeof(TipoNodoLista));
*copia = prec;
while (lis != NULL) {
prec->next = malloc(sizeof(TipoNodoLista));
prec = prec->next;
prec->info = lis->info;
lis = lis->next;
}
prec->next = NULL;
prec = *copia;
*copia = (*copia)->next;
free(prec);
}
ok io riesco a fare una copia della lista. come faccio se ho n = 2 a fare una copia della mia lista e fare in modo che sia il doppio con gli stessi valori??
grazie a tutti e scusate il disturbo
il mio problema consiste data una lista di interi che mi definisco io e dato un intero in ingresso la mia struttura deve diventare grossa n e ricopiare all interno della struttura nuova i miei numeri.
ad esempio se la mia struttura contiene 1,2,3,4 e in ingresso n = 2 deve restituirmi un altra struttura contenente 1,2,3,4,1,2,3,4
il codice da me fatto è questo ma sto trovando dei problemi perchè non mi funziona. qualcuno gentilmente mi potrebbe dare una mano ?? grazie mille
struct StructLista {
TipoElemLista info;
struct StructLista *next;
};
typedef struct StructLista TipoNodoLista;
typedef TipoNodoLista *TipoLista;
//definizione della mia lista
void InitLista(TipoLista *lis)
// lista inizialmente vuota
{
*lis = NULL;
}
boolean vuota(TipoLista lis)
//mi dice se la lista è vuota o no
{
return (lis == NULL);
}
void Inserisci(TipoLista *lis, TipoElemLista elem)
// inserimento degli elementi
{
TipoLista lista;
lista = malloc(sizeof(TipoNodoLista));
lista->info = elem;
lista->next = *lis;
*lis = lista;
}
void Ultimo(TipoLista lis, TipoElemLista *elem)
// mi da l ultimo elemento della lista
{
if (lis != NULL)
*elem = lis->info;
}
voiid Clear(TipoLista *lis)
//mi cancella la lista
{
TipoLista lista;
while (*lis != NULL) {
lista = *lis;
*lis = (*lis)->next;
free(lista);
}
}
void CopiaLista(TipoLista lis, TipoLista *copia)
// Restituisce una copia della lista lista.
{
TipoLista prec; // puntatore all'elemento precedente
prec = malloc(sizeof(TipoNodoLista));
*copia = prec;
while (lis != NULL) {
prec->next = malloc(sizeof(TipoNodoLista));
prec = prec->next;
prec->info = lis->info;
lis = lis->next;
}
prec->next = NULL;
prec = *copia;
*copia = (*copia)->next;
free(prec);
}
ok io riesco a fare una copia della lista. come faccio se ho n = 2 a fare una copia della mia lista e fare in modo che sia il doppio con gli stessi valori??
grazie a tutti e scusate il disturbo