데이타구조

2016-03-29

 

Destructive Update vs. Persistent Data (과제2 관련),

과제3 풀이

과제 제출 안내

  • Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
  • [새로 만들기] 버튼을 눌러
    DS16<이름><학번> 폴더를 만들고 (예: DS16김연아123456)
    만들어진 폴더를 우클릭하여
    폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한)
  • Google 메일 계정만 있으면 Google Drive 서비스 이용 가능 
  • Google 메일 계정은 무료로 만들 수 있으며
    참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유

데이타 구조를 다루는 2가지 관점

  • Destructive Update (기존의 것을 파괴하고 덮어씀)
    • 장점: 메모리 절약
    • 단점: 공유된 데이타일 경우 혼란 가능성,
      멀티스레드로 동시 접근할 때 불리
  • Persistent Data (기존의 데이타를 그대로 유지)
    • 장점: 이전/중간과정 데이타 재사용/공유 용이,
      멀티스레드로 동시 접근할 때 유리
    • 단점: 메모리 낭비 가능성

Destructive Update

  • int x = 3;
    int y = 5;
    x = x + y; // x 에 결과 덮어씀

     
  • list* l1= cons(1,NULL);
    list* l2= cons(2,cons(3,NULL));
    // 기존 l1 대신 길이 3인 리스트
    l1->next = l2;

     
  • 기존 리스트를 해체/파괴하며 순서 뒤집기
     

Persistent Data

  • int x = 3;
    int y = 5;
    int z = x + y; // 새로운 곳에
                  // 기존 x, y 값 유지
     
  • list* l1= cons(1,NULL);
    list* l2= cons(2,cons(3,NULL));
    // 길이 3인 새 리스트
    list* l3 = cons(11->data, l2);
             // 기존 l1, l2 그대로 유지

     
  • 기존 리스트 유지하며 순서 뒤집힌 새로운 리스트 만들기

데이타구조

By 안기영 (Ahn, Ki Yung)