Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

lien ket don (template)

Go down

lien ket don (template) Empty lien ket don (template)

Bài gửi  Trần Anh Sơn [PT1] 7/11/2010, 09:26

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();
   


}
Trần Anh Sơn [PT1]
Trần Anh Sơn [PT1]

Tổng số bài gửi : 35
Join date : 19/09/2010
Age : 33
Đến từ : Phan Thiết

http://25-4ever.tk

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết