더북(TheBook)

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개를 생성하고 각각의 구조체를 포인터를 통해서 연결하여 연결 리스트를 만들었습니다. 만들어진 연결 리스트를 포인터 변수가 처음부터 끝까지 차례대로 돌아다니면서 각 구조체에 저장되어 있는 정보를 출력하였습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.