2017-02-20 6 views
-1

두 세트를 결합하고 교차해야하는 프로젝트에서 작업하고 있습니다. 더미 노드가있는 각 집합에 대해 연결된 목록을 사용하고 있습니다. 이것은 내 Sets LL 클래스를 초기화하는 방법입니다.더미 노드를 사용하는 링크 된 목록 구현

public Set() { 
top = new Node(Integer.MIN_VALUE, new Node(Integer.MAX_VALUE, null)); 
} //end Set 

그리고 이것은 항목을 삽입하는 방법입니다.

public void insert(int item) { 
Node prev = top; 
Node curr = top.next; 

while(curr.item < item) { 
    prev = curr; 
    curr = curr.next; 
} 
prev.next = new Node(item, curr); 
size++; 
} // insert 

이제 두 세트의 결합 또는 교차를 얻지 못했습니다. 이것은 내가 교차로에서 생각하고있는 것입니다.

public Set intersection(Set setB) { 
Set setC = new Set(); 
//loop over both sets and if both have same value add it otherwise 
// get to the next node in both sets. 

내 질문은 논리적으로 교차 의사 코드로 맞습니까? 내 유니 코드 의사 코드는 우스운 이야기입니다. 아무도 날이 문제를 안내 할 수 있습니까?

+0

불행히도 나는 이것을 사용하지 않고있다. 내 프로젝트는 LL @Abhijith를 사용하여 내 자신의 구현을 기반으로합니다. – Saad

+0

어떻게해야합니까? @Abhijith – Saad

+0

그것은 단순한 목록 일뿐입니다. @Abhijith – Saad

답변

0
당신의 아이디어는이 간단한 입력에 실패합니다

:

1 2 
2 3 

아이디어 :

//loop over both sets and if both have same value add it otherwise 
// get to the next node in both sets. 
  • 첫 번째 반복 - 우리는 12, 같은 값이 아닌, 그래서 우리는에 도착 다음 세트 모두
  • 두 번째 반복 - 우리는 23을 가지지 만, 그래서 다음
  • 종료에 도착

당신은 실제로 필요한 것 :

불일치에
  • 는, 낮은 요소 일치에
  • 만 목록을 사전 결과에 추가하고 모두 사전 (또는 동일한 값이 반복되는 한 중복을 제거하고 둘 다 계속 전진하십시오)

불일치에

  • 는, 하나의 낮은를 추가하고 하위 요소 일치에
  • 포함 된 목록을 사전에 추가하고 모두 사전 (또는 모두로 발전 유지 : 노동 조합에 대한

    는 생각은 매우 유사합니다 같은 값이 반복되는만큼 오랫동안)

+0

두 번째 요점을 설명해 주시겠습니까? 나는 두 개의 if 문을 가지며 하위 요소로 목록을 전진시킨다. 그 다음에는 목록을 진행시키고 그 요소를 추가하는 else 문이있다. @ JiriTousek – Saad

+0

"둘째"것은 어느 것입니까? 노동 조합? –

+0

나는 노조에 대해서 이야기하고 있었다. – Saad