LOVE85
01-09-2007, 19:11
Salve il titolo suppongo che sia ridicolo vero? Comunque ehm ho un problema io mi sono implementato una lista ordinata ok? Cioè un programmino che chiede quanti elementi vuoi inserire e poi ne richiede uno per volta n volte quanti sono il numero degli elementi definiti dall'utente. Ok? E poi li mette in una lista ordinata. Ora il problema sta nel convertire da una lista ad una coda. So benissimo che una coda ha due puntatori uno per la testa e uno per la coda. I numeri che inserirete verranno considerati in secondi. Quindi una volta memorizzato il tempo di digitazione di una soluzione di un qualcosa viene messa in coda e automaticamente aggiornata in modo tale da stabilire per esempio la mossa più veloce di un giocatore che poi implementerò una struttura che verra messa nella coda e a sua volta ordinata a seconda del minor tempo impiegato per fare una mossa. Una domanda è possibile oltre a questo problema inserire in un campo della struttura la soluzione che punta alle modifiche fatte dall'utente (poste in una locazione e che sono collegate in lista queste modifiche?). Non so se sono stato chiaro. Ho in mente questa cosa e non riesco proprio a interpretarla....chiedo scusa ma qualcuno che riesce a capire potrebbe aiutarmi? Grazie
Ecco il codice della lista ordinata in ANSI C:
#include <stdio.h>
#include <stdlib.h>
struct cella{
int valore;
struct cella *next;
};
void insert(struct cella **t, int val);
void stampa(struct cella *t);
int main()
{
int numero,n_numeri,i;
struct cella *testa;
testa = NULL;
printf("Digitare il numero di quanti numeri si vuol inserire nella lista:\n\n");
scanf("%d",&n_numeri);
for (i = 1; i<n_numeri+1; i++)
{
printf("Inserire %d numero:\n\n",i);
scanf("%d",&numero);
insert(&testa,numero);
}
printf("\n\nStampa valori in lista:\n");
stampa(testa);
system("pause");
return 0;
}
void stampa(struct cella *t)
{
int i = 1;
while (t != NULL)
{
printf("cella[%d] = %d\n",i,t->valore);
i++;
t = t->next;
}
}
/*inserimento in lista ordinata*/
void insert(struct cella **t, int val)
{
struct cella *temp, *prec, *nuovo;
nuovo = (struct cella*)malloc(sizeof(struct cella));
if (nuovo == NULL)
exit(1);
nuovo->valore = val;
nuovo->next = NULL;
if (*t == NULL)
{
*t = nuovo;
return;
}
prec = NULL;
temp = *t;
while (temp != NULL)
{
if (nuovo->valore < temp->valore)
{
nuovo->next = temp;
if (prec == NULL)
*t = nuovo;
else
prec->next = nuovo;
return;
}
prec = temp;
temp = temp->next;
}
prec->next = nuovo;
}
gRAZIE se avete dubbi contattatemi con msn: [email protected]
Cordiali Saluti
Ecco il codice della lista ordinata in ANSI C:
#include <stdio.h>
#include <stdlib.h>
struct cella{
int valore;
struct cella *next;
};
void insert(struct cella **t, int val);
void stampa(struct cella *t);
int main()
{
int numero,n_numeri,i;
struct cella *testa;
testa = NULL;
printf("Digitare il numero di quanti numeri si vuol inserire nella lista:\n\n");
scanf("%d",&n_numeri);
for (i = 1; i<n_numeri+1; i++)
{
printf("Inserire %d numero:\n\n",i);
scanf("%d",&numero);
insert(&testa,numero);
}
printf("\n\nStampa valori in lista:\n");
stampa(testa);
system("pause");
return 0;
}
void stampa(struct cella *t)
{
int i = 1;
while (t != NULL)
{
printf("cella[%d] = %d\n",i,t->valore);
i++;
t = t->next;
}
}
/*inserimento in lista ordinata*/
void insert(struct cella **t, int val)
{
struct cella *temp, *prec, *nuovo;
nuovo = (struct cella*)malloc(sizeof(struct cella));
if (nuovo == NULL)
exit(1);
nuovo->valore = val;
nuovo->next = NULL;
if (*t == NULL)
{
*t = nuovo;
return;
}
prec = NULL;
temp = *t;
while (temp != NULL)
{
if (nuovo->valore < temp->valore)
{
nuovo->next = temp;
if (prec == NULL)
*t = nuovo;
else
prec->next = nuovo;
return;
}
prec = temp;
temp = temp->next;
}
prec->next = nuovo;
}
gRAZIE se avete dubbi contattatemi con msn: [email protected]
Cordiali Saluti