#include #include #define COUNT 10 struct linkedStruct { int elem; struct linkedStruct* next; }; typedef struct linkedStruct linked; typedef linked* linkedPtr; void insertAtFront (linkedPtr* hd, int val) { linkedPtr ptr = (linkedPtr) malloc (sizeof(linked)); ptr->elem = val; ptr->next = *hd; *hd = ptr; } void removeFromFront (linkedPtr* hd) { linkedPtr ptr = *hd; if (ptr != NULL) { *hd = ptr->next; free (ptr); } } int getFirstValue (linkedPtr hd) { if (hd != NULL) return hd->elem; else return -999; } void show (linkedPtr hd) { while (hd != NULL) { printf ("%d, ", hd->elem); hd = hd->next; } printf ("\n"); } int listLength (linkedPtr hd) { int length = 0; while (hd != NULL) { length++; hd = hd->next; } return length; } int main (int argc, char**argv) { linkedPtr head = NULL; int i; int temp; for (i = 0 ; i < COUNT; ++i) { temp = rand() % 100; printf ("In main(): temp: %6d\n", temp); insertAtFront (&head, temp); show (head); printf ("The list has %d nodes\n", listLength(head)); } printf ("\n\nRemoving items from the list\n"); for (i = 0 ; i < COUNT/2 ; i++) { int val = getFirstValue (head); printf ("The first item in the list is: %d\n", val); removeFromFront (&head); /* to help show what is going on */ show (head); printf ("The list has %d nodes\n", listLength(head)); } printf ("\n"); }