2013-04-03 3 views
0

내가 "수동 알고리즘 디자인"을 읽고있다 그리고 그것은 기본 목록에있는 세 개의 작업 , 삽입삭제를 검색하는 것을 말한다. 그런 다음 C에서 알고리즘을 설명하고 계속해서 찾고있는 노드를 찾으면 (노드의 데이터를 검색 한 노드와 비교하여) 노드를 반환합니다 (따라서 노드 아래에 연결된 모든 노드). 찾으려는 항목을 찾지 못하면 NULL을 반환합니다.왜 연결된 목록을 검색합니까?

내 질문에 우리가 찾고있는 것이 무엇인지 알면 왜 검색합니까? 그 이유가 목록에 포함되어 있는지 확인하는 것뿐이라면 부울 함수가 실제로 원하는 것을 "포함"하지 않는 이유는 무엇입니까?

+1

검색하는 것이 임의의 검색 술어를 사용하는 것을 포함한다고 생각합니다. 즉 특정 기준을 만족하는 목록에서 첫 번째 값을 찾습니다. 평등은 단 하나의 가능한 술어입니다. – Pubby

+2

'contains' 함수는 목록을 검색하지 않으면 어떻게 작동합니까? – arootbeer

+0

@arootbeer 그것은 목록을 검색해야하지만, 그 의도는 다릅니다. "Search"는 우리가 찾고있는 노드 또는'null'을 반환하는 반면'contains '는 문제의 데이터가 목록에 있는지 여부를 간단하게 말해줍니다. – mjgpy3

답변

2

노드에는 검색하는 값 이외의 정보가 더 많이 포함될 수 있습니다. 파일 시스템을 모델링하는 목록을 상상해보십시오. 이름으로 파일을 검색하지만 가져온 노드에는 파일 이름, 파일 크기, 마지막으로 수정 된 시간, 파일 소유자, 액세스 권한 및 기타 데이터가 포함될 수 있습니다.

0

때로는 특정 작업을 위해 특정 노드가 필요합니다. 노드 자체와 그 내용은 두 개의 다른 논리 엔티티임을 기억하십시오.

0

부울 함수 "포함"은 우리가 원하는 모든 것일 수 있습니다. 우리가 갖고 있지 않은 데이터 세트를 검색하려고하지만 ID 번호가 있다면 어떻게 될까요?

일반적인 예로서 교과서의 예를 살펴보십시오. 부울을 검색하고 다른 값을 기반으로 레코드를 검색하는 것은 둘 다 서로 다른 출력으로 동일한 작업을 수행합니다.

1

일반적으로 노드가 노드를 검색하여 작업을 수행합니다. 아마도 기존 노드에 새 값을 설정하거나, 노드 뒤의 모든 것을 삭제하거나, 해당 노드 다음에 무언가를 삽입하려고합니다. 목록에서 특정 순서를 유지하면 검색 기능의 의미가 특정 값보다 큰 첫 번째 항목을 찾기 위해 확장 될 수 있습니다.

0

는 간단한 예를 고려 ...

당신이 다음 목록에 (년) 자신의 나이에 사람과 저장을 요청하고 프로그램이 모든 시대의왔다 얼마나 많은 사람들이 히스토그램 (보여준다 쓰기) 아니면 지난 해에 얼마나 많은 사람들이 21 세가되었는지를 보여줄 수 있습니다.

이러한 프로그램에서는 목록에 어떤 결과가 나타날지 미리 알 수 없습니다. 그리고 그것이 당신이 그것을 검색하는 이유입니다.

0

링크 된 목록 구조로의 유일한 입력은 head 노드입니다. 목록의 특정 노드로 가려면 head 노드를 통해 다음 노드로, 다음 노드로, 그리고 마지막으로 대상 노드로, 따라서 검색을 반복해야합니다. 따라서 contains은 정확히 동일한 작업을 수행합니다. 찾으려는 노드에 equals 인 노드를 검색하십시오.

관련 문제