算法思想:
①新建链表B,将负数移到B中,最后接上;
②遍历一遍A,找到第一个负数。
//算法思想:①新建链表B,将负数移到B中,最后接上
// ②遍历一遍A,找到第一个负数
//5 2 -6 1 -2 3 5 4
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList function(LinkList A){
if(!L)
return NULL;
LinkList B=(LinkList)malloc(sizeof(LNode));
LinkList pre=A,p=A->next;
while(p){
if(p->data < 0){
pre->next=p->next; //保证链表不断开
p->next=B->next;
B->next=p; //头插到B
p=pre->next; //p返回到下一个数
}
else{
pre=pre->next;
p=p->next;
}
}
pre->next=B->next; //接上B表的第一个元素
free(B);
return pre->next; //返回负数的第一个数
}