사용자의 입력 인 연결된 목록에서 어떤 값과 중복 된 값을 식별할지 알고 싶습니다. 그리고 이것은 내가 그것을 위해 쓴 코드 :연결된 목록의 중복 값 식별 C++
int count;
int compare, compare2;
for (p = first; p != NULL; p = p->next){
compare = p->num;
for (j = first; j != NULL; j = j->next){
if (compare == j->num){
compare2 = j->num;
count++;
}
}
if (count > 1){
cout << "There are at least 2 identical values of: " << compare2 << " that repeat for: " << count << "times" << endl;
}
}
는 기본적으로 그것의 아이디어는 내가 처음 루프에서 첫 번째 요소를 가지고 두 번째 루프의 모든 요소를 비교하고 경우가있는 경우 계산이었다 그 (것)들의 유사 하, 결과를 인쇄하십시오 - 그 후에 다음 성분을 가지고 간다.
그러나 출력은 모든 요소이며 정확하게 계산되지 않습니다. 나는 그것을 조정하는 방법에 그냥 길을 잃었 어.
두 개의 루프에서 동일한 p 변수를 사용했지만 루프를 반복하려는 동일한 목록이므로 시도했지만 입력이 끝나자 마자 .exe가 실패했습니다.
중복 값을 삭제하는 기능이있는 곳에서 몇 가지 예를 보았지만 비교 부분은 while 루프와 함께 실행됩니다. 궁금한 점은 무엇입니까?
디버거를 사용하여 코드를 한 줄씩 단계별로 실행하여 실제로 문제가 발생하는 경우 그것? –
O (n^2) 루프를 작성하는 대신에'std :: map'를 사용하면 쉽게 할 수 있습니다. –
PaulMcKenzie
'count'를 0으로 초기화하지 않았습니다. – PaulMcKenzie