프로그래밍 관련/언어들의 코딩들 C++ JAVA C# 등..

(무식한) 템플릿 링크드 리스트 ㅋㅋ

AlrepondTech 2009. 1. 7. 16:09
반응형

 

 



=======================

=======================

=======================

 

 

 

 

 

// 예전에 멋도 모르고 작성한 리스트 ... 그저 한숨만 ㅋㅋ
// 그냥 벡터 쓰는게 낳을지도;;...........................................................

template <typename T>
struct T_Link
{
 T temp;
 int id;
 T_Link* link;
};

template <typename T>
class Temp_Link //링크드 리스트를 관리하는 함수
{

private:
 T_Link<T>* back_link;
 int linkMax;

public:
 T_Link<T>* t_link;
 
public:

 Temp_Link(T temp);
 Temp_Link();
 //void NextLink();
 
 bool NextLink();
 bool NextLink(int _num);

 bool SerchId(int _id);
 bool SerchIdFree(int _id);
 
 void AddLink(T _temp);
 void AddLinkA(T _temp);
 void AddLink(T _temp,int _id);
 void AddLinkA(T _temp,int _id);

 void ReSet(){t_link = back_link;}
 T& GetLink(){return t_link;}
};

template <typename T>
bool Temp_Link<T>::SerchIdFree(int _id)
{

 T_Link<T>* tmp_link=NULL;
 T_Link<T>* back_link=NULL;

 while(t_link){

  if(t_link->id == _id){
  
   tmp_link=t_link->link;
   
   if(back_link==NULL){
    free(t_link);
    t_link=tmp_link;
   }
   else back_link->link = tmp_link;
   
  }
 
  back_link = t_link;
  t_link = t_link->link;
 }

 ReSet();

 

 return false;
 
}

 

template <typename T>
bool Temp_Link<T>::SerchId(int _id)
{


 while(t_link)
 {
  if(t_link->id == _id) return true;
 t_link = t_link->link;
 }

 return false;
 
}

template <typename T>
Temp_Link<T>::Temp_Link(T _temp)
{
 t_link = new T_Link<T>;
 t_link->link=NULL;
 linkMax = 0;
 id = 0;
 
 back_linkA = t_linkA;
 
}

template <typename T>
Temp_Link<T>::Temp_Link()
{
 t_link = new T_Link<T>;
 t_link->link=NULL;
 back_link = t_link;
 
}


template <typename T>
void Temp_Link<T>::AddLink(T _temp)  // 링크를 추가 합니다,.
{
 T_Link<T>* temp_link = new T_Link<T>;
 temp_link->link = NULL;

 temp_link->link = t_link;
 t_link = temp_link;
 t_link->temp = _temp;
 
 back_link = t_link; //백업 링크
 linkMax++;
}

template <typename T>
void Temp_Link<T>::AddLink(T _temp,int _id)  // 링크를 추가 합니다,. //아이디 추가
{
 T_Link<T>* temp_link = new T_Link<T>;
 temp_link->link = NULL;

 temp_link->link = t_link;
 t_link = temp_link;
 t_link->temp = _temp;
 t_link->id   = _id;
 
 back_link = t_link; //백업 링크
 linkMax++;
}

template <typename T>
void Temp_Link<T>::AddLinkA(T _temp)  // 순서대로 링크를 추가 합니다,.
{
 T_Link<T>* temp_link = new T_Link<T>;
 temp_link->link = NULL;
 
 while(t_link->link!=NULL){t_link=t_link->link;}
 t_link->link = temp_link;
 t_link->temp = _temp;
 t_link = back_link;


 linkMax++;
}

 

template <typename T>
void Temp_Link<T>::AddLinkA(T _temp,int _id)  // 순서대로 링크를 추가 합니다,. //id 추가
{
 T_Link<T>* temp_link = new T_Link<T>;
 temp_link->link = NULL;
 
 
 while(t_link->link!=NULL){t_link=t_link->link;}
 t_link->link = temp_link;
 t_link->temp = _temp;
 t_link->id   = _id;
 t_link = back_link;


 linkMax++;
}

 


template <typename T>
bool Temp_Link<T>::NextLink()
{
 t_link=t_link->link;
 if(t_link->link== NULL){ t_link = back_link; return false;}
 else return true;

}

 

template <typename T>
bool Temp_Link<T>::NextLink(int _num) //0부터 시작합니다~
{

 if(_num>linkMax-1) return false;

 t_link=back_link;
 for(int i=0;i<_num;i++) 
  t_link=t_link->link;

 return true;
 
}



=======================

=======================

=======================

 

 

 

반응형

'프로그래밍 관련 > 언어들의 코딩들 C++ JAVA C# 등..' 카테고리의 다른 글

float 자리수 출력  (0) 2009.01.11
값을 받고 출력하기  (0) 2009.01.11
printf 합계산  (0) 2009.01.11
프로그래밍 C 변수  (0) 2008.11.28
"Hello Word!!"  (0) 2008.11.25