Lecture/자료구조/2011/실습 3. 연결 리스트 연습

Retired DISLab
이동: 둘러보기, 찾기

목차

Single Linked List

ListNode.java

public class ListNode {
    String  data;
    ListNode  link;
 
    public ListNode() {
        data = link = null;
    }
 
    public ListNode(String val) {
        data = val;
        link = null;
    }
 
    public ListNode(String val, ListNode p) {
        data = val;
        link = p;
    }
}

LinkedList.java

public class LinkedList {
 
    /** 리스트의 첫번째 노드를 가리키는 레퍼런스 변수 */
    private ListNode head;
 
    /**
     * 문자열 x를 리스트의 처음에 삽입한다.
     * @param x 삽입할 문자열
     */
    public void addFirstNode(String x) {
    }
 
    /**
     * 문자열 x를 리스트의 마지막에 삽입한다.
     * @param x 삽입할 문자열
     */
    public void addLastNode(String x) {
    }
 
    /**
     * 문자열 x를 리스트의 처음에 삽입한다.
     * @return 삭제할 첫번째 노드의 문자열
     */
    public String removeFirstNode() {
    }
 
    /**
     * 문자열 x를 리스트의 처음에 삽입한다.
     * @return 삭제할 마지막 노드의 문자열
     */
    public String removeLastNode() {
    }
 
    /**
     * 문자열 x를 리스트에서 찾는다.
     * @param x 찾고자 하는 문자열
     * @return 찾은 문자열 x를 가지고 있는 ListNode
     */
    public ListNode searchNode(String x) {
    }
 
    /**
     * 문자열 x를 p 노드 뒤에 삽입한다.
     * @param p 이 노드 뒤에 삽입한다.
     * @param x 삽입하고자 하는 문자열
     */
    public void insertNode(ListNode p, String x) {
    }
 
    /**
     * 인자로 받은 리스트를 추가한다.
     * @param list 삽입하고자 하는 리스트
     * @return 인자로 받은 문자열을 삽입한 자기 자신 리스트
     */
    public LinkedList addList(LinkedList list) {
    }
 
    /**
     * ListNode를 삭제한다.
     * @param p 삭제하고자 하는 ListNode
     */
    public void deleteNext(ListNode p) {
    }
 
    /**
     * 리스트를 역순으로 재배열한다.
     */
    public void reverse() {
    }
 
    /**
     * 리스트에 있는 내용을 출력한다.
     */
    public void printList() {   
        ListNode p;
        System.out.print("(");
        p = head;
        while (p != null) {
            System.out.print(p.data);
            p = p.link;
            if (p != null) {
                System.out.print(", ");
            }
        }
    }
 
    public static void main(String args[]) {
        LinkedList list = new LinkedList();
        list.addLastNode(“Kim”);
        list.addLastNode(“Lee”);
        list.addLastNode(“Park”);
        list.printList();     	        // (Kim, Lee, Park)가 프린트
        list.addLastNode(“Yoo”);   	// 원소 “Yoo”를 리스트 끝에 첨가
        list.printList();     	        // (Kim, Lee, Park, Yoo)가 프린트
 
        list.deleteLastNode();     
        list.printList();     	        // (Kim, Lee, Park)가 프린트
 
        list.reverse();
        list.printList();     	        // (Park, Lee, Kim)이 프린트
    }
 
}

Double Linked List

DoubleListNode.java

/**
 * 이중 연결 리스트에서 노드를 표현하기 위한 클래스이다.
 * 이 노드를 생성하면 기본적으로 모든 변수는 null이 된다.
 * Java에서는 변수의 값을 null로 설정하지 않아도 기본적으로 null이 된다.
 */
public class DoubleListNode {
    String data = null;
 
    DoubleListNode rlink = null;   // 다음 노드를 가리키는 레퍼런스 변수
    DoubleListNode llink = null;   // 이전 노드를 가리키는 레퍼런스 변수
}

DoubleLinkedList.java

public class DoubleLinkedList {
    /** 리스트의 첫 번째 노드를 가리키는 레퍼런스 변수 */
    DoubleListNode head = null;
 
    /** 리스트의 마지막 노드를 가리키는 레퍼런스 변수 */
    DoubleListNode tail = null;
 
    /** 리스트에 저장된 노드의 개수를 저장하고 있는 변수 */
    int length = 0;
 
    /**
     * 문자열 x를 리스트의 처음에 삽입한다.
     * @param x 삽입할 문자열
     */
    public void addFirstNode(String x) {
    }
 
    /**
     * 문자열 x를 리스트의 마지막에 삽입한다.
     * @param x 삽입할 문자열
     */
    public void addLastNode(String x) {
    }
 
    /**
     * 문자열 x를 리스트의 처음에 삽입한다.
     * @return 삭제할 첫번째 노드의 문자열
     */
    public String removeFirstNode() {
    }
 
    /**
     * 문자열 x를 리스트의 처음에 삽입한다.
     * @return 삭제할 마지막 노드의 문자열
     */
    public String removeLastNode() {
    }
 
    /**
     * 문자열 x를 리스트에서 찾는다.
     * @param x 찾고자 하는 문자열
     * @return 찾은 문자열 x를 가지고 있는 ListNode
     */
    public DoubleListNode searchNode(String x) {
    }
 
    /**
     * 문자열 x를 p 노드 뒤에 삽입한다.
     * @param p 이 노드 뒤에 삽입한다.
     * @param x 삽입하고자 하는 문자열
     */
    public void insertNode(DoubleListNode p, String x) {
    }
 
    /**
     * 인자로 받은 리스트를 추가한다.
     * @param list 삽입하고자 하는 리스트
     * @return 인자로 받은 문자열을 삽입한 자기 자신 리스트
     */
    public DoubleLinkedList addList(DoubleLinkedList list) {
    }
 
    /**
     * ListNode를 삭제한다.
     * @param p 삭제하고자 하는 ListNode
     */
    public void delete(DoubleListNode p) {
    }
 
    /**
     * 리스트를 역순으로 재배열한다.
     */
    public void reverse() {
    }
 
    /**
     * 리스트에 있는 내용을 출력한다.
     */
    public void printList() {   
        DoubleListNode p;
        System.out.print("(");
        p = head;
        while (p != null) {
            System.out.print(p.data);
            p = p.rlink;
            if (p != null) {
                System.out.print(", ");
            }
        }
    }
 
    public static void main(String args[]) {
        DoubleLinkedList list = new DoubleLinkedList();
        list.addLastNode(“Kim”);
        list.addLastNode(“Lee”);
        list.addLastNode(“Park”);
        list.printList();     	        // (Kim, Lee, Park)가 프린트
        list.addLastNode(“Yoo”);   	// 원소 “Yoo”를 리스트 끝에 첨가
        list.printList();     	        // (Kim, Lee, Park, Yoo)가 프린트
 
        list.deleteLastNode();     
        list.printList();     	        // (Kim, Lee, Park)가 프린트
 
        list.reverse();
        list.printList();     	        // (Park, Lee, Kim)이 프린트
    }
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기