링크 의 각종 조작 (자바 구현)

1. 노드 삭제
public boolean remove(Object e) {
	SLNode p = getPreNode(e);
	if(p!=null){
		p.setNext(p.getNext().getNext());
		size--;
		return true;
	}
	return false;	
}

2. 노드 삽입
삽입점 은 3 가지 로 나 뉜 다.
(1) 제 i 의 위치 에 삽입
public void insert(int i, Object e) throws OutOfBoundaryException {
	if(i<0||i>size)
		throw new OutOfBoundaryException("  ,         。");
	SLNode p = getPreNode(i);
	SLNode q = new SLNode(e,p.getNext());
	p.setNext(q);
	size ++ ;
	return;
}

(2) 지 정 된 요소 에 삽입 하기 전에
//   e   obj  
public boolean insertBefore(Object obj, Object e) {
	SLNode p = getPreNode(obj);
	if(p!=null){
		SLNode q = new SLNode(e,p.getNext());
		p.setNext(q);
		size ++;
		return true;
	}
	return false;
}

(3) 지 정 된 요소 에 삽입 한 후
//   e   obj  
public boolean insertAfter(Object obj, Object e) {
	SLNode p = head.getNext();
	while(p!=null){
		if(strategy.equal(p.getData(),obj)){
			SLNode q = new SLNode(e,p.getNext());
			p.setNext(q);
			size ++;
			return true;
		}
		else p = p.getNext();
	}
	return false;
}

3. 링크 반전
(1) 반복
public SLNode Reverve(){
    if(size<0){
        throw new OutOfBoundaryException("  ,    ~");
    }
    SLNode pre = head.getNext();   
    SLNode cur = head.getNext().getNext();   
    head.getNext().setNext(null);	//                  (             
    SLNode next;   
    while (null != cur) {   
        next = cur.getNext();
        cur.setNext(pre);   	//      
        pre = cur;   
        cur = next;   
    } 
    head.setNext(pre);	// pre  head 
    return head;   
}

(2) 、 재 귀 반전
private SLNode reverse(SLNode head)  
{  
    if (null == head || null == head.getNext())  
    {  
        return head;  
    }   
    SLNode reversedHead = reverse(head.getNext());  
    head.getNext().setNext(head);  
    head.setNext(null);  
    return reversedHead;  
} 
    
public SLNode revers(){
    SLNode p = head.getNext();
    head.setNext(this.reverse(p));
    return head;
}

마지막 보조 방법:
//    :      e         
private  SLNode getPreNode(Object e){
	SLNode p = head;
	while(p.getNext()!=null)
		if(strategy.equal(p.getNext().getData(),e))return p;
		else p = p.getNext();
	return null;
}

설명:
strategy      (         ),             

오류 가 있 거나 개선 의견 이 있 으 시 면 제출 을 환영 합 니 다 ~

좋은 웹페이지 즐겨찾기