Δημοσιεύτηκε: 07 Ιούλ 2011, 00:30
από migf1
Star_Light έγραψε:Λοιπον αμα επιλυσω και αυτο το λαθακι τελειωσα με το μερος 2ο και πρακτικα και μπαινω μερος 3ο....

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

[snip]



Ρόιδο τα έκανες εδώ :(

Σου έβαλα σχόλια με θαυμαστικά όπου υπάρχει πρόβλημα!

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

/*==========================================================
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 *);

// ---------------------------------------------------------------------------------
int main( void )
{
Customer *head = NULL, *newnode = NULL;

// insert 1st node
head = calloc(1, sizeof(Customer) );
head->id = 1;
head->next = NULL;

// insert 2nd node
newnode= calloc(1,sizeof(Customer));
newnode->id = 2;
newnode->next = NULL;
head->next = newnode;


/* !!! ΜΕΤΑ ΑΠΟ ΑΥΤΟ ΤΟ LOOP ΧΑΝΕΙΣ ΤΗΝ ΕΠΑΦΗ ΣΟΥ ΜΕ ΤΗΝ ΑΡΧΗ ΤΗΣ ΛΙΣΤΑΣ !!! */
while ( head )
{
printf("\n\n");
list_print( head );
head = head->next; /*Epeidi to au8entiko antigrafo tou head paramenei stin main() prepei na kiniseis pali ton deikti */
}

/* !!! Ο newnode->next ΕΔΩ ΙΣΟΥΤΑΙ ΜΕ NULL, ΠΡΙΝ ΚΑΝ ΤΟΝ ΚΑΝΕΙΣ free !!! */
free(newnode->next); /*Katastrofi komvou ston opoio deixnei o newnode->next*/

free(newnode);

/* !!! Ο head ΕΔΩ ΙΣΟΥΤΑΙ ΜΕ NULL, ΠΡΙΝ ΚΑΝ ΤΟΝ ΚΑΝΕΙΣ free !!! */
free(head);

/* !!! ΜΕΤΑ ΤΟ FREE() ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΝΑ ΣΥΚΡΙΝΟΥΜΕ ΑΝ Ο HEAD ΙΣΟΥΤΑΙ ΜΕ NULL !!! */
if( head != NULL )
printf("H free dn ekane kala tin douleia tis \n");
else
printf("H mnimi eleutherwthike!");

return 0;
}

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

return;
}

/* BGAZEI SAN EKSODO 12 KAI 2 enw kanonika tha eprepe 1 kai 2*/