데이타구조
2016-03-29
퀴즈2 풀이, 과제1 풀이
과제 제출 안내
- Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
-
[새로 만들기] 버튼을 눌러
DS16<이름><학번> 폴더를 만들고 (예: DS16김연아123456)
만들어진 폴더를 우클릭하여
폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한) - Google 메일 계정만 있으면 Google Drive 서비스 이용 가능
- Google 메일 계정은 무료로 만들 수 있으며
참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유
과제3 예고
- list* copy(list* l)
// l과 같은 데이타를 같은 순서로 가진 새로운 리스트 생성 - list* append(list* l1, list* l2)
// l1 다음에 l2를 이어붙인 새로운 리스트 생성 - tree의 데이타를 list에 복사하기
- list* inorder(tree* t)
- list* preorder(tree* t)
- list* postorder(tree* t)
퀴즈2 정답 공개
- 문제1. O(n) 길이 n인 리스트 끝에 길이 n인 리스트 연결
- 문제2. O(n) 배열의 맨 앞에 삽입
- 문제3. (a) 배열 int a[3][4][5]의 메모리 배치는
int b[4][5]같은 배열이 3번 반복되는 구조
C/C++의 배열은 열 우선 순서(row-major order)
교과서 2.6절, 2.2.2절 참고 -
문제4. list* l = new list({3, NULL}); l->next = l; // 원형 리스트(circular list) 책 4.4.4절 참고
3
l
퀴즈2-문제2번 관련
- 배열의 어떤 위치를 가리키는 포인터가 있다고 하자
- 이 배열의 맨 앞에 새로운 데이타를 삽입하면
기존의 포인터가 가리키던 곳에 있는 데이타는
더 이상 원래 가리키던 것이 아니다 (포인터 무효화)
- 이 배열의 맨 앞에 새로운 데이타를 삽입하면
- 리스트의 어떤 위치를 가리키는 포인터가 있다고 하면
- 리스트의 맨 앞에 새로운 원소를 삽입하더라도
기존 포인터가 가리키던 데이타가 그대로 유지된다
(포인터가 계속 유효함. 안정적 stable)
- 리스트의 맨 앞에 새로운 원소를 삽입하더라도
No notes on this slide.
데이타구조 2016-03-29 퀴즈2 풀이, 과제1 풀이
데이타구조
By 안기영 (Ahn, Ki Yung)
데이타구조
2016-03-29
- 1,694