2014-04-10 2 views
0

나는 노드를 사용하여 연결된 목록을 가지고 있으며 숫자를 추가 할 때 메서드를 정렬하는 메서드가 있습니다. 지금정렬 된 연결 목록 (숫자)에서 빈도를 계산하는 방법 Java

class Node { 

    int value; 
    int freq; 
    Node next; 
} private Node root; 

: 내가 출력 정렬 된 목록 번호를 추가 완료 한 때, 문제는 내가 너무 아마도 내가 가지고있는 노드 방법이 하나, 숫자가 반복 횟수를 계산해야한다는 것입니다 정렬 된 목록 값을 비교하는 숫자의 빈도를 저장하기 위해이 코드를 시도했습니다.

public void frequencies(){ 
    Node neew=root; 
    Node current = neew.next; 
    int x=0; 
    while (neew!=null) { 
     if(neew.value==current.value){ 
      neew.freq=x+1;  
     } 
     else{ 
     neew=neew.next; 
     current=current.next; 
     } 
    } 

} 

코드가 작동하지 않습니다 (분명히) 메소드가 반복 될 때 코드가 작동합니다.

나는이 물건에 새롭다. 그래서 내가 잘못하고있는 것을 정확히 모른다. 너희들이 나를 도와 줄 수 있니?

+0

'value'는 노드별로 고유하거나 두 개의 노드가 동일한 'value'를 가질 수 있습니까? –

+0

동일한 값을 가진 2 개의 노드를 가질 수 있습니다. – elunap

답변

1

같은 값을 가진 두 개의 노드가있는 것처럼 보입니다. 이 경우, 노드가 빈도를 저장하는 데 잘못된 장소라고 생각합니다. 왜 노드는 형제의 내용을 알고 있습니까? 대신, 당신은 목록에이 질문을해야합니다. 이를 저장하는 데 유용한 데이터 구조는 Map입니다. 지도 키를 Node.value으로하고지도 값을 빈도로 설정하십시오.

모든 노드를 반복 한 다음 Map.value += 1을 다시지도에 넣습니다. 그렇다면 Map.get(value);으로 값의 빈도를 알아낼 수 있습니다.

0

당신이 그것을하고있는 방법은 정말 가서 당신이 요소를 삽입 할 때 주파수의

를 추적하려면 뭔가를 시도하는 좋은 방법이 아니다. 다른 = 0

가 중복 요소가 있다면, 그때 당신은 같은 값을 가지고 해당 요소의 첫 번째 인스턴스를 찾을 때 새로운 요소, 설정 주파수를 만약

: 약

2 예 고려 연결된 목록에서 새 요소의 freq = old element.frequency + 1을 설정 한 다음 diff 값이있는 요소에 도달 할 때까지 모든 이전 요소를 계속 업데이트하십시오 (이것은 정렬 된 연결된 목록을 기반으로합니다. 지금 작업중입니다.)