하나의 알고리즘 을 설계 하여 점차적으로 증가 하 는 질서 있 는 링크 의 중간 값 이 mink 보다 크 고 maxk 보다 작은 모든 요 소 를 삭제 합 니 다 (mink 와 maxk 는 주어진 두 개의 매개 변수 로 그 값 은 표 의 요소 와 같 거나 다 를 수 있 습 니 다).

void Delete_Some_Num(LinkList &s, int min, int max)
{
	LNode *p, *q, *p_front, *temp;

	//p_front    p       
	p = s -> next;
	p_front = s;
	while(p && p -> data <= min)//p         min   
	{
		p_front = p_front -> next;
		p = p -> next;
	}
	if(!p)//              ,       
	{
		return;
	}
	else	
	{
		q = p;
		while(q && q -> data < max)//q         max   
		{
			q = q -> next;
		}
	}

	//           
	p_front -> next = q;
	while(p != q)
	{
		temp = p;
		p = p -> next; 
		delete temp;
		temp = NULL;
	}
	return;
}

시험 장소:
1. 경계 노드 위치 지정
2. 링크 삭제 작업
주의:
1. 경계 테스트: 하나의 노드 만 있 을 때
2. 테스트 링크 의 상황 은 세 가지 로 나 뉜 다. 링크 와 삭제 구간 은 교차 되 지 않 고 링크 와 삭제 구간 은 교차 되 며 삭제 구간 은 링크 의 부분 집합 이다.

좋은 웹페이지 즐겨찾기