Δημοσιεύτηκε: 07 Ιούλ 2011, 00:30
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*/