링크 된 목록을 연구 중입니다. 이 책에서 문제를 연습하고 있습니다. 코딩 인터뷰 크래킹. 나는 그 노드를 삭제하기로 ....노드가 반환 유형으로 사용되는 함수를 사용하여 연결된 목록에서 노드를 삭제하는 방법
class Node {
Node next = null;
int data;
public Node (int d) {
data = d;
}
Node deleteNode(Node head, int d) {
Node n = head;
if (n.data == d) {
return head.next;
}
while (n.next != null) {
if (n.next.data == d) {
n.next = n.next.next;
return head;
}
n = n.next;
}
return head;
}
내가 3 개 질문을했습니다 ... 나는 저자는 다음과 같은 코드를 구현하려고하는 방법을 이해 할 수없는, 붙어
질문 1 - deleteNode 함수의 인수로 전달할 내용은 무엇입니까? 노드 헤드는 어떤 용도로 사용됩니까? int d가 어떤 용도로 사용됩니까? 노드가 삭제하려는 노드의 헤드입니까? 아니면 우리의 머리 노드입니까? 내 말은,이 방법을 다음과 같이 사용하기로되어있는 것입니까?
"Name of node".deleteNode("Node name", "integer value");
"노드 이름"이 삭제하려는 노드입니다 ... 맞지 않습니까?
질문 2 - 코드에서 deleteNode 함수는 데이터 만 사용하여 삭제하려는 노드의 ID를 확인합니다. 예 : if (n.data == d). 그게 정상적인 연습인가요? 데이터 값과 동일한 정수를 포함하는 2 개의 다른 노드가 있으면 어떻게됩니까? 노드 이름을 사용하여 삭제할 노드를 지정하면 안됩니까?
질문 3 - 함수 deleteNode는 노드를 반환합니다. 왜 그런가요? 노드를 삭제하기 위해서, 우리는 단지 3 가지를해야합니다 ... 우선, 삭제하고 싶은 노드의 포인터의 링크를 해제하십시오. 둘째, 이전 노드의 포인터를 삭제하고자하는 노드의 포인터가 원래 가리키는 노드에 놓습니다. 셋째, 목록에 링크되어 있지 않은 노드를 삭제하십시오. 반환 유형 노드가 여기에 제공되는 목적이 무엇인지 모르겠다.
deleteNode 함수를 호출 할 때 정수 인수 만 전달합니다. 코드에서 볼 수 있듯이 2 개의 인수가 필요합니다 ... 설명? – satnam
이례적인 일이므로 잊어 버리십시오. 머리는 실제로 그러한 호출에서 myList라고 예상 될 것이다. – Dici