Delete Node in a Linked List(체인 테이블의 노드 삭제)
2131 단어 LetCode 문제집
Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4after calling your function.(한 체인 테이블을 1->2->3->4로 가정하고 값이 3인 노드를 지정하면 기능 함수를 호출한 체인 테이블은 1->2->4로 변해야 한다)
1. 개인 분석은 이 삭제 노드의 기능을 실현하기 쉽다. 직접 표두에서 지정된 노드를 하나하나 찾아보면 삭제할 수 있다. 또한 여기서 꼬리 노드가 목표 노드로 삭제될 수 없기 때문에 판단해야 한다.앞의 해결 방법은 제목의 뜻에 부합되지 않는다. 사실 이 문제의 함수 매개 변수는 목표 노드의 바늘만 정하고 체인 표의 머리 바늘이 없기 때문에 이 문제는 목표 노드의 앞 노드의 바늘이 없으면 노드의 삭제를 어떻게 실현해야 하는지를 고찰하는 것이다.이 문제는 앞서 검지Offer에서 비슷한 제목을 보았는데, 책에서 소개한 방법은 목표 노드의 앞 노드를 가리키는 지침이 없지만 목표 노드의 값을 목표 노드에 부여할 수 있어 간접적으로 목표 노드를 삭제하고 체인 시계가 끊어지지 않도록 하는 것이다.모두 두 단계로 나뉜다. 첫째, 목표 노드node 뒤 노드의 값을 목표 노드에 부여한다.둘째, 목표 노드의next 바늘을 아래 노드를 가리키고node->next를 삭제합니다.
2. 개인적 해결 방법
void deleteNode(struct ListNode* node)
{
struct ListNode *pNodeNext = node->next;
node->val = pNodeNext->val;
node->next = pNodeNext->next;
free(pNodeNext);
}
3. 개인 총결산
PS: