Lecture/자료구조/2011/4.5 원형 연결 리스트

Retired DISLab
< Lecture | 자료구조 | 2011
Swpark (토론 | 기여) 사용자의 2014년 1월 26일 (일) 09:00 버전
(비교) ← 이전 판 | 현재 판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 찾기

교과서에 있는 방법

public class CircularLinkedList {
    private ListNode head;
 
    public CircularLinkedList() {
        head = null;
    }
 
    /**
     * 원형 연결 리스트의 처음에 노드를 삽입한다.
     * @param p 삽입하고자 하는 노드
     */
    public void insertFront(ListNode p) {
        if (head == null) {
            head = p;
            p.link = head;
        } else {
            p.link = head.link;
            head.link = p;
        }
    }
 
    /**
     * 원형 연결 리스트의 마지막에 노드를 삽입한다.
     * @param p 삽입하고자 하는 노드
     */
    public void insertLast(ListNode p) {
        if (head == null) {
            head = p;
            p.link = head;
        } else {
            p.link = head.link;
            head.link = p;
            head = p;
        }
    }
 
    /**
     * 리스트의 길이를 반한하는 메소드
     * @return 리스트의 길이
     */
    public int length() {
        if (head == null)
            return 0;
 
        int length = 1;
        ListNode p = head.link;
        while (p != head) {
            length++;
            p = p.link;
        }
        return length;
    }
}


개선한 방법

public class CircularLinkedList {
    private ListNode head;
    private int length;
 
    public CircularLinkedList() {
        head = null;
        length = 0;
    }
 
    /**
     * 원형 연결 리스트의 처음에 노드를 삽입한다.
     * @param p 삽입하고자 하는 노드
     */
    public void insertFront(ListNode p) {
        if (head == null) {
            head = p;
            p.link = head;
        } else {
            p.link = head.link;
            head.link = p;
        }
        length++;
    }
 
    /**
     * 원형 연결 리스트의 마지막에 노드를 삽입한다.
     * @param p 삽입하고자 하는 노드
     */
    public void insertLast(ListNode p) {
        insertFront(p);
        head = p;
    }
 
    /**
     * 리스트의 길이를 반한하는 메소드
     * @return 리스트의 길이
     */
    public int length() {
        return length;
    }
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기