SDUT 2120 数据结构实验之链表五:单链表的拆分
2018-03-25 21:00
393 查看
1.题目
数据结构实验之链表五:单链表的拆分Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
Input
第一行输入整数N;;
第二行依次输入N个整数。
Output
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
Sample Input
10
1 3 22 8 15 999 9 44 6 1001
Sample Output
4 6
22 8 44 6
1 3 15 999 9 1001
Hint
不得使用数组!
2.正确代码
#include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }; struct node *create(int n) { struct node *head,*tail,*p; head=(struct node*)malloc(sizeof(struct node)); tail=head; for(int i=1;i<=n;i++) { p=(struct node*)malloc(sizeof(struct node)); p->next=NULL; scanf("%d",&p->data); tail->next=p; tail=p; } return head; } void split(struct node *head) { struct node *h1,*t1,*h2,*t2,*p; int k1=0,k2=0; h2=(struct node*)malloc(sizeof(struct node)); h1=(struct node*)malloc(sizeof(struct node)); t1=h1; t2=h2; p=head->next; while(p->next) { if(p->data%2==0) { t1->next=p; t1=p; k1++; } else { t2->next=p; t2=p; k2++; } p=p->next; } if(p->data%2==1) { k2++; t2->next=p; t1->next=NULL; } else { k1++; t1->next=p; t2->next=NULL; } printf("%d %d\n",k1,k2); h1=h1->next; h2=h2->next; while(h1) { if(h1->next==NULL) printf("%d\n",h1->data); else printf("%d ",h1->data); h1=h1->next; } while(h2) { if(h2->next==NULL) printf("%d\n",h2->data); else printf("%d ",h2->data); h2=h2->next; } } int main() { int n; struct node *head; scanf("%d",&n); head=create(n); split(head); return 0; }
3.代码解读:
1.要明确好应该建立3个头,而不是建立一个。h2=(struct node*)malloc(sizeof(struct node)); h1=(struct node*)malloc(sizeof(struct node));
2.最后一个要单独判断,并且必须把另一个节点变为NULL,否则,会出现重复输出的问题,因为链表按照其结点的next值进行输出的,这种操作需要你明确!
if(p->data%2==1) { k2++; t2->next=p; t1->next=NULL; } else { k1++; t1->next=p; t2->next=NULL; }
相关文章推荐
- SDUT 2120 数据结构实验之链表五:单链表的拆分 解法2
- SDUT 2120-数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五-单链表的拆分
- SDUT 2120 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- 2120-数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- SDUTOJ 2120数据结构实验之链表五:单链表的拆分
- SDUT-数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- 2120 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 暑假集训第1天链表-数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分