BJFUOJ:链表的分解
#include<bits/stdc++.h>
using namespace std;
typedef struct Lnode {
int data;
struct Lnode *next;
} Lnode, *Linklist;
void Init_Linklist(Linklist &l) {
l = new Lnode;
l->next = NULL;
}
void CreatLinklist(Linklist &l, int n) {
Linklist p = l;
Linklist r;
for (int i = 1; i <= n; i++) {
r = new Lnode;
cin >> r->data;
r->next = p->next;
p->next = r;
p = r;
}
}
void Decompose(Linklist &l,Linklist &b,Linklist &c){
Linklist ll = l->next;
Linklist bb = b;
Linklist cc = c;
while(ll){
if(ll->data < 0){
bb->next = ll;
bb = ll;
}else{
cc->next = ll;
cc = ll;
}
ll = ll->next;
}
bb->next = NULL;
cc->next = NULL;
}
void Out(Linklist &l){
Linklist p = l->next;
while(p->next){
cout<<p->data<<" ";
p = p->next;
}
cout<<p->data<<endl;
}
int main() {
while(1){
int n;
cin>>n;
if(n == 0){
break;
}
Linklist l,b,c;
Init_Linklist(l);
Init_Linklist(b);
Init_Linklist(c);
CreatLinklist(l,n);
Decompose(l,b,c);
Out(b);
Out(c);
}
return 0;
}