@parkito

Как создать очередь на основе односвязного списка в java?

Здравствуйте. Подскажите, пожалуйста, как орагнизовать очередь на односвяном списке.
Стек - легко.
public class List<T> {
    public int key;
    public T data;
    public List next;

    List(int key, T data) {
        this.key = key;
        this.data = data;
    }

    T getData() {
        return this.data;
    }
    void show(){
        System.out.println(key+") "+data+" ");
    }
}

public class LinkedList<T> {
    private int size;
    private List first;

    public LinkedList() {
        first = new List(0, 0);
        size = 0;
    }

    public void add(T element) {
        List newList = new List(size, element);
        size++;
        newList.next = first;
        first = newList;

    }

    public void display() {
        List<Integer> current = first;
        while (current != null) {
            System.out.println(current.getData());
            current = current.next;
        }
    }
}


Такую вещь я могу организовать на c++ с помощью указателей. Но тут задача меня поставила в тупик.
  • Вопрос задан
  • 1560 просмотров
Пригласить эксперта
Ответы на вопрос 2
@MikkiMouse
Помимо ссылки на первый элемент, можно добавить ссылку на последний. Элементы добавлять через ссылку на последний, извлекать через ссылку на первый.
Ответ написан
lxsmkv
@lxsmkv
Test automation engineer
Class MyQueue { 
Element head;
Element tail;
...
public void addElement(Element e){
e.setNext(this.getTail())
this.getTail()
this.setTail(e)
} ... }

что-то в этом роде. новый элемент сперва указывает на хвостовой элемент, а потом указатель хвостового элемента переводится на новый элемент.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы