Недавно я ответил на тест "Мой онлайн-интервью", в котором меня попросили следующий вопрос
Конструкция TrainComposition строится путем крепления и отсоединения вагонов с левой и правой сторон.
Например, если мы начнем с прикрепления вагона 7 слева, а затем с помощью вагона 13, снова слева, мы получим композицию из двух вагонов (13 и 7 слева направо). Теперь первый вагон, который может быть отделен от правой, равен 7, а первый, который можно отделить слева, - 13. Внедрить TrainComposition, который моделирует эту проблему.
Я использовал дважды связанный список для решения проблемы
class Node
{
    protected int data;
    protected Node next, prev;
    /* Constructor */
    public Node()
    {
        next = null;
        prev = null;
        data = 0;
    }
    /* Constructor */
    public Node(int d, Node n, Node p)
    {
        data = d;
        next = n;
        prev = p;
    }
    /* Function to set link to next node */
    public void setLinkNext(Node n) {
        next = n;
    }
    /* Function to set link to previous node */
    public void setLinkPrev(Node p) {
        prev = p;
    }
    /* Funtion to get link to next node */
    public Node getLinkNext() {
        return next;
    }
    /* Function to get link to previous node */
    public Node getLinkPrev() {
        return prev;
    }
    /* Function to set data to node */
    public void setData(int d) {
        data = d;
    }
    /* Function to get data from node */
    public int getData() {
        return data;
    }
}
public class SortedSearch {
    protected Node start;
    protected Node end;
    public int size;
    /* Constructor */
    public SortedSearch()
    {
        start = null;
        end = null;
        size = 0;
    }
    public boolean isEmpty()
    {
        return start == null;
    }
    public int getSize()
    {
        return size;
    }
    public void attachWagonFromLeft(int wagonId) {
        Node nptr = new Node(wagonId, null, null);
        if (start == null)
        {
            start = nptr;
            end = start;
        }
        else
        {
            start.setLinkPrev(nptr);
            nptr.setLinkNext(start);
            start = nptr;
        }
        size++;
    }
    public void attachWagonFromRight(int wagonId) {
        Node nptr = new Node(wagonId, null, null);
        if (start == null)
        {
            start = nptr;
            end = start;
        }
        else
        {
            nptr.setLinkPrev(end);
            end.setLinkNext(nptr);
            end = nptr;
        }
        size++;
    }
    public int detachWagonFromLeft() {
        int value=0;
        if (size == 1)
        {
            value = start.getData();
            start = null;
            end = null;
            size = 0;
            return value;
        }
        value = start.getData();
        start = start.getLinkNext();
        start.setLinkPrev(null);
        size--;
        return value;
    }
    public int detachWagonFromRight() {
        int value=0;
            value = end.getData();
            end = end.getLinkPrev();
            end.setLinkNext(null);
            size-- ;
            return value;
    }
    public static void main(String[] args) {
        SortedSearch tree = new SortedSearch();
        tree.attachWagonFromLeft(7);
        tree.attachWagonFromLeft(13);
        tree.attachWagonFromLeft(12);
        tree.attachWagonFromLeft(10);
        tree.attachWagonFromLeft(6);
        tree.attachWagonFromLeft(4);
        tree.attachWagonFromLeft(3);
        tree.attachWagonFromLeft(2);
        System.out.println(tree.detachWagonFromRight()); // 7
        System.out.println(tree.detachWagonFromRight()); // 13
        System.out.println(tree.detachWagonFromRight()); // 7
        System.out.println(tree.detachWagonFromRight()); // 13
        System.out.println(tree.detachWagonFromRight()); // 7
        System.out.println(tree.detachWagonFromRight()); // 13
    }
}
И протестировал его соответственно. Но когда он был представлен, он сказал, что не удалось выполнить внутренние тестовые примеры, и ответ был помечен неправильно. Не могли бы вы рассказать, что является лучшим решением для этой проблемы.
