单链表的拆分
来源:互联网 发布:intouch10.5软件下载 编辑:程序博客网 时间:2024/05/18 16:55
数据结构实验之链表五:单链表的拆分
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
输入
第一行输入整数N;;
第二行依次输入N个整数。
输出
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
示例输入
10
1 3 22 8 15 999 9 44 6 1001
示例输出
4 6
22 8 44 6
1 3 15 999 9 1001
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
输入
第一行输入整数N;;
第二行依次输入N个整数。
输出
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
示例输入
10
1 3 22 8 15 999 9 44 6 1001
示例输出
4 6
22 8 44 6
1 3 15 999 9 1001
<pre name="code" class="cpp"># include <stdio.h># include <stdlib.h>struct node{int data;struct node *next;};typedef struct node Node;Node* create_link_list(int len);int get_link_list_length(Node*L);void split_link_list(Node*L1,Node*L2,Node*L);void display_link_list(Node*L);int main(){int n,len,len1,len2;Node* L,*L1,*L2;scanf("%d",&n);/*区分结构体指针,和指向的节点*/L1 = (Node*)malloc(sizeof(Node));//1L2 = (Node*)malloc(sizeof(Node));//2L = create_link_list(n);split_link_list(L1,L2,L);len1 = get_link_list_length(L1);len2 = get_link_list_length(L2);printf("%d %d\n",len1,len2);display_link_list(L1);display_link_list(L2);//display_link_list(L);//len=get_link_list_length(L);//printf("%d\n",len);return 0;}/*顺序建表*/Node* create_link_list(int len){Node*head;Node*tail;Node*p;head = (Node*)malloc(sizeof(Node));tail = head;while(len--){p = (Node*)malloc(sizeof(Node));scanf("%d",&(p->data));tail->next = p;tail = p;p->next = NULL;}return head;}void split_link_list(Node*L1,Node*L2,Node*L){/*开始放在该函数中,错误!!L1 = (Node*)malloc(sizeof(Node));L2 = (Node*)malloc(sizeof(Node)); error;*/Node*tail1,*tail2;Node*p;p = L->next;tail1 = L1;tail2 = L2;while(p){if(p->data%2 == 0){tail1->next = p;tail1 = p;p = p->next;}else{tail2->next = p;tail2 = p;p = p->next;}}tail1->next = NULL;tail2->next = NULL;}int get_link_list_length(Node*L){int len=0;Node*p;p = L->next;while(p){len++;p = p->next;}return len;}void display_link_list(Node*L){ Node*p; p = L->next; while(p) {if(p->next){printf("%d ",p->data);}else{printf("%d\n",p->data);}p = p->next;}}
0 0
- 单链表的拆分
- 单链表的拆分
- 单链表的拆分
- 单链表的拆分
- 单链表的拆分
- 单链表的拆分
- 单链表的拆分 SDUT -2120
- 单链表的链表拆分
- 链表F 单链表的拆分
- 拆分单链表
- 单链表拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 【下载https协议需要的cer证书】
- Intents and Intent Filters(理论)
- hibernate 配置自动生成表 失败的原因
- Access SQL中Left Join、Right Join和Inner Join的使用
- Spark源码解读(4)——RDD
- 单链表的拆分
- 绑定cpu 核
- Android动态加载so
- Java 7之基础 - 强引用、弱引用、软引用、虚引用
- js学习笔记
- 灰度世界算法(Gray World Algorithm)
- C++ STL vector
- js学习笔记
- final、finally、finalize