파이썬

[자료구조] Array로 Linkedlist 구현하기_node 없음

Mara7 2023. 5. 24.
반응형
LIST
class ArrayList:
    def __init__(self):
        self.count= 0
        self.current = 0
    def move_next(self): # ㄷㅏ음 값으로 이동
        if self.current >= self.count:
            return
        self.current = self.current + 1
    def get(self): # 현재 위치 값 가져오기
        if self.current == self.count :
            return
        return self.data.get(self.current)
    def add(self, value): # 현재값의 바로 앞에 값 추가하기 새로운 배열을 만들어서 추가하기
        for i in range(self.count-1,self.current,-1):
            self.data.set(i+1,self.data.get(i))
        self.data.set(self.current,value)
        self.count = self.count + 1
    def delete(self): # 현재값 삭제하기
        for i in range(self.current+1,self.count):
            self.data.set(i-1,self.data.get(i))
            self.count = self.count-1
    def move_front(self): # 현재값 앞으로 이동하기
        self.current = 0
AL = Arraylist()
AL

__init__ 함수

self.count : 배열의 길이

self.current : 현재값

move_next 함수

- 다음 값으로 이동하는 함수이며 출력하지 않는다.

-23' 만약에 다음값이 없을때는 아무것도 하지않는다.

-25' 다음값이 있을때 현재 current 커서를 +1로 옮긴다.(다음 값 출력)

get 함수 

- 현재값을 출력하는 함수이다.

- 27' 만약에 현재값이 비어 있다면 아무것도 하지않는다.

- 29' 값이 있다면, 현재값을 출력한다.

add 함수

- 현재 위치에 값을 추가하고 다음값들은 인덱스 + 1씩 늘려줌( 뒤로 이동)

- 31' 마지막 값에서 부터 현재 위치까지 이동한다. 

- 32' 이동하면서, 인덱스를 +1씩 늘려준다.

- 33' 현재 커서가 있던 위치가 비어지고, 추가 할 값이 입력된다.

-34' 전체의 배열 길이가 +1 된다.

delete 함수

- 현재 위치의 값을 삭제하고, 다음 값들은 앞으로 하나씩 땡겨준다(add와 반대)

- 36' 현재위치의 다음값들부터 반복한다.

- 37' 인덱스를 하나씪 줄여준다.

- 38' 전체 배열의 길이가 -1된다.

move_front 함수

- 현재 값에서 앞으로 이동하기.

- 인덱스가 0번째인 값으로 이동

 

반응형
LIST

댓글