본문 바로가기

기술면접/정리하기

리스트(List), 배열(Array)

- 링크드 리스트(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의 데이터를 순서대로 읽어옴