반응형
LIST
다른 자료형으로 구현하기
구현
class ArrayStack:
def __init__(self,size): # 배열의 특징 : 크기가 정해져있고, 인덱스가 있다.
self.data = [0]*size
self.index = 0
def push(self, value): # 맨 인덱스에 값을 추가함
self.data[self.index] = value
self.index += 1
def pop(self): # 맨마지막 (현재) 마지막 리스트 값을 리턴
last_value = self.data[self.index-1] # 마지막 값의 인덱스는 현재 인덱스
self.data[self.index-1] = 0
return last_value # 마지막 인덱스 값을 리턴한다.
AS = ArrayStack(10)
AS.push(1)
AS.push(2)
print(AS.pop())
print(AS.data)
1. init함수
배열의 특징을 활용해서 init함수를 구현했다.
배열의 특징은 1. 크기가 정해져 있다. 2. 인덱스가 있다.
1의 특징을 활용해서, self.data 의 크기를 정해주었고
2의 특징을 이용해서, 처음 인덱스를 정해주었다.
2. push함수
stack의 특징은, 값을 삽입하고 삭제할 수 있는 특징을 가지고 있다.
값을 추가할때는 처음부터 쌓아간다.
init함수에서 정해준 index를 활용해서 값을 쌓아갈때마다, index를 1개씩 늘어나도록 구성했다.
3. pop함수
pop 함수가 구성하기 제일 까다로웠다.
stack은 마지막에 넣은 값을 먼저 삭제하고, 리턴한다.
마지막에 넣은 값은 현재의 인덱스의 전 값이다.(push에서 index를 계속해서 추가해주었기 때문에 현재 포인터는 push한 다음 값에 있다.)
data리스트의 마지막에 추가한 값의 인덱스를 마지막 값으로 설정해주고
해당 값을 0으로 바꾼다.
그리고 last_value로 바꾼다.
반응형
LIST
'파이썬' 카테고리의 다른 글
[자료구조] Stack을 Queue로 구현하기 (0) | 2023.05.14 |
---|---|
[자료구조] Stack을 연결 리스트로 구현하기 (0) | 2023.05.14 |
[자료구조] Python으로 linked list 구현하기 (2) | 2023.05.02 |
[자료구조] Array를 파이썬으로 구현하기2 (0) | 2023.04.26 |
[자료구조] Stack의 자료구조 파이썬으로 구현하기 (0) | 2023.04.18 |
댓글