如何确定这些操作的复杂性?

时间:2014-10-27 23:06:48

标签: c

我使用这些日期结构实现了堆栈:

typedef struct node{
    StackEntry entry;
    struct node *next;
}Node;


typedef struct stack{
    Node *top;
}Stack;

如何在下面的每个操作中找到BigO?

  • StackEmpty(Stack * s)

  • StackSize(Stack * s)

  • 推送(节点* e,堆栈*)

  • Pop(Node * e,Stack * s)

1 个答案:

答案 0 :(得分:1)

时间复杂度

  • StackEmpty(Stack * s)= O(1)//我们只需要检查top== null

  • StackSize(Stack * s)= O(n)//如果堆栈包含直到count++

    top== null >
  • Push(Node * e,Stack * s)= O(1)//只需要一个操作no解释需要这个我认为

  • Pop(Node * e,Stack * s)= O(1)//只需要一个操作no解释需要这个我认为


Boolean StackEmpty(Stack *s)

{
    if(s.Next==null&&s.value==null)
        return true; //or 1
    else
        return false; //or 0
}

int StackSize(Stack *s)
{
    if(StackEmpty!=true)
    {
        count = 0
        while(StackEmpty!=true)
        { 
           pop();
          Count++;
        }
     }
     return Count;
 }