|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Utente sospeso
Iscritto dal: Aug 2004
Messaggi: 193
|
mi aiutate?
salve ragazzi, a giorni ho un esame e non riesco a far funzionere sto codice,
si tratta di una lista con le varie funzione che si possono applicare su.. potreste aiutarmi? credo che l errore sia nei puntatori passati alle funzioni. p.s. le funzioni che non vanno sono: void in_testa(struct nodo **head); void in_coda(struct nodo **head); void in_ordinato(struct nodo **head) #include <stdio.h> #include <malloc.h> //mi creo la struttura lista struct nodo{ int data;//elemento lista struct nodo *next;//punta al prossimo nodo }; struct nodo *head=NULL;//puntatore di base, punta al primo nodo, lista inizializzata e vuota (punta a NULL) /* prototipi delle funzioni */ struct nodo *crea_lista(); struct nodo *trova(struct nodo *); void visualizza_lista(struct nodo *); void in_testa(struct nodo **); void in_coda(struct nodo **); void in_ordinato(struct nodo **); int main(){ int a; for(; printf("\ndigita 0 per uscire dal programma\n"); printf("digita 1 per creare la lista\n"); printf("digita 2 per trovare un oggetto\n"); printf("digita 3 per visualizzare la lista\n"); printf("digita 4 per inserire in testa\n"); printf("digita 5 per inserire in coda\n"); printf("digita 6 per inserire in maniera ordinata\n"); scanf("%d",&a); switch(a){ case 1: head = crea_lista(); // crea la lista break; case 2: printf("-> [%d | ]--->\n",*trova(head)); break; case 3: visualizza_lista(head); // stampa la lista break; case 4: in_testa(head); break; case 5: in_coda(head); break; case 6: in_ordinato(head); break; case 0: exit(1); } }; } /*crea lista*/ struct nodo *crea_lista(){//------------------------funzione------------ ------------ struct nodo *head; head=(struct nodo*)malloc(sizeof(struct nodo)); printf("\nInserisci il valore: "); scanf("%d", &head->data); head->next=NULL; return head; } /*visualizza lista*/ void visualizza_lista(struct nodo *p){//------------funzione------------------------ printf("\nlista ---> "); /* ciclo di scansione */ while(p != NULL){ printf("[%d |", p->data); // visualizza l'informazione printf(" ]---> "); p = p->next; // scorre di un elemento } printf("NULL\n\n"); } /*trova elemento*/ struct nodo *trova(struct nodo *head){//------------funzione------------------------ struct nodo *g; g=head; int n; printf("\nIigita oggetto da trovare: "); scanf("%d", &n); while((g->data!=n)&&(g->next!=NULL)) g=g->next; return (g); } /*inserimento in testa*/ void in_testa(struct nodo **head){//-------------funzone------------------- struct nodo *f; f = (struct nodo*)malloc(sizeof(struct nodo)); printf("\ndigita oggetto\n"); scanf("%d",&f->data); printf("\noggetto inserito %d \n",f->data); f->next=*head; *head=f; } /*inserimento in coda*/ void in_coda(struct nodo **head){ struct nodo *temp;/* puntatore usato per la scansione */ struct nodo *p; /* creazione del nuovo nodo */ p = (struct nodo *)malloc(sizeof(struct nodo)); p->next=NULL; printf("\ndigita l'oggetto da inserire\n"); scanf("%d",&p->data); printf("\noggetto inserito %d",p->data); if(*head==NULL){ /* la lista è vuota */ *head=p; return; } /* scansione della lista */ temp = *head; while (temp->next != NULL) temp = temp->next; temp->next = p; } /*iserimento ordinato di un oggetto*/ void in_ordinato(struct nodo **head){ struct nodo *p;/*elemento da inserire*/ struct nodo *r = *head, *q = *head; /* predecessore e successore */ p = (struct nodo *)malloc(sizeof(struct nodo)); printf("\ndigita l'oggetto da inserire in maniera ordinata\n"); scanf("%d",&p->data); printf("\noggetto inserito %d",p->data); while((q->next!=NULL)&&(q->data<p->data)){/* trova il punto di inserimento */ r=q; q=q->next; } if(q==*head) /* inserimento in testa */ *head=p; else r->next = p; p->next = q; } |
|
|
|
|
|
#2 |
|
Utente sospeso
Iscritto dal: Aug 2004
Messaggi: 193
|
scusate!!! ho risolto. ho dimenticato di inserire & nel passaggio dei parametri.
visto che ci sono vorrei chiedervi perche se passo i puntatori invece dei doppi puntatori alle funzioni queste non vanno. garzie |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:17.



















