자주 사용 하 는 데이터 구조 (2): 링크

2146 단어 데이터 구조Blog
계속
링크
먼저 선두 노드 의 단 방향 링크 를 고려 하 다.
두 가지 유형, 노드 류 와 링크 류.다음 과 같다.
class ChainNode
{
	friend Chain;
	private:
		int data;
		ChainNode* next;
}
 
class Chain
{
	public:
		Chain(){first=0;}
		~Chain();
		//    ,blablabla
	private:
		ChainNode* first;
}

 분석 함수:
Chain::~Chain()
{
	while(first)
	{
		ChainNode* temp = first->next;
		delete first;
		first=temp;
	}
}

 지정 한 요소 찾기:
int Chain:: Search(int x)
{
   ChainNode* temp = first;
   int i=1;
   while(temp)
   {
		if(temp->data==x)
			return i;
		i++;
		temp=temp->next;
   }
   return -1;
}

 지정 한 요소 삭제:
bool Chain::Delete(int x)
{ 
       int index = Search(x);
	   if(index>0)
	   {
	     if(index==1)
		  first=first->next;
	     else
	     {
		  ChainNode* temp = first;
		  for(int i=1;i<index-1;i++)
		      temp=temp->next;
		  ChainNode* q = temp->next;
		  temp->next=q->next;
		  delete q;
	     }
		 return true;
	   }
	   else
		 return false;
}

 지정 한 위치 에 요소 삽입:
bool Chain::Insert(int index,ChainNode cn)
{
	//      ,   ,     
	temp=first;
	for(int i=1;i<index;i++)
		temp=temp->next;
	cn->next=temp->next;
	temp->next=cn;
	return true;
}

 링크 끝 에 노드 삽입:
//               。。
ChainNode* temp = first;
ChainNode* temp2 = first->next;
while(temp2)
{
	temp=temp->next;
	temp2=temp2->next;
}
temp->next=cn;

 현지 역 치:
  http://lee3do.iteye.com/blog/777239
양 방향 체인 시 계 를 쓰 지 않 으 니 너무 번거롭다.

좋은 웹페이지 즐겨찾기