单链表的拆分

时间:2021-09-13 13:25:13
【文件属性】:

文件名称:单链表的拆分

文件大小: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; }


网友评论