2017-04-14 1 views
-3

내 while 루프는 내 연결된 목록에서 작동하지 않지만 for 루프는 for 루프를 사용하여 연결된 목록을 인쇄합니다. 하지만 "n"을 배치 할 정수가 필요합니다. 그리고 나는 이것을하기 위해 노력하고 있습니다. 링크 된 목록의 요소를 계산하여 while 루프가 필요합니다. 이 문제가 해결되면 처음부터 for 루프가 필요하지 않을 것이므로 링크 된 목록의 요소를 계산할 때 작동 시키려고합니다.while 루프는 내 연결된 목록에서 작동하지 않습니다

int count = 0; 
    Hand *crdNode = head; 

    while (crdNode != NULL) 
    { 
     crdNode= crdNode->cardPtr; 
     count++; 
    } 
    cout<<endl; 
    return count; 

이것은 모두 main이 아닌 별도의 소스 파일에있는 함수 내에 있습니다. 어떤 도움을 주시면 감사하겠습니다.

작업 루프 :

Hand *crdNode = head; 

    for (int i = 0; i < n; i++) 
    { 
     cout<< crdNode ->card<<endl; 
     crdNode= crdNode->cardPtr; 
    } 
    cout<<endl; 

채우기 목록 기능

if (head == NULL) 
    { 
     crdNode = new Hand; 
     crdNode ->card = t; 
     temp = crdNode; 
     head = crdNode; 

    } 
    else 
    { 
     crdNode = new Hand; 
     crdNode -> card = t; 
     crdNode -> cardPtr = head; 
     head = crdNode; 
     crdNode -> cardPtr = NULL; 
    } 
+0

어떻게 루프 작업 그래서 우리는 우리 자신을 위해 비교할 수 포함 어떻습니까? – John3136

+0

할거야, 고마워. –

+0

마지막 요소의'cardPtr'가'NULL'이 아니므로 while 루프는 마지막 요소 뒤에 멈추지 않습니다. 리스트의 끝에 새로운 원소를 추가 할 때'cardPtr'을'NULL'에 할당해야합니다. – Rogus

답변

0

그냥 루프는 다음과 같이 진행하는 동안 'n'.The을 삽입 할 while 루프에서 하나 개의 조건을 추가

while(crdNode!=NULL) 
{ 
    if(position==count) 
    { 
     //insert code 
    } 
} 
1

"채우기 목록"에 문제가 있습니다.

if (head == NULL) 
{ 
    crdNode = new Hand; 
    crdNode ->card = t; 
    crdNode -> cardPtr = NULL; // Add this line to set the next pointer 
    // temp = crdNode;    Remove this line - temp isn't used 
    head = crdNode; 

} 
else 
{ 
    crdNode = new Hand; 
    crdNode -> card = t; 
    crdNode -> cardPtr = head; 
    head = crdNode; 
    // crdNode -> cardPtr = NULL; Remove this line - it destroys the list 
} 
코드는 다음 다시 작성과 같이 간단하게 할 수

:

crdNode = new Hand; 
    crdNode -> card = t; 
    crdNode -> cardPtr = head; 
    head = crdNode; 
+0

위의 내 의견을 읽어보십시오. 귀하의 단순화 된 버전은 내가 코멘트에 설명 된 것과 정확히 동일합니다. 이것은 두 가지 요소 이상을 가질 수 없으며 메모리 누출을 초래합니다. 이전에 추가 된 각 요소는 새 요소로 대체되고 이전 요소는 아무 것도 가리 키지 않습니다! – Rogus

+0

@ 가거 - 틀렸어. 이 코드는 목록의 맨 앞에 새 요소를 삽입합니다. – 4386427

+0

@Rogus - 실행중인 버전을 보려면 http://ideone.com/7lQ14O를 참조하십시오. – 4386427

관련 문제