2.7 试编写算法,根据一个元素类型为整型的单链表生成两个单链表,使得第一个单链表中包含原单链表中所有元素值为奇数的结点,第二个单链表中包含原单链表中所有元素值为偶数的结点,原有单链表保持不变。
#include<iostream>
using namespace std;
struct LinkList
{
int val;
LinkList *next;
};
LinkList *L1=new LinkList,*L2=new LinkList;
LinkList *r1=L1,*r2=L2;
void helper(LinkList *L){
while(L){
if(L->val%2==0){//偶
LinkList *p=new LinkList;
p->val=L->val; r1->next=p; r1=p;
}
else{//奇
LinkList *p=new LinkList;
p->val=L->val; r2->next=p; r2=p;
}
L=L->next;
}
L1=L1->next; r1->next=NULL;
L2=L2->next; r2->next=NULL;
}
void read(LinkList *L){
while(L){
cout<<L->val<<" ";
L=L->next;
}
cout<<endl;
}
int main()
{
LinkList *L=new LinkList;
LinkList *r=L;
int a[6]={1,2,5,6,4,3};
for(int i=0;i<6;i++){//尾插法
LinkList *p=new LinkList;
p->val=a[i];
r->next=p; r=p;
}
L=L->next; r->next=NULL;
helper(L);
read(L1);//输出偶数
read(L2);//输出奇数
read(L);//原来的单链表不变
return 0;
}