PDA

Visualizza la versione completa : [C]liste concatenate


maurizio2
25-12-2004, 16:57
Ciao a tutti!! Ho realizzato une funzione che
collega due liste concatenate.
Tutto funziona perfettamente e ho previsto anche
che una o entrambi le liste siano nulle.
Ma il codice mi sembra "astruso",
chi ha qualcosa di pi intellegibile??

struct listNode {
char data;
struct listNode *nextPtr;
};

typedef struct listNode LISTNODE;
typedef LISTNODE * LISTNODEPTR;
...
...
void concatenate(LISTNODEPTR *firstList, LISTNODEPTR * secondList)
{
LISTNODEPTR currentPtr = *firstList;

if (*firstList == NULL)
*firstList = *secondList;
else
while (currentPtr != NULL &&
currentPtr->nextPtr != secondList )

if (currentPtr->nextPtr != NULL)
currentPtr = currentPtr->nextPtr;
else
currentPtr->nextPtr = *secondList;
}

anx721
25-12-2004, 21:22
La funzione puo esere un po semplificata: basta infatti scorrere la prima lista finche nextPtr non nullo: a quel punto agganci la seconda:




void concatenate(LISTNODEPTR *firstList, LISTNODEPTR * secondList)
{
LISTNODEPTR currentPtr = *firstList;

if (*firstList == NULL)
*firstList = *secondList;
else{
while (currentPtr -> nextPtr != NULL)
currentPtr = currentPtr->nextPtr;
currentPtr->nextPtr = *secondList;
}
}

maurizio2
26-12-2004, 12:03
Grazie per gli aiuti, gi la seconda volta!!
Cmq tre anni che mi disintegro le sinapsi,
i dubbi sono direttamente proporzionali alle conoscenze
acquisite nella programmazione!!!
Non ho mai conosciuto un programmatore
e sono un autodidatta,
ho realizzato un simulatore softwere(Simpletron)
ti va di giudicarlo??

anx721
26-12-2004, 13:45
Originariamente inviato da maurizio2
ho realizzato un simulatore softwere(Simpletron)
ti va di giudicarlo??


Mandami un messaggio privato

maurizio2
26-12-2004, 14:41
Bhe spero tu sia clemente, il sorgente lungo!!
l'ho realizzato su piattaforma windows.

Loading