栈
今天主要学习了栈,因为我觉得要继续理解DFS,栈是必须要掌握的。栈是一种先进后出的数据结构,数据先进入的会较后一点出来。还要了解栈顶指针这一概念,栈顶指针始终指向栈的最上方元素,通常记为TOP,栈中没有元素时会令TOP为-1。
栈的操作:
1.清空
清空将栈顶指针TOP置为-1,表示栈中没有元素。
void clear()
{TOP = -1;
}
2.获取栈内元素的个数
TOP始终指向栈顶元素,而数组下标从0开始,所以,栈内元素的数为TOP+1。
int size()
{return TOP+1;
}
3.判空
如果TOP=-1,返回true,否则返回false
bool empty()
{if(TOP == -1){return true;}else {return false;}
}
4.进栈
将元素置于栈顶,TOP+1后,将元素存入TOP所指向的位置
void push(int x)
{st[++TOP] = x;
}
5.出栈
由TOP的定义可知,直接通过TOP减1就能实现
void pop()
{TOP--;
}
6.取栈顶元素top
由于TOP始终指向栈顶,因此,st[top]即为栈顶元素
int top()
{return st[TOP];
}
这些函数在使用了#include<stack>头文件后都可以调用,但需要注意,入栈和取栈顶元素的操作的前提是栈不能为空,因此,在使用pop()函数和top()函数前,应使用empty()函数来判断栈是否为空。