预设代码中建立了一个带有头结点的单向链表。
编写一个函数,将链表中数值域的数值为偶数的节点移到链表尾部。
如果偶数节点多于一个,则连接到链表尾部节点的先后顺序按原来的顺序。
结构的定义:
struct node
{
int num;
struct node *next;
}
typedef struct node NODE;
函数的原型:NODE *MoveNode( NODE *head )。
其中:参数 head 是单向链表的头指针。函数的返回值是单向链表的头指针。
运行时输入有一行,输入各个节点的数值域的值,输入-1时结束。
例如链表节点数值成员值为:15 6 7 21 2 13 24 -1 //-1 是节点输入结束标志
输出:15 7 21 13 6 2 24
NODE *MoveNode( NODE * head){
NODE *p,*q,*f,*p1,*q1,*I;
p=head->next,q1=head,p1=q1->next;
f=q1->next;
while(p!=NULL) { if(p->no%2!=0) f=p; p=p->next; }
q=f->next,I=f;
while(p1!=f){
if(p1->no%2==0){
q1->next=p1->next;
I->next=p1;
I=p1;
p1->next=q;
p1=q1->next;
}
else q1=q1->next,p1=p1->next;
}
return head;
}
分段输出就完事了,或者你可以end后面加一个节点。
楼上莫非都是百丽宫学子?