//searching
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
template<class T>
class node
{
node<T> *llink;
T data;
node<T> *rlink;
friend class dll<T>;
};
template <class T>
class dll
{
private:
node<T> *l,*r;
public:
dll();
~dll();
int isempty();
void display();
int length();
node<T>* search(T x);
void append(node<T>*k);
void create();
};
template<class T>
dll<T>::dll()
{
l=r=NULL;
}
template<class T>
int dll<T>::isempty()
{
return(l==NULL);
}
//search()
template<class T>
node<T>* dll<T>::search(T x)
{
node<T> *p;
p=l;
while(p!=NULL)
{
if(p->data==x)
return(p);
}
return(NULL);
}
//apend()
template<class T>
void dll<T>::append(node<T>* k)
{
node<T> *last;
k->rlink=NULL;
if(isempty())
l=r=k;
else
{
//last=r;
last=l;
while(last->rlink!=NULL)
{
last=last->rlink;
}
last->rlink=k;
r=last;
}
}
//create()
template<class T>
void dll<T>::create()
{
T x;
node<T> *k;
l=r=NULL;
cout<<"enter values terminated by -1 or !\n";
cin>>x;
while(x!=-1&&x!='!')
{
k=new node<T>;
k->data=x;
append(k);
cin>>x;
r=r->rlink;
}
}//create()
dll<T>::~dll()
{
}
main()
{
dll<int>a;
node<int>*p;
int ch,i,x;
clrscr();
a.create();
cout<<"enter value to be searched\n";
cin>>x;
p=a.search(x);
if(p==NULL)
cout<<"It is not found\n";
else
cout<<"it is found at address="<<p<<"\n";
getch();
return(0);
}//main()
Doubly Linked List Operations
Types of Linked list
No comments:
Post a Comment