【问题标题】:How do I enqueue to a circular linked list while making sure that the last element points to the first?如何在确保最后一个元素指向第一个元素的同时加入循环链表?
【发布时间】:2016-10-25 00:34:48
【问题描述】:

我正在尝试为循环链表构建一个入队方法。这是我目前所拥有的:

public class Test<T> implements UnboundedQueueInterface<T> {
    protected LLNode<T> rear;
    protected LLNode<T> current;

    public Test() {
        rear = null;
        current = null;
    }

    @Override
    public boolean isEmpty() {
        if (rear == null) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public void enqueue(T element) {
        LLNode<T> node = new LLNode<T>(element);

        if (rear == null) {
            rear = node;
            node.setLink(rear);
        } else {
            LLNode<T> temp = rear;
            rear = node;
            node.setLink(temp);
        }
    }
}

不是最后一个元素链接到第一个,而是链接到第二个到最后一个,依此类推。有什么想法吗?

【问题讨论】:

    标签: java circular-list


    【解决方案1】:
    LLNode<T> temp = rear;
    rear = node;
    node.setLink(temp);
    

    temp 保持原来的背面。当你调用 setLink 时,你是说指向 temp,也就是原来的后方。取而代之的是,您需要指向rear.getLink() 以指向第一个元素(因为旧的rear 指向第一个元素)。

    在那之后,您还有另一个链接需要修复。 temp(旧的后部)仍然指向第一个元素,但应该更新它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-22
      • 2015-04-18
      • 1970-01-01
      • 2021-06-08
      • 2016-06-21
      • 2016-01-22
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多