Untitled
unknown
plain_text
2 years ago
2.2 kB
3
Indexable
#include <iostream> using namespace std; class Node { public: int data; Node *next,*prev; }; //noi void conect(Node *a,Node *b){ a->next=b; b->prev=a; } class LL { public: Node *head,*tail; LL(){ head=new Node(); tail=new Node(); conect(head,tail); } //them vao dau void addFirst(int val){ Node *newNode=new Node(); newNode->data=val; Node *n=head->next; conect(newNode,n); conect(head,newNode); } //them vao cuoi void addLast(int val){ Node *newNode= new Node(); newNode->data=val; Node *p=tail->prev; conect(p,newNode); conect(newNode,tail); } //them vao sau cur void addAfter(Node *cur,int val){ Node *newNode= new Node(); newNode->data=val; Node *n=cur->next; conect(newNode,n); conect(cur,newNode); } //check rong bool isEmpty(){ return head->next==tail; } //xoa dau Node *delFirst(){ if(isEmpty()) return nullptr; Node *h=head->next; conect(head,h->next); return h; } //xoa cuoi Node *delLast(){ if(isEmpty()) return nullptr; Node *t=tail->prev; conect(t->prev,tail); return t; } //xoa n Node *delMid(Node *n){ if(isEmpty()) return nullptr; conect(n->prev,n-> next); } //chuyen list 2 vao sau list void merge(LL *link2){ if(link2->isEmpty()) return; Node *n2=link2->head->next; Node *p2=link2->tail->prev; Node *p1=tail->prev; conect(p1,n2); conect(p2,tail); conect(link2->head,link2->tail); } void print(){ Node *cur=head->next; while(cur!=tail){ cout<<cur->data<<" "; cur=cur->next; } } }; int main(){ //freopen("input.txt","r",stdin); LL l1; l1.addLast(33); l1.addLast(55); l1.addLast(88); LL l2; l2.addLast(44); l2.addLast(77); l2.addLast(99); l1.merge(&l2); l1.print(); return 0; }
Editor is loading...