태그 보관물: datastructure

LinkedList (Convert to Java)

package com.blogspot.coozplz;

 

/**

 * C로 배우는 알고리즘에 있는 

 * 연결 리스트를 자바로 구현.

 * @author Coozplz

 */

public class LinkedList1 {

    Node head;

    Node tail;

    

    public void initList() {

        head = new Node();

        tail = new Node();

        head.next = tail;

        tail.next = tail;

    }

    

    public void deleteNext(Node node) {

        Node temp;

        if(node.next.hashCode() == tail.hashCode()) {

            return ;

        }

        

        temp = node.next;

        node.next = node.next.next;

        temp = null;

    }

    

    

    public Node insertNode(int t, int k)  {

        Node s;

        

        Node p;

        

        Node r;

        

        p = head;

        s = p.next;

        while(s.key != k && s.hashCode() != tail.hashCode()) {

            p = p.next;

            s = p.next;

        }

        if(s.hashCode() != tail.hashCode()) {

            r = new Node();

            r.key = t;

            p.next = r;

            r.next = s;

        }

        return p.next;

    }

    

    public Node orderedInsert(int k) {

        Node s;

        Node p;

        Node r;

        p = head;

        s = p.next;

        while(s.key <= k && s.hashCode() != tail.hashCode()) {

            p = p.next;

            s = p.next;

        }

        r = new Node();

        r.key = k;

        p.next = r;

        r.next = s;

        return r;

    }

    

    

    public void printList(Node t) {

        System.out.println("Print Nodes");

        

        while(t.hashCode() != tail.hashCode()) {

            System.out.print("\t"+t.key);

            t = t.next;

        }

    }

    

    public static void main(String[] args) {

        LinkedList1 test = new LinkedList1();

        

        test.initList();

        test.orderedInsert(10);

        test.orderedInsert(5);

        test.orderedInsert(8);

        test.orderedInsert(3);

        test.orderedInsert(1);

        

        test.printList(test.head.next);

        

    }

    

}

 

class Node {

    int key;

    Node next;

}

자료구조 원형 큐

[출처] http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=139457475

 

Question:

String 객체를 저장하는 큐를 원형 큐(배열)로 구현하고 이를
이용하는 프로그램을 작성하시오.
** 큐 연산 오류시 null을 리턴하도록 처리하든지, 예외 발생
하도록 처리하든지 각자 알아서 할 것
(1) StringCircularQueue 클래스
– private 인스턴스 변수
원형 큐 배열
기타 필요한 변수
– public 메소드
constructor 2가지
StringCircularQueue(int size) // size: 배열크기
StringCircularQueue()
enqueue
dequeue
isEmpty
toString
기타 필요한 메소드
(2) 드라이버 클래스의 main 메소드는 다음을 수행
– 크기가 5인 StringCircularQueue 큐를 생성
– 사용자에게 다음과 같은 메뉴를 제공하되, 4를 선택할 때까
지 계속 반복
1: 삽입, 2: 삭제, 3: 전체출력, 4: 종료
사용자가 1을 선택하면
사용자로부터 삽입할 한 줄의 문자열을 입력받음
큐에 그 문자열을 삽입(enqueue 메소드 호출)
큐가 꽉 찼는데 삽입을 시도했다면 어떤 방식으로든 실패
를 알려야 함
** enqueue 메소드에서 사용자 입력을 받도록 하면 안됨
사용자가 2를 선택하면
큐에 문자열을 삭제(dequeue 메소드 호출)
삭제한 문자열을 출력
큐가 텅 비었는데 삭제를 시도했다면 어떤 방식으로든 실
패를 알려야 함
** dequeue 메소드에서 문자열을 출력하도록 하면 안됨
사용자가 3을 선택하면
큐의 현재 내용을 모두 출력
front의 값이 가장 먼저,
rear의 값이 가장 마지막 나오도록
사용자가 4를 선택하면
반복을 마침
– 큐가 비어있는지 여부를 검사하여
만일 비어있지 않다면 큐가 텅 빌때까지 모든 원소를 삭제하
여 출력
———————————————————-
목적
– 배열로 구현한 원형 큐와 큐 연산을 익힌다.
———————————————————-
도와주세요 급합니다

Answer: