一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的 相对顺序 比如: input: 1,15,-12,9,-5,7 ans: -12,-5,1,15,9,7,要求时间复杂度O(N),空间O(1)。


 
问题是在太不清楚了! –  Alan.Tan 6年前  
问题是在太不清楚了!

1个回答

#include <stdio.h>
#include <malloc.h>
struct Node
{
int val;
Node* next;
};
int main()
{
unsigned int num=0;
int temp,count;
Node *pf,*pl;
while(scanf("%d",&temp))
{
if(temp<0) printf("%d ",temp);
else if(num!=0)
{
pl->next=(Node*)malloc(sizeof(Node));
pl=pl->next;
pl->val=temp;
num++;
}
else {pf=pl=(Node*)malloc(sizeof(Node));pl->val=temp;num++;}
}
for(count=0;count<num;count++)
{
pl=pf->next;
printf("%d ",pf->val);
free(pf);
pf=pl;
}
pl=pf=NULL;
getchar();getchar();getchar();
}

编译后在命令窗口下输入以一个不是数字的输入结束循环(如果应用中的话读到EOF,scanf()函数也会返回0结束循环;)