• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

연결리스트 구현 return

23.08.14 10:59 작성 조회수 155

1

  1. 다른 분께서 하신 질문을 보니 delete함수와 getNodeAt 함수에서 return을 하는 이유는 제거된 노드 값을 확인하거나 그 노드값을 얻기 위함이라고 하셨는데,

delete함수에서 제거된 값은 왜, 그리고 어떻게 확인하는 것인지 이해가 가지 않아서 질문드립니다.

저는 test.mjs 파일에서 console.log(this.deleteNode)를 입력하면 해당 변수의 값(제거된 값)이 출력될 것이라고 생각했으나

TypeError: Cannot read properties of undefined (reading 'deleteNode')

이러한 에러가 발생했습니다.

 

  1. deleteLast함수를 만들 때

     return this.deleteAt(this.count-1);  

    deleteAt함수에 이미 return이 포함되어 있는데 이 함수에 또 return을 포함하는 이유가 궁금합니다

 

감사합니다!

답변 1

답변을 작성해보세요.

0

안녕하세요 김예서님!

연결리스트의 함수에서 리턴를 하는 부분이 궁금하셨군요.

바로 답변드리겠습니다.

  1. 다른 분께서 하신 질문을 보니 delete함수와 getNodeAt 함수에서 return을 하는 이유는 제거된 노드 값을 확인하거나 그 노드값을 얻기 위함이라고 하셨는데, delete함수에서 제거된 값은 왜, 그리고 어떻게 확인하는 것인지 이해가 가지 않아서 질문드립니다.

먼저 delete 함수는 해당 인덱스에 있는 데이터를 삭제하는 함수입니다. 물론 리턴값이 없는 함수내에서 삭제만 진행해도 삭제 기능은 완료된 것입니다. 하지만 어떤 상황에서는 제거된 값을 확인할 필요가 있기 때문에 함수에서 삭제된 값을 리턴하는 것입니다.

함수에서 제거된 값(리턴 값)을 확인하은 건 함수를 호출하는 부분에서 함수의 리턴값을 바로 출력하거나 변수에 담아서 확인할 수 있습니다.

let 결과저장변수 = list.함수();
console.log(list.함수());

이렇게 말이죠.

  1. deleteLast함수를 만들 때

 

 return this.deleteAt(this.count-1);  

deleteAt함수에 이미 return이 포함되어 있는데 이 함수에 또 return을 포함하는 이유가 궁금합니다.

deleteLast함수에서 마지막 원소를 얻기 위해서 deleteAt함수를 호출하면 deleteAt은 삭제된 노드를 리턴합니다. 여기서 deleteLast는 deleteAt함수에서 얻은 노드를 다시 리턴해줘야하므로 return을 붙여준 것입니다. 삭제된 노드를 deleteLast함수를 호출한 곳에 넘겨주기 위한 것이죠.

두 질문의 내용으로 봤을 때 함수에 대해서 조금 더 공부해보시면 도움이 될 것 같습니다 ㅎㅎ

리턴값이 있는 함수와 없는 함수, 함수내에서 다른 함수를 호출하고 리턴하는 것을 공부하시고 연습해보시면 금방 익숙해질거라고 생각합니다.

궁금증이 해결되셨나요?😄

에러가 난 코드를 첨부해주시면 원인이 무엇인지 찾아보겠습니다 :)