#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("%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 l1,linklist &l2,linklist &l3) //拆分函数
{
linklist p1,p2,p3;
l2=(linklist)malloc(sizeof(lnode));
l2->next=NULL;
l3=(linklist)malloc(sizeof(lnode));
l3->next=NULL;
p1=l1->next;
p2=l2;p3=l3;
int n=1;
while(p1&&n<=1000)
{
if(n%2==1)
{
p2->next=p1;
p2=p1;
p1=p1->next;
}
else if(n%2==0)
{
p3->next=p1;
p3=p1;
p1=p1->next;
}
n++;
}
p2->next=NULL;
p3->next=NULL;
}
void main() //主函数
{
linklist l,l2,l3;
int n;
printf("请输入链表l的元素个数:\n");
scanf("%d",&n);
printf("请输入%d个元素:\n",n);
createfifo(l,n);
chaifen(l,l2,l3);
printf("链表l2为:\n");
print(l2);
printf("\n");
printf("链表l3为:\n");
print(l3);
}