Отслеживание позиции "курсора" в двусвязном списке (Java)

Я реализовал DLL для добавления и удаления символов. Целью кода является предоставление вывода для зарегистрированных нажатий клавиш. Примером является то, что "bai-d" будет давать "плохой" ("-" представляет возврат). Пока что эти операции добавления и удаления идут хорошо. Но зарегистрированные нажатия клавиш также содержат "<" и ">", которые представляют смещение курсора влево и вправо. Примером является "ball<>-", который должен давать "bad". Мне трудно придумать метод включения "<" и ">" в ​​мой код.

            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 ответ

Я думаю, что вы перемещаете ваш передний и задний указатель на основе <или>

Другие вопросы по тегам