【文件属性】:
文件名称:单链表的拆分
文件大小:1KB
文件格式:C
更新时间:2021-09-13 13:25:13
C语言 链表
C语言代码参考,单链表的拆分
#include
#include
struct node
{
int data;
struct node * next;
};
struct node * creat(int n)
{
struct node * head,* p;
head=(struct node *)malloc(sizeof(struct node));
head->next=NULL;
int i;
for(i=1;i<=n;i++)
{
p=(struct node *)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
}
return head;
}
struct node * split(struct node * head1)
{
int c1=0;
int c2=0;
struct node * head2,* p,* q;
head2=(struct node *)malloc(sizeof(struct node));
head2->next=NULL;
p=head1->next;
head1->next=NULL;
q=p->next;
while(p)
{
if(p->data%2==0)
{
p->next=head1->next;
head1->next=p;
c1++;
}
else
{
p->next=head2->next;
head2->next=p;
c2++;
}
p=q;
if(q)
q=q->next;
}
printf("%d %d\n",c1,c2);
return head2;
}
void show(struct node * head)
{
struct node *p;
p=head->next;
while(p)
{
printf("%d",p->data);
if(p->next)
printf(" ");
p=p->next;
}
printf("\n");
}
int main()
{
int n;
struct node * head1,* head2;
scanf("%d",&n);
head1=creat(n);
head2=split(head1);
show(head1);
show(head2);
return 0;
}