Отслеживание позиции "курсора" в двусвязном списке (Java)
Я реализовал DLL для добавления и удаления символов. Целью кода является предоставление вывода для зарегистрированных нажатий клавиш. Примером является то, что "bai-d" будет давать "плохой" ("-" представляет возврат). Пока что эти операции добавления и удаления идут хорошо. Но зарегистрированные нажатия клавиш также содержат "<" и ">", которые представляют смещение курсора влево и вправо. Примером является "ball<
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++;
}
Буду признателен за вашу помощь и предложения!
1 ответ
Я думаю, что вы перемещаете ваш передний и задний указатель на основе <или>