2017-10-11 6 views
0

) 문자 추가 및 삭제를 위해 DLL을 구현했습니다. 이 코드의 목적은 등록 된 키 누르기에 대한 출력을 제공하는 것입니다. 예를 들어 'bai-d'는 'bad'를 줄 것입니다 ('-'는 백 스페이스를 나타냅니다). 지금까지 추가 및 삭제 작업이 진행 중입니다. 그러나 등록 된 키 누르기에는 '<'과 '>'도 포함되어 커서의 왼쪽과 오른쪽으로의 이동을 나타냅니다. 예를 들어 '공 < < d>'- '가'불량 '입니다. 내 코드에 '<'및 '>'을 포함하는 방법을 찾기가 어렵습니다.이중 링크 목록 (Java)에서 '커서'의 위치 추적 (

  MyLinkedList newList = new MyLinkedList(); 
      String password = input.nextLine(); 

      for (char ch : password.toCharArray()){ 
       if(Character.isLetter(ch) || Character.isDigit(ch)){ 
        newList.addRear(ch); 
        } 

       if(ch == '-'){ 
        newList.removeRear();      
       } 
       /*if(ch == '<'){ 
        //cursor shifting 

       } 
       if(ch == '>'){ 
        //cursor shifting 
       }*/ 
     } 

      newList.print(); 

} 

여기에서는 문자에 대한 메소드를 호출합니다. 다음 섹션에서는 DLL을 구현하는 부분을 설명합니다. 나는 크기에 대한 메소드를 가지고 있으며, 앞뒤로 삽입하고 앞과 뒤에서 삭제합니다.

public void removeFront(){ 
    if(head==null) return; 

    head = head.next; 
    head.previous = null; 
    size--; 
} 

public void removeRear(){ 
    if(head==null) return; 
    if(head.next == null){ 
     head = null; 
     size--; 
     return; 
    } 
    Link current = head; 
    while(current.next.next != null){ 
     current = current.next; 
    } 
    current.next = null; 
    size--; 
} 
public void addFront(char data){ 
    if(head==null){ 
     head = new Link(null, data, null); 
     } 

    else{ 
     if(Character.isLetter(data) || Character.isDigit(data)){ 
      Link newLink = new Link(null, data, head); 
      head.previous = newLink; 
      head = newLink; 
     } 
    } 
    size++; 
} 

public void addRear(char data){ 
    if (head==null){ 
     head= new Link(null, data, null); 
    } 
    else{ 
     Link current = head; 
     while(current.next != null){ 
      current = current.next; 
     } 
     Link newLink = new Link(current, data, null); 
     current.next = newLink; 
    } 
    size++; 
} 

귀하의 도움과 제안에 감사드립니다.

+0

잡아에 펜과 종이를 기반으로 이동하고 예를 그릴 생각합니다. 다른 작업을 수행 할 때 '커서'가 어디에 있어야하는지 그리고이 위치에서 삭제/추가 할 때'링크 '에서'다음 '및'이전 '참조가 어떻게 될지 확인하십시오. 올바른 'Link'를 항상 참조하는 클래스 필드를 도입해야하며, 오른쪽으로 이동, 왼쪽으로 이동하여 링크 된 목록을 탐색하고 현재 링크에서 'Link'를 추가하고 추가 할 수 있어야합니다 커서 위치. Java의'LinkedList' 구현의'ListIterator'로부터 언제나 영감을 얻을 수 있습니다. –

답변

0

나는 당신이 당신의 전면 및 후면 포인터가 < 또는>