PDA

View Full Version : [c] non riesco a capire come sistemare il mio programma..


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

k0nt3
08-10-2007, 15:45
beh visto che riesci a ottenere una copia della lista potresti collegare l'ultimo elemento di una con il primo dell'altra modificando opportunamente un paio di puntatori :D

maradona86
08-10-2007, 20:45
gia ma non so come farlo e non so se il programma è giusto! alla fine a logica sembra di si :)

maradona86
26-11-2007, 20:08
ragazzi qualcuno mi può dire come attaccare la nuova lista copiata alla lista esistente please???
ci sto sclerando