2013년 10월 21일 월요일

JAVA Linked List 자바 링크드 리스트 전화번호부(이중원형연결리스트) 예제

JAVA Linked List 자바 링크드 리스트  전화번호부(이중원형연결리스트) 예제

JAVA Linked List 전화번호부(이중원형연결리스트) 예제 

class ChainNode  {              
private PersonalData element;          //Node안에 저장된 item(Object) 
private ChainNode next;                  //다음  Node를 가리키는 Reference 
private ChainNode prev;                  //이전  Node를 가리키는 Reference 

ChainNode() {}    
    ChainNode(PersonalData newElement) { 
element = newElement; 
next = null; 
prev = null; 
    } 

    ChainNode(PersonalData newElement, ChainNode nextNode,  ChainNode prevNode) { 
element = newElement; 
next = nextNode; 
prev = prevNode; 
    } 
  
    public void setElement(PersonalData newItem) { 
element = newItem; 
    } 

    public PersonalData getElement() { 
return element; 
    } 

    public void setNext(ChainNode nextNode) { 
next = nextNode; 
    } 

    public ChainNode getNext() { 
return next; 
    } 

public void setPrev(ChainNode prevNode) { 
prev = prevNode; 
    } 

    public ChainNode getPrev() { 
return prev; 
    } 





class PersonalData { 
    Strin 
      this.number = number;      
    } 
        
    public String getName() { 
      return name; 
    } 

    public String getNumber() { 
      return number;  
    }    
public void setNumber(String number) { 
      this.number = number; 
    } 
    
    public boolean equals(Object o){      
      return name.equals(((PersonalData)o).getName()); 
    } 
public String toString(){ 
      return name+"씨의 전화번호는" +number +" 입니다"; 
    } 




//이중 원형리스트를 이용한 전화번호부 
//headerNode를 별도로 만듬  
public class PersonalDataManager { 
    // The Node of the list 
    private ChainNode headerNode;      &nbssp;void add(PersonalData element) { 
        ChainNode tn = new ChainNode(element, null, null); 
//맨처음 insert되는 경우 
if (headerNode.getN.setNext(tn); 
headerNode.setPrev(tn); 
        } else {            
tn.setPrev(headerNode.getPrev()); 
    tel)  { 
PersonalData p = search(name); 
if (p != null){ 
p.setNumber(tel); 



public PersonalData search(String name)  { 
  &n!= headerNode); 
System.out.println("data not found..."); 
return null; 


    //주어진 data노드를 Return 
    private ChainNode find(PersonalDat;          throw new IllegalArgumentException(); 
        do { 
if (p.getElement().getName().equals(element.getName())) returnbsp; throw new IllegalArgumentException(); 
    } 

public synchronized void remove(String name) { 
PersonalData element = search(name); 
ChainNode p = find(element); 
if (headerNode != p){ 
p.getPrev().setNext(p.getNext()); 
p.getNext().setPrev(p.getPrev()); 

    } 

public void printAll() { 
ChainNode p = headerNode.getNext(); 
        if (p == null)  throw new IllegalArgumentException(); 
System.out.println("----- 전화번호부 리스트 -----"); 
        do { 
System.out.println(p.getElement()); 
            p = p.getNext(); 
        } while (p != headerNode); 
System.out.println(""); 





class TelephonebookMain { 
    public static void main(String[] args) { 
        PersonalDataManager manager = new PersonalDataManager(); 
        manager.add(new PersonalData("aaa", "333-3333")); 
        manager.add(new PersonalData("bbb", "444-4444")); 
        manager.add(new PersonalData("ccc", "555-5555")); 
manager.add(new PersonalData("ddd", "666-7777")); 
manager.printAll(); 
                
        print(manager.search("bbb")); 

//변경을 적용 
        manager.change("ccc","777-7777"); 
        print(manager.search("ccc"));  
        manager.remove("aaa");      
manager.printAll(); 
    } 
    public static void print(PersonalData p){ 
        System.out.println(p);        
    } 


댓글 없음:

댓글 쓰기