|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
[C] problema con strutture
Ciao a tutti. dovrei implementare una funzione lista leggi(void) che legga da tastiera e inserisca in una lista i numeri scelti dall utente fino al primo negativo(che non viene inserito).
Ritorna il puntatore al nodo di testa. La lista deve avere memoria dinamica La struttura del nodo è questa: typedef struct nodo *lista; struct nodo { int x; /* Informazione */ lista next; /* Puntatore al nodo successivo. */ }; Qualcuno mi può aiutare???
Ultima modifica di gigippa : 25-05-2007 alle 17:22. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
Avevo pensato a una cosa del genere ma non va
printf("Inserisci la prima lista: "); int n=100; int i; int k; for(i=0;i<n; i++) if(k>0){ scanf("%d", L[0].x); |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
Pare che tu non abbia proprio la benché minima idea di come si gestisca una lista e neppure come si effettui l'allocazione dinamica di una elemento in memoria. Il codice qui sotto è un esempio che fa più o meno quello che ti veniva richiesto, la differenza è che lo fa senza utilizzare una funzione. A te il compito di capirlo e modificarlo opportunamente.
Codice:
#include <stdio.h>
#include <stdlib.h>
typedef struct node *element;
struct node {
int info;
element next;
};
int main() {
element list = NULL;
element insert = NULL;
int info = 0;
scanf("%d", &info);
while(info >= 0) {
if(list == NULL) {
insert = (element)malloc(sizeof(element));
insert->info = info;
insert->next = NULL;
list = insert;
} else {
insert->next = (element)malloc(sizeof(element));
insert = insert->next;
insert->info = info;
insert->next = NULL;
}
scanf("%d", &info);
}
return(0);
}
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
Grazie per l' aiuto! Adesso stavo provando a fare una funzione void stampa(lista L) che stampi tutti i numeri contenuti nella lista
La mia idea era questa void stampa(lista L) { while(L->next !=NULL) printf("%d", L->x); } Ma ci sono dei problemi. Mi dai una dritta? grazie |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
A parte quello quando faccio girare il programma mi si inchioda! Legge correttamente ma quando si tratta di stampare va in crash
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
va in crash. Mi dice che si è verificato un errore e che l' applicazione verrà chiusa
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
Quindi devo cambiare la condizione del while. Se però metto L->x != NULL non cambia nulla
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
Prova con:
Codice:
...
while(list != NULL) {
printf("%d", list->info);
list = list->next;
}
...
PS: attento al passaggio per indirizzo del parametro list della funzione di lettura, ogni modifica che si fa nella funzione si ripercuote sul parametro. |
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Apr 2007
Città: Torino
Messaggi: 95
|
Cambiando le variabili che tu hai messo con quelle del mio programma ho messo così
void stampa(lista L) { while(L!= NULL) printf("%d", L->x); L = L->next; } Ma non funziona lo stesso |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
Menomale che non funziona... ti mancano delle parentesi {} .
Oltretutto non hai neppure seguito il consiglio che ti avevo dato di copiare il valore del parametro che passi alla funzione in una variabile locale della funzione. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:54.




















