단순연결리스트에서 삭제한 노드의 위치 반환(수정)

조회수 1881회

여기서 삭제한 노드의 위치 반환하려면 어떻게 수정해야 하나요?

class SinglyList:
    class Node:       
        def __init__(self, data, link): #### 노드 생성
            self.data = data
            self.next = link

    def __init__(self): #### 단순연결리스트 생성자
        self.head = None
        self.size = 0

    def size(self): return self.size
    def Empty(self):return self.size == 0

    def insert_front(self, data): #### 첫번째 노드로 삽입
        try:
            if self.Empty():
                self.head = self.Node(data, None)
                print("%s가 첫번째 노드로 삽입되었습니다." %data)
            else:
                self.head = self.Node(data, self.head)
                print("%s가 첫번째 노드로 삽입되었습니다." %data)
            self.size += 1
        except:
            print("값을 잘못 입력하였습니다.")

    def insert_after(self, data, p): #### p 다음에 삽입
        try:
            p.next = SinglyList.Node(data, p.next)
            self.size += 1
        except:
            print("값을 잘못 입력하였습니다.")

    def delete_front(self): #### 첫번째 노드 삭제
        try:
            if self.Empty():
                raise EmptyError("underflow")
            else:
                self.head = self.head.next
                self.size -= 1
        except:
            print("값을 잘못 입력하였습니다.")

    def delete_after(self, p): #### p 다음 노드 삭제
        try:
            if self.Empty(): 
                raise EmptyError("underflow")
            t = p.next
            p.next = t.next
            self.size -= 1
        except:
            print("값을 잘못 입력하였습니다.")

    def search(self, target): #### target 탐색
        try:
            p = self.head
            for k in range(self.size):
                if target == p.data:
                    print(target, "데이터는",k,"번째에 있습니다.")
                    return k
                p = p.next
            print(target, "데이터는 리스트에 없습니다.")
        except:
            print("값을 잘못 입력하였습니다.")
        return None

    def get(self): #### 연결리스트 출력
        try:
            if self.size == 0:
                print("리스트가 비었습니다.")
            else:
                p = self.head
                while p:
                    if p.next != None:
                        print(p.data, ' -> ', end='')
                    else:
                        print(p.data)
                    p = p.next
        except:
            print("값을 잘못 입력하였습니다.")

    def isEmpty(self): #### 리스트가 비어있는지 확인
        if self.size == 0:
            print("리스트가 비었습니다.")
        else:
            print("리스트가 비어있지 않습니다.")

class EmptyError(Exception): #### 값 오류의 에러 처리
    pass

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 클래스를 어떻게 설계했는지 구조가 필요 해 보입니다. DaeSung Park 2018.3.29 21:49
  • 수정했는데 혹시 어떻게 하면 되는지 아시나요? 알 수 없는 사용자 2018.4.2 22:05

1 답변

  • 각각 값들을 리턴 해 주면 되는거 아닌가요?? ㅎㅎ

    의도가 맞는지는 조금 의문입니다.

    def delete_front(self): #### 첫번째 노드 삭제
        try:
            if self.Empty():
                raise EmptyError("underflow")
            else:
                self.head = self.head.next
                self.size -= 1
    
                # 추가
                return self.head
        except:
            print("값을 잘못 입력하였습니다.")    
    
            # 추가
            return None
    
    def delete_after(self, p): #### p 다음 노드 삭제
            try:
                if self.Empty(): 
                    raise EmptyError("underflow")
                t = p.next
                p.next = t.next
                self.size -= 1
    
                # 추가
                return p.next 
            except:
                print("값을 잘못 입력하였습니다.")
    
                # 추가
                return None
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)