list_4.c
#include <stdio.h> struct man int age; char *name; struct man *next; // 자기 참조 구조체 }; // man 구조체 정의 main() { struct man a, b, c, d; a.next = &b; // 구조체 a 뒤에 구조체 b 연결 b.next = &c; // 구조체 b 뒤에 구조체 c 연결 c.next = &d; // 구조체 c 뒤에 구조체 d 연결 d.next = NULL; // 구조체 d는 리스트의 맨 마지막으로 next에 NULL 값 저장 a.age = 8; // 나이 저장 a.name = "이시은"; // 이름 저장 b.age = 6; b.name = "이우진"; c.age = 7; c.name = "이지훈"; d.age = 7; d.name = "이지연"; struct man *p; // 연결 리스트를 가리키기 위한 man 구조체 포인터 변수 선언 for (p = &a; p != NULL; p = p->next) { // 리스트의 첫 번째 구조체 주소를 초깃값으로 리스트의 끝까지 이동 printf("%d ", p->age); printf("%s\n", p->name); } }
실행 결과
8 이시은
6 이우진
7 이지훈
7 이지연
구조체 4개를 생성하고 각각의 구조체를 포인터를 통해서 연결하여 연결 리스트를 만들었습니다. 만들어진 연결 리스트를 포인터 변수가 처음부터 끝까지 차례대로 돌아다니면서 각 구조체에 저장되어 있는 정보를 출력하였습니다.