- 링크드 리스트(Linked List)와 배열(Array)의 차이
Array | Linked List |
같은 자료형의 변수로 이루어진 구성요소가 모인 것 | 데이터를 보관하는 각 노드가 있고 해당 노드에는 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식 |
자료형[] 배열 변수명 = new 자료형[배열크기] int[] a = new int[3]; int형의 배열 본체를 생성하고 그것을 변수 a가 참조"하도록 설정 |
Linked <자료형> list = new LinkedList <자료형>(); |
논리적 저장 순서와 물리적 저장 순서가 일치한다. | 다음 노드의 정보를 모두 가지고 있는게 아닌, 다음에 나올 자료 위치 정보만 가지고 있다. |
index로 해당 원소에 접근(random access 가능) -> 찾고자 하는 원소의 인덱스 값을 알고 있으면 O(1) 접근 가능 |
삽입과 삭제시 노드의 연결만 바꿔주면 됨 -> 시간복잡도 : O(n) 삽입 삭제 연산을 위해 search 과정이 필요하기 때문 |
삽입 삭제시 원소에 접근해 작업을 완료한 뒤 빈공간이 생기지 않도록 Shift 해야함 -> 시간복잡도 O(n) 크기가 고정되어 추가 할당이 번거로움 |
원소에 접근하기 위해 순차 검색을 진행해야함 -> 시간복잡도 : O(n) |
-length() :배열 길이 배열이름.length();
-clone() : 배열 복제 배열이름.clone(); |
-add() : 데이터 삽입 ex) list.add(2,1) : 2자리에 1 삽입
-set() : 데이터 수정 ex) list.set(0,3) : 0자리에 3 대입
-remove() : 데이터 삭제 ex) list.remove(1) : 1번자리 삭제
-Iterator() : Iterator 타입의 객체 리턴
-next() : LinkedList의 데이터를 순서대로 읽어옴 |
'기술면접 > 정리하기' 카테고리의 다른 글
정리 (윤성우의 열혈 C프로그래밍) (0) | 2019.06.19 |
---|---|
디자인 패턴 (1) | 2019.05.22 |
객체 지향(OOP) (0) | 2019.05.14 |
자료구조와 알고리즘의 정의와 상관관계 (0) | 2019.05.13 |
힙 메모리 최적화와 오브젝트 풀링 (1) | 2019.05.10 |