Δημοσιεύτηκε: 22 Ιουν 2011, 13:29
migf1 έγραψε:Δεν έχω καταλάβει ακριβώς ποιες και που είναι οι απορίες, αλλά παραθέτω ολοκληρωμένο κώδικα για δημιουργία, εισαγωγή, εκτύπωση και καταστροφή απλής συνδεδεμένης λίστας (όπου υπάρχουν απορίες, πείτε μου να τις λύσουμε).
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
typedef enum { FALSE=0, TRUE } Bool;
typedef struct node {
int data;
struct node *next;
} List;
/* ------------------------------------------------------------------
* Insert 'data' as Last node of 'list'
*/
Bool list_insert( List **list, int data )
{
List *head = NULL, *dummy = NULL;
List *new = calloc(1, sizeof(struct node) );
if ( !new )
return FALSE;
new->data = data;
new->next = NULL;
if ( !*list ) {
*list = new;
return TRUE;
}
head = dummy = *list;
while ( head ) {
dummy = head;
head = head->next;
}
dummy->next = new;
return TRUE;
}
/* ------------------------------------------------------------------
* Print 'list' contents
*/
void list_print( List *list )
{
if ( !list )
return;
while ( list ) {
printf("%d ", list->data );
list = list->next;
}
return;
}
/* ------------------------------------------------------------------
* Free memory reserved for 'list'
*/
void list_destroy( List **list )
{
if ( !*list )
return;
List *dummy = NULL;
while ( *list ) {
dummy = *list;
*list = (*list)->next;
free( dummy );
}
return;
}
/* ------------------------------------------------------------------
*
*/
int main( void )
{
register int i=0;
List *list = NULL;
for (i=19; i>9; i--)
list_insert( &list, i);
list_print( list );
list_destroy( &list );
fflush(stdin); getchar();
exit(0);
}
πολυ καλος κωδικας. Εσυ τον εφτιαξες??? Θα τον κοιταξω. Και θα σου πω.