ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linked List의 활용 - 파일 입출력 활용
    C 자료구조/2. 연결 리스트 2021. 3. 24. 21:42

    작업 환경은 Visual Studio 2008

    우선 아래는 우리가 읽어올 파일의 내용이다.

    각 줄은 배우에 대한 정보들이다. 배우에 대한 정보들이 여러 개이므로 우리는 구조체가 필요함을 알 수 있다.

     

    위의 파일은 당연히 프로젝트 폴더 내에 존재해야 한다. 아래의 그림은 이 프로젝트 폴더 내부이다.

     

    아래는 배우에 대한 구조체 정보와 이 정보들을 저장할 때 필요한 변수들이다.

     

    위의 Actor 구조체에서 유심히 봐야할 변수는 MovieFilmCount와 MovieFilmTitle이다.

    배우마다 출연작품의 수는 다르다. 위의 파일 내용을 보면 알 수 있다.

    그렇기 때문에, 결론적으로 배우의 출연작품의 제목(문자열)을 저장하는 변수인 MovieFilmTitle는

    데이터 유형이 이중 포인터가 되어야 한다.

    예를 들어, 배우가 송강호라고 가정하면 출연작의 수는 3편이고 작품명은 각 각 "사도", "변호인", "쉬리"이다.

    즉, MovieFilmTitle를 작품의 수 만큼 동적할당을 하면 이는 자료형이 char*인 포인터 배열이 된다.

    다시 적으면, 아래와 같은 구조로 데이터를 저장하면 된다.

    MovieFilmTitle[0] = "사도"

    MovieFilmTitle[1] = "변호인"

    MovieFilmTitle[2] = "쉬리"

    아래는 위를 그림으로 표현한 것이다.

     

     

    첫 번째로 작업할 내용은 당연히 파일에서 데이터를 읽어와서 리스트로 저장한 후에, 

    이를 출력하는 것이다.

    아래의 세 함수가 이 역할을 한다.

    아래의 두 함수는 파일에 있는 내용을 리스트로 저장을 하고, 나머지 하나는 리스트에 있는 정보를 출력하는 함수이다.

     

     

    그리고, 아래의 함수는 리스트에 있는 모든 데이터를 삭제하는 함수로

    프로그램이 끝나기 전에 호출되어 모든 정보들을 지워야 한다.

     

    메인 함수를 통해, 이 작업을 확인해보자.

    main 함수

     

    프로그램 실행결과

     

    리스트에 파일의 내용이 모두 저장된 것을 확인할 수 있다.

    여기까지가 기본 내용이다.

    아래의 함수는 이름을 입력받아 리스트에 존재하는 배우를 삭제하는 함수이다. 동명이인에 대한 처리는 하지 않았다.

     

    아래는 데이터를 연결 리스트에 저장하는 함수이다.

    저장 방식은 중간 삽입 방식으로 하는데, 특정한 배우의 이름을 입력받아 이 배우 뒤에 데이터를 삽입하는 함수이다.

     

    아래는 리스트의 탐색함수이다.

    탐색 조건은 배우의 이름 혹은 배우의 출역작으로 한다.

     

    그리고 아래는 목록을 보여주는 함수이다.

     

    main함수

     

    소스 파일과 텍스트 파일

    main.c
    0.01MB
    영화배우.txt
    0.00MB

     

    댓글

Designed by Tistory.