Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Finn의 개발블로그

3. 리스트(배열 기반 리스트) 본문

자료구조

3. 리스트(배열 기반 리스트)

BeginnerFinn 2018. 9. 10. 17:07



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