Δημοσιεύτηκε: 22 Ιούλ 2011, 15:32
από migf1
Star_Light έγραψε:
στο μεταξυ δεν μου απαντησες σε αυτο.... δεν θα το ειδες ε???

migf1 έγραψε:Μια χαρά!

Το head δεν χρειάζεται να το κάνεις calloc( ) στην main γιατί η list_prepend() είναι φτιαγμένη να κάνει calloc() μέσα της, οπότε αρκεί απευθείας ένα list_prepend( &list, 1) για να δημιουργηθεί ο 1ος κόμβος της λίστας με την τιμή 1. Υποθέτω το έκανες έτσι απλά για δοκιμαστικούς λόγους, ε;


Βασικα εκανα αυτο που μου λες... αλλα βγαζει μονο το 2 :S

Οχι δηλαδη το 2 1 . (Οπως σε εσενα που πηγαινε 62 52)

Spoiler: show
Κώδικας: Επιλογή όλων

/*==========================================================
YLOPOIHSH LISTAS ME SUNARTHSEIS

5/7/11

==========================================================
*/
#include<stdio.h>
#include<stdlib.h>

typedef struct customer /*xreiazetai kai i leksi customer wste na kserei mesa sto swma
tou se ti tupo anaferetai o deiktis next */
{
int id;
struct customer *next;
} Customer;

void list_print(Customer *head);
void list_prepend(Customer **head , int id);

int main ()
{
Customer *head ,*newnode;

head = NULL;
newnode=NULL;

/*{
head= calloc(1,sizeof(Customer));
head->id=1;
head->next = NULL;
} */

list_prepend(&head,1);
list_print(head);

free(newnode);
free(head);

return 0;
}
void list_prepend(Customer **head , int id)
{
Customer *newnode= calloc(1,sizeof(Customer));
if(!newnode)
return;

newnode->id=2;
newnode->next=(*head);
(*head)=newnode;
return;
}


void list_print(Customer *head)
{
while(head)
{
printf("%d \n",head->id);
head=head->next;
}
putchar('\n');
return;
}


Πάνω που νομίζω πως τα χεις καταλάβει, μου πετάς κάτι τέτοια και αναγκάζομαι να αναθεωρήσω :mrgreen:

Στον κώδικα αυτόν αφενός προσθέτεις μόνο έναν κόμβο στη λίστα σου, με τιμή 1 όταν καλείς την: list_prepend(&head, 1); στην main() μία και μόνη φορά, κι αφετέρου μέσα στο σώμα της list_prepend() αντί να βάζεις στο πεδίο id του νέου κόμβου το 2ο όρισμα της συνάρτησης (το 1 δηλαδή σε την περίπτωσή σου) πας και βάζεις πάντα το 2.

Οπότε απολύτως λογικά, ο κώδικάς σου προσθέτει στη λίστα μονάχα έναν κόμβο, που στο πεδίο id έχει την τιμή 2.