那种快一点?
  • 板块学术版
  • 楼主vectorli1
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/7/4 14:33
  • 上次更新2023/11/4 18:50:21
查看原帖
那种快一点?
420139
vectorli1楼主2021/7/4 14:33

分别用数组和链表实现了栈,请问哪一种会更快?

const int MAXN=1e5+5;
template<typename T>
class Stack
{
    private:
        T data[MAXN];
        int p;
    public:
        Stack(){memset(data, 0, sizeof(data)); p=0;}
        void push(T x){data[++p]=x;}
        void pop(){if(p>0) p--;}
        bool empty(){return bool(p);}
        int size(){return p;}
        T top(){return data[p];}
};
template<typename Type>
class Stack
{
    private:
        int stack_size;
        struct node{Type data; node *next, *prev;}*head, *tail;
    public:
        Stack(){stack_size=0; head=(node *)malloc(sizeof(node)); head->next=nullptr; head->prev=nullptr; tail=head;}
        void push(Type x){stack_size++; node *pos=(node *)malloc(sizeof(node)); pos->data=x; pos->next=nullptr; tail->next=pos; pos->prev=tail; tail=pos;}
        void pop(){if(stack_size==0)return; stack_size--; node *pos=tail; free(pos); tail=tail->prev; tail->next=nullptr;}
        Type top(){return tail->data;}
        int size(){return stack_size;}
        bool empty(){return !(bool(stack_size));}
};
2021/7/4 14:33
加载中...