lien ket don (template)
Trang 1 trong tổng số 1 trang
lien ket don (template)
- Code:
#include "stdio.h"
#include "conio.h"
#include "iostream.h"
template<class type>
class Node
{
private:
type Info;
Node<type> *Next;
public:
void CreateNode(type x);
void GanNext(Node *p);
type LayInfo();
Node<type> *LayNext();
void Ganinfo(type x);
};
////////////////////////////////////////////////////////
template<class type>
class List
{ private:
Node<type> *Head;
Node<type> *Tail;
public:
List();
~List();
void AddHead(Node<type> *p);
// void AddTail(Node *p);
void PrintList();
int Tim(type x);
void xoahead();
void xoax(type x);
void sx();
};
/////////////////////////////////////////////////////////
template<class type>
void Node<type>::CreateNode(type x)
{
/*Node *p;
p=new Node;
this=p;*/
Info=x;
Next=NULL;
}
////////////////////////////////////////////////////////
template<class type>
Node<type>* Node<type>::LayNext()
{
return Next;
}
//////////////////////////////////////////////////////
template<class type>
type Node<type>::LayInfo()
{
return Info;
}
/////////////////////////////////////////////////////
template<class type>
void Node<type>::GanNext(Node *p)
{
Next=p;
}
//////////////////////////////////////////////////////
template<class type>
List<type>::List()
{
Head=NULL;
Tail=NULL;
}
//////////////////////////////////////////////////////
template<class type>
List<type>::~List()
{ Node<type> *p;
while(Head)
{
p=Head;
Head=p->LayNext();
delete p;
}
Tail=NULL;
}
//////////////////////////////////////////////////////
template<class type>
void List<type>::AddHead(Node<type> *p)
{
if(Head==NULL)
{
Head=p;
Tail=p;
}
else
{
p->GanNext(Head);
Head=p;
}
}
///////////////////////////////////////////////////////
template<class type>
void List<type>::PrintList()
{
Node<type> *p;
p=Head;
while(p!=NULL)
{
cout<<p->LayInfo()<<" ";
p=p->LayNext();
}
}
////////////////////////////////////////////////////////
template<class type>
int List<type>::Tim(type x)
{
Node *p;
p=Head;
while(p!=NULL)
{
if(p->LayInfo()==x)
break;
p=p->LayNext();
}
if(p==NULL)
return 0;
else
return 1;
}
/////////////////////////////////////////////////
template<class type>
void List<type>::xoahead()
{
Node *p;
p=Head;
if(Head!=NULL)
{
Head=p->LayNext();
delete p;
}
else
{
cout<<"List rong";
}
}
//////////////////////////////////////////////////
template<class type>
void List<type>::xoax(type x)
{
Node *p,*q=NULL;
p=Head;
while((p!=NULL)&&(p->LayInfo()!=x))
{
q=p;
p=p->LayNext();
}
if(p==NULL)
cout<<"co dau ma xoa";
else
{
if(q==NULL)
this->xoahead();
else
{
q->GanNext(p->LayNext());
if(p==Tail)
Tail=q;
delete p;
}
}
}
///////////////////////////////////////////////////
template<class type>
void List<type>::sx()
{
Node<type> *i,*j;
type k;
for(i=Head;i!=Tail;i=i->LayNext())
for(j=i->LayNext();j!=NULL;j=j->LayNext())
if(i->LayInfo()>j->LayInfo())
{
k=i->LayInfo();
i->Ganinfo(j->LayInfo());
j->Ganinfo(k);
}
}
////////////////////////////////////////////////////////////
template<class type>
void Node<type>::Ganinfo(type x)
{
Info=x;
}
////////////////////////////////////////////////////////////
void main()
{
List<float> l1;
float x;
int i;
Node<float> *p;
for(i=1;i<=5;i++)
{
cout<<"nhap x:";
cin>>x;
p=new Node<float>;
p->CreateNode(x);
l1.AddHead(p);
}
// l1.xoahead();
cout<<"in danh sach lien ket:";
// l1.PrintList();
// cout<<"Nhap x: ";
// cin>>z;
/*cout<<endl;
if(l1.Tim(z)==1)
cout<<"Tim thay";
else
cout<<"Ko tim thay";*/
// l1.xoax(z);
l1.sx();
l1.PrintList();
getch();
}
Similar topics
» So sanh lien ket tat mem va lien ket tac cung
» Thảo luận Bài 4
» Liên kết tắt cứng, liên kết tắt mềm (khó ghê!)
» Thảo luận Bài 4
» Thảo luận Bài 4
» Thảo luận Bài 4
» Liên kết tắt cứng, liên kết tắt mềm (khó ghê!)
» Thảo luận Bài 4
» Thảo luận Bài 4
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết