배열리스트

상위문서 : 자료구조

필수참고문서 : 빅오표기법



목차

1. 개요
2. 설명
3. 구현
3.1. JAVA로 구현
3.2. C#으로 구현


1.개요

배열리스트는 배열을 이용하여 리스트의 추상형 자료구조(ADT)를 구현한 것이다. 리스트(ADT)는 다음과 같은 연산을 가지고 있다.
  • 빈 리스트를 생성(생성자를 이용)
  • 리스트가 비어있는지 확인(isEmpty)
  • 리스트에 원소를 삽입(add), 리스트 맨 앞에 삽입(add first), 리스트 맨 뒤에 삽입(add last)
  • 리스트의 특정 원소를 보는(toString)
  • 특정 리스트 삭제(remove), 리스트 맨 앞 삭제(remove first), 리스트 맨 뒤 삭제(remove last)

2.설명

배열리스트는 배열을 사용하여 리스트를 구현한것이다. 배열의 장점은 인덱스를 이용하여 빠르고 쉽게 보고 싶은 원소를 볼 수 있다는 점이다. 따라서 toString은 구현하기 매우 쉽다. 하지만 add와 remove는 구현하는데 문제가 생기는데 다음 그림을 보자.

배열리스트에 add를 사용하여 데이터를 넣을 때


이렇듯 배열리스트에 데이터 하나를 넣기 위해서는 넣는 인덱스 기준으로 한칸씩 뒤로 데이터들을 밀어내야한다. 이번엔 remove를 보자

배열리스트에 remove를 사용하여 데이터를 제거할 때


이렇듯 삭제할 때도 뒤에 있는 데이터를 모두 삭제할려는 인덱스 기준으로 당겨줘야한다. 위에 그림에는 데이터쪽만 표현을 했지만 사실 null쪽도 다 당겨줘야한다.
따라서 배열리스트를 구현할 때는 저 문제를 어떻게 효율적으로 풀어내 구현하는지가 중요하다.
그리고 배열리스트의 시간복잡도는 데이터 추가와 삭제 모두 O(n)의 시간이 걸리며 나머지는 O(1)의 시간이 걸린다.

3.구현

3.1.JAVA로 구현

3.2.C#으로 구현

on 2017년 5월 6일 토요일 | A comment?
0 responses to “배열리스트”

Leave a Reply

최근 많이 본 글