Java 排队<;T>;O(1)时间

Java 排队<;T>;O(1)时间,java,queue,Java,Queue,我刚刚创建了enqueue、dequeue和peek方法,但我不知道它们是否在O(1)时间内。如果不是,我该怎么做,你能在O(1)时间内解释怎么做吗 节点启动; 公共无效排队(T val) { 节点n=新节点(val); if(start==null) { 开始=n; }否则 { n、 下一步=开始; 开始=n; } } 公共T出列() { 如果(开始!=null) { T item=start.nodeValue; start=start.next; 退货项目; } 返回n

我刚刚创建了enqueue、dequeue和peek方法,但我不知道它们是否在O(1)时间内。如果不是,我该怎么做,你能在O(1)时间内解释怎么做吗

节点启动;
公共无效排队(T val)
{
节点n=新节点(val);
if(start==null)
{
开始=n;
}否则
{
n、 下一步=开始;
开始=n;
}       
}   
公共T出列()
{
如果(开始!=null)
{
T item=start.nodeValue;
start=start.next;
退货项目;
}
返回null;
}
公共空间窥视()
{
节点电流=开始;
while(curr!=null)
{
系统输出打印(curr.nodeValue+“”);
curr=curr.next;
}
}

它们位于O(1)或常数时间,因为操作所需的时间不受集合大小的影响。

它们位于O(1)或常数时间,因为操作所需的时间不受集合大小的影响。

嗯,入队和出队以常数时间运行,而peek以线性时间运行

分析复杂性的思想仅仅是计算操作的数量。我们所要做的就是假设在O(1)中创建一个节点、赋值和计算if语句

对于入队和出队,无论代码在哪里运行,这些操作的数量都是恒定的。因此,最后,代码只执行恒定数量的O(1)操作,这就产生了O(1)复杂性

对于peek方法,代码进入wile的次数与队列中的节点次数相同。因此,如果有n个节点,代码将进入n次循环:它执行n次(1)操作。 最后:peek具有线性复杂性


让一个方法打印运行线性时间的队列的所有值其实没什么大不了的,因为它涉及到对结构的迭代。

好吧,入队和出队在固定时间内运行,peek在线性时间内运行

分析复杂性的思想仅仅是计算操作的数量。我们所要做的就是假设在O(1)中创建一个节点、赋值和计算if语句

对于入队和出队,无论代码在哪里运行,这些操作的数量都是恒定的。因此,最后,代码只执行恒定数量的O(1)操作,这就产生了O(1)复杂性

对于peek方法,代码进入wile的次数与队列中的节点次数相同。因此,如果有n个节点,代码将进入n次循环:它执行n次(1)操作。 最后:peek具有线性复杂性

让一个方法打印运行线性时间的队列的所有值其实没什么大不了的,因为它涉及到对结构的迭代。

我忽略了
peek()
方法。这个答案是正确的。我忽略了
peek()
方法。这个答案是正确的。
Node<T> start;

public void enqueue(T val) 
{
    Node<T> n = new Node<T>(val);

    if (start == null) 
    {
        start = n;
    } else 
    {
        n.next = start;
        start = n;
    }       
}   
public T dequeue() 
{
    if (start != null) 
    {
        T item = start.nodeValue;
        start = start.next;

        return item;
    }
    return null;
}


public void peek () 
{
    Node<T> curr = start;
    while (curr != null) 
    {
        System.out.print(curr.nodeValue + " ");
        curr = curr.next;
    }
}