대학원 결정 과 초보 계획 (링크 의 노드 류)

결정 을 내리 기 전에 이미 직장 에 있 는 선배 에 게 대학원 진학 이 냐, 일 하 느 냐 의 문 제 를 물 어 봤 다.나 는 이 사람들 만 이 이 문 제 를 토론 할 자격 이 있다 는 것 을 알 고 있다. 물론 연구 분야 의 큰 소 가 나 왔 다.나 도 많은 다른 답 이 있 을 것 이라는 것 을 알 고 있다. 심지어 어떤 것 은 매우 절대적 이거 나 극단 적 인 말 을 할 수도 있다. 그러나 나 는 한 마디 를 더 믿는다. 일 은 사람 이 하 는 것 에 달 려 있다!           나 는 대학원 에 진학 하기 로 결정 했다. 이 유 는 더 이상 말 하지 않 겠 다.지금 이 순간 에 받 아야 할 것 은 자신의 학습 능력 이 부족 하고 문 제 를 연구 하 는 머리 가 아직 성숙 하지 않 아서 저 는 더욱 냉정 해 지고 침착 해 지 며 자신의 대학원 진학 목적 을 달성 하려 고 노력 합 니 다.어떤 선배 들 이 말 한 것 처럼 기본 외 에 자신의 사업 에 유리 한 장 기 를 쟁취 하 라.           그러나 결정 은 결정 이다. 아직 스퍼트 할 때 가 되 지 않 았 기 때문에 지금 은 자신의 기 초 를 향상 시 킬 때 이다. 특히 이때 자신 은 이미 일정한 기 초 를 가지 고 더욱 유리 한 조건 을 가지 고 스스로 연구 하여 문 제 를 해결 할 것 이다.           자신의 학습 능력 을 향상 시 키 기 위해 이 몇 과목 을 열심히 공부 할 때 자바 데이터 구 조 를 독학 해 보 세 요.    오늘 첫 번 째 프로그램 을 마 쳤 습 니 다: 링크 의 기본 기능:
 
package comeon.feiqiang;   
  
/**  
 * this class is for a Node Oprator
 * include tow menber variables data and link
 * with the methods provided,you can create a new IntNode with two parameters,
 * create a new Node before the current Node,create a copy with head,create a copy with head and tail
 * get
 * 
 */  
  
public class IntNode {
    public int data;   
    public IntNode link;   
  
    public IntNode(int initialData, IntNode initialLink) {   
        data = initialData;   
        link = initialLink;   
    }   
  
    public void addNodeBefore(int element) {   
        link = new IntNode(element, link);   
    }   
  
    /**  
     * @param head  
     * @return the head of the list  
     */  
    public static IntNode listCopy(IntNode head) {   
        IntNode answer = null;   
        if (head == null) {   
            return null;   
        }   
        IntNode cursor = head;   
        answer = new IntNode(head.data, null);   
        IntNode tail = answer;   
        while (cursor.link != null){   
            cursor = cursor.link;   
            tail.link=new IntNode(cursor.data, tail.link);   
            tail = tail.link;   
        }   
        return answer;   
    }   
  
    /**  
     * @param IntNode  
     *            source  
     * @return an array with the head and the tail of a copy of a source list  
     */  
    public static IntNode[] copyWithDail(IntNode source) {   
        IntNode copyHead = null;   
        IntNode copyTail = null;   
        IntNode[] answer = new IntNode[2];   
        if (source == null) {   
            return answer;   
        }   
        copyHead = new IntNode(source.data, null);   
        copyTail = copyHead;   
        source = source.link;   
        while (source != null) {   
            copyTail.link = new IntNode(source.data, copyTail.link);   
            source = source.link;   
            copyTail = copyTail.link;   
        }   
        answer[0] = copyHead;   
        answer[1] = copyTail;   
        return answer;   
    }   
  
    /**  
     * @param head  
     * @return the length of the list  
     */  
    public static int listLength(IntNode head) {   
        int answer = 0;   
        IntNode cursor = head;   
        while (cursor != null) {   
            answer++;   
            cursor = cursor.link;   
        }   
        return answer;
    }   
  
    /**  
     *   
     * @param start  
     * @param end  
     * @return a copy of the current list from the start Node to the end Node  
     */  
    public static IntNode[] listPart(IntNode start, IntNode end) {   
        IntNode copyHead = null;   
        IntNode copyTail = null;   
        IntNode answer[] = new IntNode[2];   
        if (start == null) {   
            throw new IllegalArgumentException("start is null");   
        }   
        if (end == null) {   
            throw new IllegalArgumentException("end is null");   
        }   
        copyHead = new IntNode(start.data, null);   
        copyTail = copyHead;   
        while (start != end) {   
            start = start.link;   
            if (start == null) {   
                throw new IllegalArgumentException(   
                        "end node was not found on this list");   
            }   
            copyTail.link = new IntNode(start.data, copyTail.link);   
            copyTail = copyTail.link;   
        }   
        answer[0] = copyHead;   
        answer[1] = copyTail;   
        return answer;   
    }   
  
    /**  
     * @param head  
     * @param position  
     * @return the IntNode on the position  
     */  
    public static IntNode listPosition(IntNode head, int position) {   
        if (position <= 0) {   
            throw new IllegalArgumentException("position is not positive");   
        }   
        IntNode cursor = head;   
        for (int i = 1; i < position && cursor != null; i++) {   
            cursor = cursor.link;   
        }   
        return cursor;   
    }   
  
    /**  
     * @param IntNode  
     *            head  
     * @param IntNode  
     *            target  
     * @return the IntNode at the data of target  
     */  
    public static IntNode listSearch(IntNode head, int target) {   
        IntNode cursor = head;
        while (cursor != null) {   
            if (cursor.data == target) {   
                return cursor;   
            }   
            cursor = cursor.link;   
        }   
        return null;
    }   
  
    public static void print(IntNode head) {   
        IntNode cursor = head;   
        while (cursor != null) {   
            System.out.println(cursor.data);   
            cursor = cursor.link;
        }   
    }   
}  

좋은 웹페이지 즐겨찾기