Хобрук: Ваш путь к мастерству в программировании

Добавление и удаление элементов в двустороннюю очередь

У меня есть очередь для создания двусторонней очереди, которая может добавлять, удалять и просматривать элементы с обеих сторон (т.е. спереди и сзади)

У меня есть методы добавления, удаления и просмотра элементов в «голове», но я не могу понять, как сделать то же самое с «хвостом» очереди.

Вот мой код: -

public class dequeue
{
    private Node rear;
    private Node front;
    private int counter;

    class Node 
    {
        private String item;
        private Node link;
    }

    public Node()
    {
        rear = front = null;
        counter = 0;
    }

    public void hAdd(String o)
    {
        Node temp = new Node();
        temp.item =o;
        temp.link =null;

        if (rear==null)
            front = rear = temp;

        else
        {
            rear.link = temp;
            rear = temp;
        }
        counter++;
    }

    public boolean isEmpty()
    {
        if(counter==0)
            return true;
        return false;
    }

    public Object hPeek()
    {
        return rear.item;
    }

    public Object hRemove()
    {
        if (isEmpty())
            return null;

        else    
        {
            Object temp=front.item;
            front = front.link;

            if (front == null)
                rear = null;
            counter--;
            return temp;
        }
    }

    public int size()
    {
        return counter;
    }

    public void tAdd(String o)
    {
        Node temp = new Node();
        temp.item =o;
        temp.link =null;

        if (front==null)
            front=rear=temp;

        else
        {
            front.link=temp;
            front=temp;
        }
        counter++;
    }

    public Object tPeek()
    {
        return front.item;
    }

    public Object tRemove()
    {
        if (isEmpty())
            return null;

        else
        {
            Object temp=rear.item;
            rear=rear.link;
            if (rear==null)
            front=null;
            counter--;
            return temp;
        }
    }


    public String toString()
    {
        StringBuilder result=new StringBuilder();
        Node curr=front;
        while(curr!=null)
        {
            result.append(curr.item+" \n");
            curr = curr.link;
        }
        return result.toString();
    }
}    
19.04.2016

  • Просто взгляните на docs.oracle.com/javase /7/docs/api/java/util/LinkedList.html 19.04.2016
  • Сначала вам нужно исправить свой код: конструктор Node не определен в классе Node, поэтому он не может работать должным образом. Также вам нужно поддерживать начало и конец для каждого узла, поэтому ваше определение Node не определено должным образом, поскольку узел имеет только одну ссылку. Совет: если вы сравниваете операции головы с операциями хвоста, они должны быть довольно симметричными. Ваш код может отразить это. 19.04.2016

Ответы:


1
  • Пожалуйста, предоставьте некоторые пояснения вместе с вашим ответом. 18.11.2019
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..