자기참조 구조체(Linked List)를 저장하는 파일의 입출력을 어떻게 구현하나요?

조회수 842회

공부중입니다만, 그냥 구조체는 이런식으로 저장할 수 있는것 같은데, linked list도 이런식으로 저장해주면 되는건가요? 파일에 head부분의 구조체만 저장해주어도 그 안의 next로 나머지 구조체들을 찾아갈 수 있나요?

#define _CRT_SECURE_NO_WARNINGS    // fopen 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>     // fopen, fwrite, fclose 함수가 선언된 헤더 파일

#pragma pack(push, 1)    // 1바이트 크기로 정렬
struct Data {
    short num1;    // 2바이트
    short num2;    // 2바이트
    short num3;    // 2바이트
    short num4;    // 2바이트
};
#pragma pack(pop)       // 정렬 설정을 이전 상태(기본값)로 되돌림

int main()
{
    struct Data d1;

    d1.num1 = 100;
    d1.num2 = 200;
    d1.num3 = 300;
    d1.num4 = 400;

    FILE *fp = fopen("data.bin", "wb");   // 파일을 쓰기/바이너리 모드(wb)로 열기

    fwrite(&d1, sizeof(d1), 1, fp);       // 구조체의 내용을 파일에 저장

    fclose(fp);    // 파일 포인터 닫기

    return 0;
}
  • 아니요...모든 노드에 대해 시리얼라이즈(직렬화)해야 합니다. 구조체가 heap 에 저장시 순서대로 저장되는 것이 아닙니다. 정영훈 2019.6.3 20:24

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)