Finn의 개발블로그
3. 리스트(배열 기반 리스트) 본문
1. Array
- 가장 기본적인 자료구조
- 찾고자 하는 데이터의 인덱스의 값을 알고 있으면 Big-O(1) 시간으로 접근 가능
- 배열의 크기가 지정되어서 만약 길이를 늘혀야 한다면 많은 메모리 소모
- 데이터의 삽입 삭제시 연속성을 유지하기 위해서 데이터의 이동 발생으로 Big-O(N) 시간 소모
2. 배열을 이용한 리스트의 구현(Abstract Data Type)
2-1. 리스트 자료구조의 ADT
- init(self):
- 리스트를 초기화 한다.
- append(self, data):
- 리스트에 데이터를 저장한다. 매개변수 data에 전달된 값을 저장한다.
- remove(self, index):
- 지정한 인덱스의 데이터를 삭제한다.
- search(self, search_data)
- 현재 리스트에서 특정한 데이터를 찾는다
- 찾으면 결과값을 리턴, 찾지 못하면 False
- get(self, index)
- 지정한 인덱스의 값을 반환한다.
- pop(self)
- 가장 마지막 값을 반환한다.
- display(self)
- 모든 값을 보여준다.
- count(self):
- 리스트에 저장되어 있는 데이터의 수를 반환한다
class Array:
def __init__(self, length):
self.list = [None] * length
self.cur_index = 0
self.total = 0
def append(self, data):
self.list[self.cur_index] = data
cur_data = self.list[self.cur_index]
self.cur_index += 1
self.total += 1
return cur_data
def remove(self, index):
for i in range(index, self.total - 1):
self.list[i] = self.list[i + 1]
del self.list[self.total - 1]
self.total -= 1
return True
def search(self, search_data):
search_result = [data for data in self.list if data == search_data]
if not search_result:
return False
return search_result
def get(self, index):
try:
return self.list[index]
except IndexError:
return False
def pop(self):
data = self.list[self.total - 1]
self.remove(self.total - 1)
return data
def display(self):
for i in self.list:
print(i)
def count(self):
return self.total
a = Array(10)
a.append(1)
a.append(2)
a.append(3)
a.append(4)
a.append(5)
a.append(6)
a.append(7)
a.append(8)
a.append(9)
a.append(10)
print(f'삭제 :{a.remove(5)}')
print(f'인덱스 2번 : {a.get(2)}')
print(f'pop : {a.pop()}')
a.display()
---------------------------------------------------
삭제 :True
인덱스 2번 : 3
pop : 10
1
2
3
4
5
7
8
9
'자료구조' 카테고리의 다른 글
6. 큐 (0) | 2018.11.07 |
---|---|
5. 스택 (0) | 2018.11.06 |
4.리스트(연결 리스트) (0) | 2018.11.04 |
2.재귀 (0) | 2018.08.30 |
1. 자료구조와 알고리즘의 이해 (0) | 2018.08.28 |