C examples for Data Structure:Linked List
Create a linked list of structures
#include <stdio.h> #include <stdlib.h> #include <string.h> #define TSIZE 45 /*from w ww . j a v a 2 s. c o m*/ struct film { char title[TSIZE]; int rating; struct film * next; /* points to next struct in list */ }; char * s_gets(char * st, int n); int main(void){ struct film * head = NULL; struct film * prev, * current; char input[TSIZE]; puts("Enter first movie title:"); while (s_gets(input, TSIZE) != NULL && input[0] != '\0'){ current = (struct film *) malloc(sizeof(struct film)); if (head == NULL) /* first structure */ head = current; else /* subsequent structures */ prev->next = current; current->next = NULL; strcpy(current->title, input); puts("Enter your rating <0-10>:"); scanf("%d", ¤t->rating); while(getchar() != '\n') continue; puts("Enter next movie title (empty line to stop):"); prev = current; } if (head == NULL) printf("No data entered. "); else printf ("Here is the movie list:\n"); current = head; while (current != NULL){ printf("Movie: %s Rating: %d\n", current->title, current->rating); current = current->next; } current = head; while (current != NULL){ free(current); current = current->next; } printf("Bye!\n"); return 0; } char * s_gets(char * st, int n){ char * ret_val; char * find; ret_val = fgets(st, n, stdin); if (ret_val) { find = strchr(st, '\n'); // look for newline if (find) // if the address is not NULL, *find = '\0'; // place a null character there else while (getchar() != '\n') continue; // dispose of rest of line } return ret_val; }