Je suis un peu coincé sur la façon de créer une fonction définie par l’utilisateur pour imprimer la sortie. Je dois également créer une fonction définie par l’utilisateur qui additionnera les données de chaque nœud et imprimera le total, mais l’addition ne correspond pas correctement et le format est également légèrement différent.
#include #include #include char printout(); int sum(); typedef struct node { int number; struct node*next; } node; char printout() { }; int sum() { int s,sum_all=0, node_sum=0; for(s=0;s=100;s++) { sum_all=node_sum+s; return printf("The sum of all nodes is %d.\n",sum_all); }; }; int main() { srand (time(NULL)); int i, total=0; struct node*head=malloc(sizeof(struct node)); head->number = rand()%100; printf("Node #%d contains %d.\n", 0, head->number); struct node*here=head; for (i=1; inext=malloc(sizeof(struct node)); here->number=rand()%100; printf("Node #%d contains %d.\n", i, here->number); }; total=sum(here->number); printf("%2.2d", total); return 0; }
Il y a ici une multitude d’erreurs, mais concentrons-nous simplement sur la viande la plus importante:
Vous devriez passer la tête de la liste à la fonction sum (), c.-à-d.
sum(head); // This is how you call most linked list functions.
par lequel vous devriez changer l’en-tête à
int sum(struct node *head) { ... }
Ce n’est pas un tableau. Vous devez parcourir correctement la liste liée.
Je ne peux pas vous montrer tout le code, car c’est ce que votre professeur souhaite que vous appreniez.
Mais vous devriez utiliser ces
for( struct node*p = head; p!=NULL; p=p->next)
au lieu de ceux-ci
for( s=0; s<=100; s++)
Vous avez également oublié d'avancer dans votre boucle malloc-and-fill-with-rand
ici = ici-> suivant; // cela fait dans les listes liées ce que i ++ fait dans les tableaux
et ça
sum_all += p->number; // p->number is analogous to array[i]
au lieu de
sum_all = node_sum +s; // what are s and node_sum anyway?
En outre, si vous insistez pour que la sum retourne quelque chose, elle devrait retourner, eh bien, la sum;
return sum_all;
Et ne l'imprimez pas dans la fonction
printf("The sum of all nodes is %d.\n",sum_all); // please don't
Parce que vous l'imprimez déjà à l'extérieur.
total = sum(head); printf("%2.2d", total);
Essayez d’abord de penser à ce que votre code va accomplir au lieu de le mettre à blanc. Cela vous aidera beaucoup. Bonne chance!