在带头结点的单向整数链表L={a1,a2,…an}中,编写一个算法,链表拆分成一个奇数链表和一个偶数链表,并分别输出。

  • Post author:
  • Post category:其他



#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”);


}



版权声明:本文为liiuyizeliuyize原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。