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