/* File: struct5.c This program uses structures that include fields which are pointers to these structures. */ #include #include "genlib.h" #include "simpio.h" #include "strings.h" typedef struct dummy_tag { string name ; string major ; double gpa ; struct dummy_tag *teammate1 ; struct dummy_tag *teammate2 ; } student_record ; /* Function prototypes */ void print_record(student_record) ; main() { student_record student1, student2, student3 ; student_record *ptr ; int i, size ; /* make up some students */ student1.name = "Wayne Gretzky" ; student1.major = "Business Management" ; student1.gpa = 2.0 ; student1.teammate1 = student1.teammate2 = NULL ; student2.name = "Jari Kurri" ; student2.major = "Business Management" ; student2.gpa = 2.3 ; student2.teammate1 = student2.teammate2 = NULL ; student3.name = "Essa Tikkanen" ; student3.major = "Business Management" ; student3.gpa = 1.5 ; student3.teammate1 = student3.teammate2 = NULL ; /* Make Gretzky, Kurri and Tikkanen teammates */ student1.teammate1 = &student2 ; student1.teammate2 = &student3 ; student2.teammate1 = &student1 ; student2.teammate2 = &student3 ; student3.teammate1 = &student1 ; student3.teammate2 = &student2 ; /* Print out Gretzky's stats */ printf("The Great One himself:\n") ; print_record(student1) ; /* Print out the stats for Gretzky's 1st teammate */ ptr = student1.teammate1 ; printf("\n%s's first temmate:\n", student1.name) ; print_record(*ptr) ; /* Print out the stats for Gretzky's 2nd teammate */ ptr = student1.teammate2 ; printf("\n%s's second temmate:\n", student1.name) ; print_record(*ptr) ; } /* Print out a single record neatly */ void print_record(student_record rec) { printf("%20s, %10s, GPA: %1.4f\n", rec.name, rec.major, rec.gpa) ; }