이 질문이 있습니다. L의 각 노드가 정수 키를 저장하고 L의 다음 노드를 가리키는 포인터가 단일 링크 된 목록 L이 제공됩니다. 마지막 노드에는 다음 노드는 NULL로 설정됩니다. 목록의 마지막 노드가 아닌 키 k를 저장하는 노드에 포인터 ptr이 제공됩니다. 주어진 ptr 목록에서 k를 지우는 방법을 보여줍니다. k가 들어있는 노드에 대한 포인터입니다; 귀하의 알고리즘은 시간 복잡성 O (1)을 가져야합니다. 즉, 목록의 길이와 독립적이어야합니다.단일 링크 된 목록에서 노드 삭제
두 배로 연결된 목록이있는 경우 O (1) 시간 복잡도 인 노드 을 삭제할 수 있음을 알고 있습니다. 단 하나의 링크 된 노드에서 노드를 삭제할 수있는 방법을 알고 있습니다. 명부? 노드 바로 앞에있는 노드를 찾으려면 모든 목록을 반복해야합니까? > B - -> C -
나는이 할당 것 같다. 그렇다면 속임수를 쓰지 마세요. 과정 자료를 검토하면 답이 간단해질 것입니다. 그것은 3 줄의 C 코드와 비슷합니다. 코드에 _ 특정 _ 문제가 없으면 답을주지 않겠습니다. –
이것은 불가능합니다. – aschepler
@StefanoSanfilippo 처음에는 과제가 아니며 다음 주에 중간 고사가 있었고 몇 가지 추가 문제를 해결하려고했습니다. 두 번째로 문제를 해결하지 않으면이 질문을 게시하지 않겠습니다.이들은 내 생각 : 만약 내가 두 번 링크 된 목록을 가지고, 노드에 포인터가있는 요소를 삭제하려면, 난 그냥 다음과 같이 할 수 있습니다 : ptr-> previous-> next = ptr-> next; 그러나 이것은 단 하나 연결된 목록에있는 경우가 아닙니다! –