#include<stdio.h>
#include<stdlib.h>
typedef struct lnode //定义链表
{
int data;
struct lnode *next;
}lnode,*linklist;
void createfifo(linklist &l,int n) //创建先进先出链表
{
int i;
linklist p,q;
l=(linklist)malloc(sizeof(lnode));
q=l;
for(i=0;i<n;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("\n%d",&p->data);
q->next=p;
q=p;
}
q->next=NULL;
}
void print(linklist l) //输出函数
{
linklist p;
p=l->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
void chaifen(linklist l,linklist &l2,linklist &l3) //拆分函数
{
l2=(linklist)malloc(sizeof(lnode));
l3=(linklist)malloc(sizeof(lnode));
l2->next=NULL;
l3->next=NULL;
linklist p1=l->next;
linklist p2=l2,p3=l3;
while(p1)
{
if(p1->data%2==0)
{
p2->next=p1;
p2=p1;
p1=p1->next;
}
else
{
p3->next=p1;
p3=p1;
p1=p1->next;
}
}
p2->next=NULL;
p3->next=NULL;
}
void main() //主函数
{
linklist l,l2,l3;
int n;
printf("请输入n:\n");
scanf("%d",&n);
printf("请输入%d个值:",n);
createfifo(l,n);
chaifen(l,l2,l3);
printf("偶数链表为:");
print(l2);
printf("\n");
printf("奇数链表为:");
print(l3);
printf("\n");
}