看来楼主还不太熟悉这些题目的编程思想吧。
1,一个典型的归并排序中的归并动作;
2,用三个指针分别执行上一,当前,下一个,进行逆转即可猛手。
代码:
//1st
void merge(int a[], int b[], int c[], int alen, int blen)
{
int i = 0, j = 0, k = 0;
while(i <= alen &悔知笑& j <= blen)
if(a[i] < b[j])c[k++] = a[i++];
else c[k++] = b[j++];
while(i <= alen)c[k++] = a[i++];
while(j <碧含= blen)c[k++] = b[j++];
}
//2nd
Node* reverse(Node* head)
{
Node *pre = NULL, *cur = head, *next = head->next;
while(next != NULL)
{
cur->next = pre;
pre = cur;
cur = next;
next = next->next;
}
return cur;
}