파이썬

[자료구조] Array로 Stack을 구현하기

Mara7 2023. 5. 14.
반응형
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

댓글