mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
/* Fiind date doua liste simplu inlantuite, ale caror inregistrari retin numere intregi sortate crescator, sa se scrie secventa de program care creeaza o noua lista obtinuta prin interclasarea celor 2 liste*/
#include<iostream.h> #include<conio.h>
struct nod {int x; struct nod* next,*p,*c,*u; } //*p-prima inreg; *u-ultima inreg din lista; *c-o copie a listei
int n,i;
void creare() {cout<<"Dati nr de inregistrari=";cin>>n; cin>>c->x; c->next=0; p=c;u=c; for(i=2;i<=n;i++) {cin>>c->x; c->next=0; u->next=c; u=c; } }
void listare() {c=p; while(c) {cout<<c->x<<" "; c=c->next; } }
void interclasare() {struct nod *c1,*c2,*c3; c1=p1;c2=p2; if(c1->x<c2->x) {c3->x=c1->x; c1=c1->next; } else {c3->x=c2->x; c2=c2->next; } c3->next=0; p3=c3; u3=c3; while(c1&&c2) if(c1->x<c2->x) {c3->x=c1->x; c3->next=0; u3->next=c3; u3=c3; c1=c1->next; } else {c3->x=c2->x; c3->next=0; u3->next=c3; u3=c3; c2=c2->next; }
if(!c1) while(c2) {c3->x=c2->x; c3->next=0; u3->next=c3; u3=c3; c2=c2->next; } if(!c2) while(c1) {c3->x=c1->x; c3->next=0; u3->next=c3; u3=c3; c1=c1->next; } c3=p3; while(c3) {cout<<c3->x<<" "; c3=c3->next; }
void main() {clrscr(); creare(); listare(); interclasare(); listare(); getch(); }
|
|