/ / नियंत्रण गैर-शून्य फ़ंक्शन के अंत में पहुंचता है [बंद] - सी ++

नियंत्रण गैर-शून्य फ़ंक्शन के अंत में पहुंचता है [बंद] - सी ++

मैं Hackerrank पर एक प्रश्न कर रहा हूं, लेकिन जब भी मैं अपने कोड को संकलित करता हूं तो यह दिखाता है कि नियंत्रण गैर-शून्य फ़ंक्शन के अंत में पहुंचता है। मेरे स्रोत कोड क्या हैं:

   /*
Compare two linked lists A and B
Return 1 if they are identical and 0 if they are not.
Node is defined as
struct Node
{
int data;
struct Node *next;
}
*/
int CompareLists(Node *headA, Node* headB)
{

if(headA==NULL&&headB==NULL)
{
return 1;
}
else if( headA!=NULL&&headB!=NULL)
{
while(headA!=NULL&&headB!=NULL)
{
if(headA->data==headB->data)
{
headA=headA->next;
headB=headB->next;
}
else
{
return 0;
exit (0);
}
return 1;
}
}
else
{
return 0;
}
}

कृपया बताएं कि इसे कैसे सुधारें और अग्रिम धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

मैं यहाँ पुनर्नवा के साथ दो समस्याएँ देख सकता हूँ। पहला सरल एक:

  {
return 0;
exit (0);
}

The exit कॉल पहुंच से बाहर है। (वह लाइन लगभग निश्चित रूप से एक गलती है ।मैं "किसी भी अच्छे कारण के बारे में सोच नहीं कॉल कर सकते है exit क्या आप वहां मौजूद हैं।)

अगले और अधिक जटिल एक ... संकलन त्रुटि का मूल कारण है:

while(headA!=NULL&&headB!=NULL)
{
if(headA->data==headB->data)
{
headA=headA->next;
headB=headB->next;
}
else
{
return 0;
exit (0);
}
return 1;
}

देखो, जहां return 1; है. यह पाश के अंदर है।

तो, क्या होता है अगर headA != NULL && headB != NULL झूठी करने के लिए मूल्यांकन करता है? उस मामले में, पाश शरीर के साथ return 1; अंत में छोड़ दिया है ... और आप विधि के अंत तक पहुंचते हैं।

इसलिए संकलन त्रुटि।

मुझे संदेह है कि "फिक्स" को स्थानांतरित करने के लिए है return लूप के बाद करने के लिए, लेकिन मैंने "आपके कोड के तर्क को समझने की कोशिश नहीं की, ताकि गलत "फिक्स" हो सकता है।


जवाब के लिए 0 № 2

इस कोड के निष्पादित होने के बाद क्या होता है?

if(headA->data==headB->data)
{
headA=headA->next;
headB=headB->next;
}

... यदि headA->next == NULL या headB->next == NULL?