PDA

Visualizza la versione completa : [C] Creare due liste suddividendo i numeri pari da quelli dispari


Buzzz
01-02-2012, 12:20
:ciauz:

sapete dirmi come posso creare due liste da questo codice, in modo da inserire i numeri pari in una lista e i disari nell'altra? :)
Grazie millee! :fiore:



#include <stdio.h>
#include <stdlib.h>
//#include <malloc.h>

typedef struct nodo{
int dato;
struct nodo *ptr;
}nodo;

nodo *creazione(){
int appo;
nodo *p;

p = (nodo *) malloc (sizeof (nodo));

printf("\nInserire un valore intero: ");
scanf("%d",&appo);
fflush(stdin);

p->dato = appo;
p->ptr = NULL;

return p;
}

nodo *inserimento (nodo *p){
nodo *q,*r,*s;
q = creazione();

if ((p->dato % 2) == 0){
//Pari
if (p->dato > q->dato){
q->ptr = p;
return q;
}else{
r = p;
s = p;

while ((p->dato < q->dato) && (p->ptr != NULL)){
s = p;
p = p->ptr;
}
if (p->dato > q->dato){
q->ptr = p;
s->ptr = q;
}else{
p->ptr = q;
}
return r;
}
/*}else{
//Dispari
if (p->dato > q->dato){
n->ptr = p;
return n;
}else{
r = p;
s = p;

while ((p->dato < n->dato) && (p->ptr != NULL)){
s = p;
p = p->ptr;
}
if (p->dato > n->dato){
n->ptr = p;
s->ptr = n;
}else{
p->ptr = n;
}
return r;
}*/
}
}

void visualizza(nodo *p){
printf("\nLista: ");

while (p!=NULL){
printf("[ %d ] ",p->dato);
p = p->ptr;
}

printf("\n");
}

int main(){
nodo *Base=NULL;
int scelta=1,appo;

creazione();

while (scelta!=0){
printf("\n111 - Creazione della lista;");
printf("\n1 - Inserimento ordinato nella lista;");
printf("\n2 - Scansione della lista;");
printf("\n0 - Uscita dal programma;");
printf("\nScegliere un'opzione: ");
scanf("%d",&scelta);
fflush(stdin);

switch (scelta){
/*case 1:{
Base = creazione();
break;
}*/
case 1:{
Base = inserimento(Base);
break;
}
case 2:{
visualizza(Base);
break;
}
}
}
getchar();
getchar();
}

Loading