נשלח בתאריך: 07 January 2010 בשעה 15:06 | | IP רשוּם
|
|
|
|
ואם זה מערך של מצביעים שאני שולחת לפונקציה?
זה הקטע קוד הבעייתי:
void merge(int list1[],int size1,int list2[],int size2,int list3[],int*p_ar1[],int*p_ar2[],int*p_ar3)
{
int i1,i2,i3;
i1=0;i2=0;i3=0;
/* while both lists are non-empty */
while ((i1<size1)&&(i2<size2))
{
if (list1[i1]<list2[i2])
{
list3[i3]=list1[i1];
p_ar3[i3]=&(p_ar1[i1]);
i1++;
i3++;
}
else
{
list3[i3]=list2[i2];
p_ar3[i3]=&(p_ar2[i2]);
i2++;
i3++;
}
}
/* copy remainder of list1 */
while (i1<size1)
{
list3[i3]=list1[i1];
p_ar3[i3]=&(p_ar1[i1]);
i1++;
i3++;
}
/* copy remainder of list2 */
while (i2<size2)
{
list3[i3]=list2[i2];
p_ar3[i3]=&(p_ar2[i2]);
i2++;
i3++;
}
return;
}
void merge_sort(int arr[],int size,int*p_arr[])
{
int temp[N];
int*temp_p[N];
int mid,i;
if (size<2)
return;
else
{
mid=size/2;
merge_sort(arr,mid,p_arr);
merge_sort(arr+mid,size-mid,p_arr+mid);
merge(arr,mid,arr+mid,size-mid,temp,p_arr,p_arr+mid,temp_p);
}
for (i=0;i<size;i++)
{
arr=temp;
p_arr=temp_p;
}
return;
}
|