概念:栈(stack)是限定只能在表的一段进行插入或删除操作的线性表。在表中允许插入和删除的一端称为“栈顶(top)”,不允许插入和删除的叫“栈底(bottom)”。
用四种方式实现,要会手写代码,理解栈的底层实现,注意边界条件的考虑
- //数组实现栈(要手撕)
- //链表实现栈(先判断头指针是否为NULL。否则不能pHead->next)
- //STL实现栈操作
- //vector实现栈
- //数组实现栈(要手撕)
#include <iostream>
using namespace std;
class MyStack
{
public:
MyStack(int maxSize)
{
if (maxSize <= 0)
{
return;
}
arr = new int[maxSize];//errror :arr = new int(maxSize);
if (!arr)
{
cout << "arr new error " << endl;
}
}
void push(int elem)
{
arr[length++] = elem;
}
void pop()
{
if (isEmpty())
{
return;
}
arr[--length] = 0;
}
int top()
{
if (is