DLL
unknown
plain_text
2 years ago
1.9 kB
6
Indexable
#include<iostream> using namespace std; struct DLLnode { int value; DLLnode *left; DLLnode *right; }; void add(DLLnode *start, int val) { DLLnode *p = start; while ((p->right)) { p = p->right; } DLLnode *n = new DLLnode(); n->value = val; n->left = p; n->right = p->right; p->right = n; } void merge_sorted(DLLnode *l1, DLLnode *l2, DLLnode *r) { DLLnode *p, *q, *n; p=l1->right; q=l2->right; while(p && q) { if(p->value<= q->value) { n=p->right; if(p->right!=nullptr) { p->right->left=p->left; } p->left->right=p->right; r->right=p; r->left=r; r=r->right; p=n; } else { n=q->right; if(q->right!=nullptr) { q->right->left=q->left; } q->left->right=q->right; r->right=q; r->left=r; r=r->right; q=n; } } while(p!=nullptr) { r->right=p; r->left=r; r=r->right; p=p->right; } while(q!=nullptr) { r->right=q; r->left=r; r=r->right; q=q->right; } } void print(DLLnode *start) { DLLnode *p=start->right; while (p!=nullptr) { cout<<p->value<<" "; p=p->right; } } int main() { DLLnode *l1 = new DLLnode(); l1->left = l1->right = nullptr; DLLnode *l2 = new DLLnode(); l2->left = l2->right = nullptr; DLLnode *l3 = new DLLnode(); l3->left = l3->right = nullptr; int i, n, m, aa; cin>>n>>m; for(i=1; i<=n; i++) { cin>>aa; add(l1, aa); } for(i=0; i<m; i++) { cin>>aa; add(l2, aa); } //print(l1); merge_sorted(l1, l2, l3); print(l3); return 0; }
Editor is loading...
Leave a Comment