#include <iostream>
using namespace std;
template<typename T> class mynode
{
public:
T m_obj;
mynode * m_next;
};
template<typename T> class myList
{
public:
myList()
{
m_header=NULL;
}
void create( T val);
void addtotail( T val);
void printflist();
private:
mynode<T>* m_header;
};
template<typename T> void myList<T> ::create( T val)
{
if (m_header==NULL)
{
m_header=new mynode<T>;
m_header->m_next=NULL;
m_header->m_obj=val;
}
}
template<typename T> void myList<T>::addtotail(T val)
{
if (m_header!=NULL)
{
mynode<T>* pcurrent=m_header;
cout<< "add of header " <<pcurrent<<endl;
cout<< "add of next header " <<pcurrent->m_next<<endl;
while (pcurrent->m_next!=NULL)
pcurrent=pcurrent->m_next;
mynode<T>* pNewNode=new mynode<T>;
pcurrent->m_next=pNewNode;
pNewNode->m_next=0;
pNewNode->m_obj=val;
}
}
template<typename T> void myList<T>::printflist()
{
if (m_header!=NULL)
{
mynode<T>* pcurrent=m_header;
while (pcurrent->m_next)
{
cout<<pcurrent->m_obj <<endl;
pcurrent=pcurrent->m_next;
}
}
}
int main()
{
myList<int> mylist1;
mylist1.create(0);
// mylist1.addtotail(1);
for (int k=0;k<12;k++)
{
mylist1.addtotail(k);
}
mylist1.printflist();
int gfl;
cin>>gfl;
}
// 做了区分 list node 的节点不一样
#include <iostream>
using namespace std;
template<typename T> class mynode
{
public:
T m_obj;
mynode * m_next;
};
template<typename T, typename T1> class myList
{
public:
myList()
{
m_header=NULL;
}
void create( T1 val);
void addtotail( T1 val);
void printflist();
private:
mynode<T1>* m_header;
};
template<typename T,typename T1> void myList<T,T1> ::create( T1 val)
{
if (m_header==NULL)
{
m_header=new mynode<T1>;
m_header->m_next=NULL;
m_header->m_obj=val;
}
}
template<typename T,typename T1> void myList<T,T1>::addtotail(T1 val)
{
if (m_header!=NULL)
{
mynode<T1>* pcurrent=m_header;
cout<< "add of header " <<pcurrent<<endl;
cout<< "add of next header " <<pcurrent->m_next<<endl;
while (pcurrent->m_next!=NULL)
pcurrent=pcurrent->m_next;
mynode<T1>* pNewNode=new mynode<T1>;
pcurrent->m_next=pNewNode;
pNewNode->m_next=0;
pNewNode->m_obj=val;
}
}
template<typename T,typename T1> void myList<T,T1>::printflist()
{
if (m_header!=NULL)
{
mynode<T1>* pcurrent=m_header;
while (pcurrent->m_next)
{
cout<<pcurrent->m_obj <<endl;
pcurrent=pcurrent->m_next;
}
}
}
int main()
{
myList<int,int > mylist1;
mylist1.create(0);
// mylist1.addtotail(1);
for (int k=0;k<12;k++)
{
mylist1.addtotail(k);
}
mylist1.printflist();
int gfl;
cin>>gfl;
}