数据结构实验之链表五:单链表的拆分
来源:互联网 发布:win10数据保护怎么关闭 编辑:程序博客网 时间:2024/06/07 02:46
数据结构实验之链表五:单链表的拆分
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
输入
第一行输入整数N;;
第二行依次输入N个整数。
第二行依次输入N个整数。
输出
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
示例输入
101 3 22 8 15 999 9 44 6 1001
示例输出
4 622 8 44 6 1 3 15 999 9 1001
提示
不得使用数组!
#include<stdio.h>#include<iostream>using namespace std;struct node{ int d; node *next;};node *CreatList(int n) //顺序建表{ node *head=new node; head->next=NULL; node *tail=head; for(int i=0;i<n;i++) { node *p=new node ; cin>>p->d; tail->next=p; tail=p; } tail->next=NULL; return head;}void PrintList(node *head) //输出链表{ node *p=head->next; while(p!=NULL) { if(p->next==NULL) cout<<p->d<<endl; else cout<<p->d<<" "; p=p->next; }}node *SplitList(node *h1) //拆分链表{ int n=0,m=0; node *h2=new node; h2->next=NULL; node *p=h1->next; h1->next=NULL; node *tail2=h2; node *tail1=h1; while(p!=NULL) { if(p->d%2) { tail1->next=p; tail1=p; n++; } else { tail2->next=p; tail2=p; m++; } p=p->next; } tail1->next=NULL;<span style="white-space:pre"></span>//注意别忘了 tail2->next=NULL; cout<<m<<" "<<n<<endl; PrintList(h2); PrintList(h1);}int main(){ int n; cin>>n; node *head=NULL; head=CreatList(n); SplitList(head); return 0;}
0 0
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- ubuntu server 14.04 编译安装xen4.4.2配置vtpm(三)——创建DomU(a PV VM)
- Java基础概要总结
- 《创业维艰如何完成比难更难的事》摘要
- Gson解析嵌套json
- 水平触发(LT)和边沿触发(ET)
- 数据结构实验之链表五:单链表的拆分
- 对多态的理解(附经典练习题)
- 学术助手
- Javascript入门常犯的错误
- jQuery的deferred对象详解
- LoRaWAN 规范1.0 (章节7)
- .NET平台常用的框架整理
- iOS 添加各种view
- 硬链接和软链接的区别