分别用数组和链表实现了栈,请问哪一种会更快?
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));}
};