View Single Post
Old 04-07-2006, 18:05   #1
ramo102
Junior Member
 
Iscritto dal: Jul 2006
Messaggi: 7
[C] Problema lista circolare

Ciao a tutti!
Ho un problema con un programma implementato in C in cui devo leggere
una lista circolare: quando provo ad effettuare il ciclo di lettura non
riesco più ad uscirne, in quanto viene stampato infinite volte l'ultimo
elemento della lista stessa.
Questo è il codice da me scritto per l'introduzione degli elementi:

Codice:
void inserisci_dati (tipo **head,tipo **tail)
{
tipo *pcorr;

pcorr=(tipo *)malloc(sizeof(tipo));
if(*head==NULL)
	{
	*head=pcorr;
	(**head).next=*head;	/* il campo prox punta a se stesso */
	(**tail)=(**head);
	}
else
	{
	(*pcorr).next=*head;
	*head=pcorr;
	(**tail).next=*head;	/* l'ultimo elem. punta al primo */
	}
return;
}
E questo è il codice per la lettura e la stampa su video:

Codice:
void stampa(tipo **head,tipo **tail)
{
tipo *pcorr;

pcorr=*head;
do
	{
	printf("%s\n",(*pcorr).nome)
	pcorr=(*pcorr).next;
	}
while(pcorr!=(**tail).next);
}
Mi dà lo stesso problema anche se provo a mettere come condizione
d'uscita del while pcorr!=(*head), visto che leggo l'elemento in testa
alla prima iterazione e subito dopo aggiorno pcorr, ma non funziona lo
stesso.
Qualcuno ha idea di come si faccia?
ramo102 è offline   Rispondi citando il messaggio o parte di esso