Δημοσιεύτηκε: 22 Ιούλ 2011, 14:35
από Star_Light
migf1 έγραψε:
Ωραίος! Στον νήμα "Τα πάντα για τη C/C++" πόσταρα και τον κώδικα για τη διαγραφή κόμβου, που αν τον δοκιμάσει κανείς να τον κάνει μόνος του δεν είναι τετριμμένος (ήταν και SOS στα job-interviews :lol:).

Θα τον συμπεριλάβω αν είναι στον 7ο ή στο 8ο μέρος του tutorial. Παρεμπιπτόντως, έβαλα πίνακα περιεχομένων και τίτλους σε όλα τα μέρη του tutorial, ώστε να είναι ευκολότερη η εύρεση των πληροφοριών που περιέχουν.

Περιμένω και λύσεις για την άσκηση του 6ου μέρους, που ουσιαστικά λειτουργεί ως πρακτική εισαγωγή στα hash-tables. Αλλά αν δεν πρόκειται να ασχοληθεί κανείς, πείτε μου να ποστάρω τη λύση της.


Θα ασχοληθουμε!!! Απλα χθες ειχα να ανεβασω το 1ο μαθημα στα δικτυα :D

στο μεταξυ δεν μου απαντησες σε αυτο.... δεν θα το ειδες ε???


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;
}


οσο για αυτο που ρωτησες ε ναι... τα διαβαζω προσεκτικα πρωτα και μετα προσπαθω να τα κανω εξασκηση...

ουτως η αλλως τον κωδικα τον εχω ετοιμο απο τοτε που πρωτοξεκινουσαμε με τις λιστες ;)