C语音,函数padd的功能是调整pa指向的链表中结点的位置,使得所有x值为偶数的结点出现在链表的前半部,所有x值为奇数的结点出现在链表的后半部。

#include <stdio.h>
#include <stdlib.h>
typedef struct node
{int x;
    struct node *next;
}NODE;
NODE *padd(NODE *pa)
{
    NODE *p1,*p2,*p;
    p1=p2=pa;
    while(p1)
    {
        if(p1->x%2==0 && p1!=pa)
        {
            p=p1;p1=p1->next;
            p2->next=p1;
            p->next=pa;pa=p;
        }
        else {p2=p1;p1=p1->next;
        }
    }
    return pa;
}
int main(int argc, char *argv[]) {
    NODE a[10]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}},*ha=a,*p;
    int i;
    for(i=0;i<9;i++) a[i].next=&a[i+1];
    a[9].next=NULL;
    ha=padd(ha);
    p=ha;
    while(p)
        printf("%d ",p->x);p=p->next;
    putchar('\n');
    return 0;
}

运行结果:

posted @ 2020-11-10 09:02  yanglike111  阅读(310)  评论(0编辑  收藏  举报