Run time error(sigsegv)

// Following is the node structure
/**************
class ListNode{
public:
int data;
ListNode* next;
};

ListNode* newListNode(int data){
ListNode *temp = new ListNode;
temp->data = data;
temp->next = NULL;
return temp;
}
*********/
int arr[10000]={0};
int i=0;
ListNode
AlterList(ListNode
head1, ListNode
head2) {
ListNode
l3=new ListNode;
ListNode
temp1=head1;
ListNode
temp2=head2;
while(temp1->data!=-1)
{
while(temp2->data!=-1)
{
if(temp1->data==temp2->data)
{
cout<data<<" ";
arr[i]=temp1->data;
i++;
}
else
{
temp2=temp2->next;
}
}
temp1=temp1->next;
}
while(arr[i]!=0){
if(arr[i]%2!=0)
{
l3=newListNode(arr[i]);
}
i++;
}
while(arr[i]!=0){
if(arr[i]%2==0)
{
l3=newListNode(arr[i]);
}
i++;
}
return l3;
}