/**
* Return an array of arrays of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
struct node{
char data[3];
struct node* next;
};
int** threeSum(int* nums, int numsSize, int* returnSize) {
int i,j,k;
struct node* head=NULL;
struct node* current=NULL;
struct node* temp=NULL;
for(i=0;i<numsSize-2;i++){
for(j=i+1;j<numsSize-1;j++){
for(k=j+1;k<numsSize;k++){
if((nums[i]+nums[j]+nums[k])==0){
**bool ans=check(&nums[i],&nums[j],&nums[k],head);**
if(ans==false){
temp=(struct node*)malloc(sizeof(struct node));
temp->data[0]=nums[i];
temp->data[1]=nums[j];
temp->data[2]=nums[k];
temp->next=NULL;
if(head==NULL){
head=temp;
current=head;
}
else{
current->next=temp;
current=temp;
}
}
else if(ans==true){
continue;
}
}
}
}
}
return head;
}
**bool check(int a,int b,int c,struct node* head){**
while(head!=NULL){
if(head->next[0]==a && head->next[1]==b && head->next[2]==c){
return false;
}
else{
return true;
}
head=head->next;
}
}
sagen ~~~~ Ich glaube, ich etwas über Referenzparameter bin hier fehlt ~~~~ kindly Hilfe .... Danke im Voraus :)Kompilierungsfehler „widersprüchliche Typen für‚Check‘“
Head = head-> next wird nie aufgerufen (das ist nicht der Fehler) –
Verschieben Sie die Implementierung von "check" über Ihre Implementierung von 'threeSum' oder erstellen Sie Ihre Funktion ordnungsgemäß. Wenn Ihr Compiler * Sie * nicht vor einer "impliziten Deklaration" der Funktion 'check' warnt, die' int' zurückgibt, müssen Sie Ihre Warnstufen auf pedantisch setzen. Sobald Sie die * real * -Deklaration für 'threeSum' verfügbar gemacht haben, sollte sich ein ganz anderer Fehler (Parametertypkonflikt) ergeben, aber das ist ein anderes Problem. – WhozCraig