4. amugona2015
linked list
○ 구조체의 집합으로 표현되며, 그 member로 자기 자신과 똑같은 형의 pointer
를 가짐
○ pointer가 다음 element를 가리킴
○ memory의 물리적인 이동 없이 data의 추가, 삭제, 정렬이 가능하므로 많은
data를 취급 시 적합한 자료구조
○ 원하는 data 참조 시 처음부터 찾아야 함
○ 배열보다 data 호출에 시간이 더 많이 걸림
linked list 구현
4
e1 e2 e3 e4
5. amugona2015
linked list 구현
구현 내용
○ linked list에 데이터A를 저장하기
○ 리스트의 모든 데이터를 표시하기
○ 새로운 데이터를 제일 끝에 추가하기
○ 원하는 위치에 데이터를 삽입하기
○ 원하는 위치의 데이터를 삭제하기
○ 모든 데이터 삭제하기
구현 환경
○ C, Win32 console app, VS 2012
5
num word
1 accord
2 grant
3 bestow
4 concede
데이터A
list: 표시
add: 추가
insert: 삽입
delete: 삭제
clear: 모두 삭제
quit: 프로그램종료
command 입력
12. amugona2015
insertion sort
12
삽입정렬 코딩
○ 문제) 3,0,1,8,7,2,5,4,9,6을 0,1,2,3,4,5,6,7,8,9로 삽입정렬 알고리즘으로 정렬하기
• 첫 번째 원소와 그 다음 원소 2개를 비교하
여 작은 원소를 왼쪽으로 배치
• 두 번째 비교부터 인덱스가 감소하며 원소 2
개를 비교하여 작은 원소를 왼쪽으로 배치
사람이 쉽게 이해하고 이용할 수 있는 data structure와, 이를 대상으로 구현될 프로그램의 논리인 algorithm이 정확하고 효율적이어야 한다.
algorithm과 data structure는 밀접한 관계를 가지며, 서로 어느 한쪽이 없이는 이해할 수 없다.
데이터 구조는 소중한 선배 개발자들의 성취
초고층 빌딩을 짓는 것과 1층 단독주택을 짓는 것은 본질적으로는 같은 일이나(“건물을 세운다”) 현실적으로는 완전히 다른 공학적인 고려가 들어간다.
규모가 달라지면 그 규모를 지탱하기 위해 막대한 체계들이 필요해짐