hafez1
شنبه 08 مهر 1391, 21:06 عصر
می خاسم یه نفر این کدو توضیح بده
.
#ifndef MDLL_H
#define MDLL_H
template <typename T> class mnode
{
public :
T d ;
mnode<T> * n ;
};
template <typename Z> class mdll
{
public :
mnode<Z> * h ;
mnode<Z> * t ;
mdll():h(0),t(0){}
void pushfront (Z d);
void pushback (Z d);
Z popfront ();
mdll(mdll<Z> const & x) ;
};
template <typename T> void mdll<T>::pushfront(T d)
{
mnode<T> * tmp = new mnode<T> ;
tmp->d = d ;
tmp->n = h ;
h = tmp ;
if ( t == 0 ) t = h ;
}
template <typename T> void mdll<T>::pushback(T d)
{
if ( h == 0 )
{
pushfront(d);
return ;
}
mnode<T> * tmp = new mnode<T> ;
tmp->d = d ;
tmp->n = 0 ;
t ->n = tmp ;
t = tmp ;
}
template <typename S> S mdll<S>::popfront ()
{
if ( h == 0 )
throw"empty link list" ;
S d = h ->d ;
mnode<S> * tmp = h ;
h = h ->n ;
if ( h == 0 ) t = h ;
delete tmp ;
return d ;
}
template <typename T> mdll<T>::mdll(mdll<T> const & x):h(0),t(0)
{
mnode<T> * tmp = x.h ;
while ( tmp )
{
pushback(tmp->d);
tmp = tmp->n ;
}
}
#endif// MDLL_H
.
#ifndef MDLL_H
#define MDLL_H
template <typename T> class mnode
{
public :
T d ;
mnode<T> * n ;
};
template <typename Z> class mdll
{
public :
mnode<Z> * h ;
mnode<Z> * t ;
mdll():h(0),t(0){}
void pushfront (Z d);
void pushback (Z d);
Z popfront ();
mdll(mdll<Z> const & x) ;
};
template <typename T> void mdll<T>::pushfront(T d)
{
mnode<T> * tmp = new mnode<T> ;
tmp->d = d ;
tmp->n = h ;
h = tmp ;
if ( t == 0 ) t = h ;
}
template <typename T> void mdll<T>::pushback(T d)
{
if ( h == 0 )
{
pushfront(d);
return ;
}
mnode<T> * tmp = new mnode<T> ;
tmp->d = d ;
tmp->n = 0 ;
t ->n = tmp ;
t = tmp ;
}
template <typename S> S mdll<S>::popfront ()
{
if ( h == 0 )
throw"empty link list" ;
S d = h ->d ;
mnode<S> * tmp = h ;
h = h ->n ;
if ( h == 0 ) t = h ;
delete tmp ;
return d ;
}
template <typename T> mdll<T>::mdll(mdll<T> const & x):h(0),t(0)
{
mnode<T> * tmp = x.h ;
while ( tmp )
{
pushback(tmp->d);
tmp = tmp->n ;
}
}
#endif// MDLL_H