Δημοσιεύτηκε: 22 Ιούλ 2011, 14:35
migf1 έγραψε:
Ωραίος! Στον νήμα "Τα πάντα για τη C/C++" πόσταρα και τον κώδικα για τη διαγραφή κόμβου, που αν τον δοκιμάσει κανείς να τον κάνει μόνος του δεν είναι τετριμμένος (ήταν και SOS στα job-interviews).
Θα τον συμπεριλάβω αν είναι στον 7ο ή στο 8ο μέρος του tutorial. Παρεμπιπτόντως, έβαλα πίνακα περιεχομένων και τίτλους σε όλα τα μέρη του tutorial, ώστε να είναι ευκολότερη η εύρεση των πληροφοριών που περιέχουν.
Περιμένω και λύσεις για την άσκηση του 6ου μέρους, που ουσιαστικά λειτουργεί ως πρακτική εισαγωγή στα hash-tables. Αλλά αν δεν πρόκειται να ασχοληθεί κανείς, πείτε μου να ποστάρω τη λύση της.
Θα ασχοληθουμε!!! Απλα χθες ειχα να ανεβασω το 1ο μαθημα στα δικτυα
στο μεταξυ δεν μου απαντησες σε αυτο.... δεν θα το ειδες ε???
migf1 έγραψε:Μια χαρά!
Το head δεν χρειάζεται να το κάνεις calloc( ) στην main γιατί η list_prepend() είναι φτιαγμένη να κάνει calloc() μέσα της, οπότε αρκεί απευθείας ένα list_prepend( &list, 1) για να δημιουργηθεί ο 1ος κόμβος της λίστας με την τιμή 1. Υποθέτω το έκανες έτσι απλά για δοκιμαστικούς λόγους, ε;
Βασικα εκανα αυτο που μου λες... αλλα βγαζει μονο το 2 :S
Οχι δηλαδη το 2 1 . (Οπως σε εσενα που πηγαινε 62 52)
- Κώδικας: Επιλογή όλων
/*==========================================================
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;
}
οσο για αυτο που ρωτησες ε ναι... τα διαβαζω προσεκτικα πρωτα και μετα προσπαθω να τα κανω εξασκηση...
ουτως η αλλως τον κωδικα τον εχω ετοιμο απο τοτε που πρωτοξεκινουσαμε με τις λιστες