0
는
세 가지를 어떻게해야되는 함수입니다 :값이 N 인 모든 노드를 삭제 한 후 링크 된 목록의 앞을 가리 킵니까? 다음
1.Delete 연결리스트에서 값 N (char key
)의 모든 노드 (값은 항상 하나의 문자 문자입니다.)
2. 링크리스트의 선두를 돌려줍니다.
3. 모든 것은 반복적으로 수행되어야합니다.
node* deleteN(node* head, char key)
{
node* prev;
node* cur;
if (head == NULL)
return NULL;
prev = head;
cur = head->next;
if (head->data == key && head->next != NULL)
{
node* temp = head;
head = temp->next;
free(temp);
}
if (cur->data == key && cur->next == NULL)
{
free(cur);
prev->next = NULL;
}
head->next = deleteN(head->next, key);
return head;
}
내 문제는 내가 잘 노드를 삭제하고 노드가리스트의 마지막 노드 인 경우 당신은 내가 특별한 경우를 볼 수 있습니다입니다. 그러나 머리를 되 돌리면 머리가 아무 것도 가리키지 않아 링크 된 목록으로 다른 일을하려고 할 때 충돌이 발생합니다.
내 질문은 : 값 N의 모든 노드를 삭제 한 후 함수의 끝에서 링크 된 목록 (시작한 곳)의 맨 앞에 머리를 갖다 대고이 포인터를 반환 할 수 있습니까?
는 각각의 삽입/삭제 작업에/업데이트를 저장 보관하십시오. –