You are on page 1of 4

#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.

h> #include<iostream> struct data { int roll; struct data *n; struct data *p; }; class doub { protected: struct data * head; public: struct data *cur; struct data* create(void); void read(struct data*); struct data* cread(void); void read(struct data*,int t); void insert_head(struct data *); doub(); void insert_end(struct data *); void print(struct data *); void printall(void); struct data * search(int); struct data* del(int); void operator=(doub &t); void operator+=(doub &t); doub operator+(doub &t); }; struct data* doub::create(void) { cur=(struct data*)malloc(sizeof(struct data)); return cur; } void doub::read(struct data *r) { printf("Enter the Roll call\n"); scanf("%d",&r->roll); r->n=r; r->p=r; } void doub::read(struct data *r,int t) { r->roll=t; r->n=r; r->p=r; } struct data* doub::cread(void) { cur=create(); read(cur); return cur; } void doub::insert_head(struct data* p) {

struct data *temp; if(head==NULL) { head=p; } else { p->n=head; temp=head->p; p->p=temp; temp->n=p; head->p=p; head=p; } } void doub::insert_end(struct data* p) { struct data *temp; if(head==NULL) { head=p; } else { temp=head->p; temp->n=p; p->p=temp; p->n=head; head->p=p; } } void doub::printall(void) { struct data*p; p=head; if(p!=NULL) { do { print(p); p=p->n; }while(p!=head); } } void doub::print(struct data *p) { printf("\nROLL CALL =\t%d\n",p->roll); } struct data* doub::search(int t) { if(head!=NULL) { cur=head; do { if(cur->roll==t) { return cur;

} cur=cur->n; }while(cur!=head); } return NULL; } struct data* doub::del(int t) { cur=search(t); if(cur!=NULL) { struct data*back,*next; back=cur->p; next=cur->n; back->n=next; next->p=back; if(cur==head) { head=head->n; } } return cur; } doub::doub() { head=NULL; cur=NULL; } void doub::operator=(doub &t) { struct data *p,*l; head=NULL; l=t.head; do { p=create(); read(p,l->roll); insert_end(p); l=l->n; }while(l!=t.head); } void doub::operator+=(doub &t) { head->p->n=t.head; head->p=t.head->p; t.head->p=head->p; head->p->n=head; } doub doub::operator+(doub &t) { doub a; *this+=t; a=*this; return a;

} void main() { doub obj,obj2; struct data *p; for(int a=0;a<5;a++) { p=obj.cread(); obj.insert_end(p); } for(a=0;a<5;a++) { p=obj2.cread(); obj2.insert_end(p); } obj2=obj; obj2.printall(); obj+=obj2; doub obj3=obj+obj2; obj3.printall(); }

You might also like