#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct stateStruct {
    struct stateStruct *next ;
    int population ;
    char abbrev[2] ;
    char name[16] ;          // Not going to talk about that trick...
};

typedef struct stateStruct * stateInfo ;

int main(int argc, char** argv) {
    stateInfo NC = (stateInfo) malloc(sizeof(struct stateStruct)) ;
    stateInfo RI = (stateInfo) malloc(sizeof(struct stateStruct)) ;

    NC -> next = RI ;
    NC -> population = 10146788 ;
    (void) strncpy(NC->abbrev, "NC", 2) ;
    (void) strcpy(NC->name, "North Carolina") ;

    RI -> next = (stateInfo) NULL ;
    RI -> population = 10146788 ;
    (void) strncpy(RI->abbrev, "RI", 2) ;
    (void) strcpy(RI->name, "Rhode Island") ;
    
    (void) puts(NC->name) ;        // Set the break here
    (void) puts(NC->next->name) ;
    
    return (EXIT_SUCCESS);
}
// Set a break before the puts and run!
// Print the values of NC, *NC, RI, and *RI
// Also try NC->next->next->population
// And   (void *)NC and (void *)&NC->population

