线性表
线性表是一个逻辑结构,其中的每一个元素都有唯一的前驱和后继,除了第一个元素没有前驱,最后一个元素没有后继。 例如:字符串、栈、队列 数组和链表都是存储结构,不是逻辑结构。 除了线性表这种逻辑结构,还有树、图等其它逻辑结构。
栈
栈是一个特殊的线性表 添加和删除元素的位置在线性表的同一端,这端叫做栈顶,另一端叫做栈底。 先进后出/后进先出(last in first out)(LIFO表)
栈的主要操作
- 添加元素 入栈/压栈
- 删除元素 出栈/弹栈
- 取栈顶元素
- 求栈中元素的数量
- 判断栈是否为空
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
struct MyStack{ int tp;//栈顶指针 int s[MAX_LEN]; void init(){//初始化 tp=0;//栈顶指针指向栈底 } bool empty(){//判断栈是否为空 return tp==0; } bool push(int e){//入栈 if(tp==MAX_LEN) return false;//判断是否栈满 s[tp++]=e; return true; } bool pop(int e){//出栈 if(tp<=0) return false; tp--; return true; } int top(){//栈顶元素值 return s[tp-1]; } int size(){//返回栈中元素数量 return tp; } };
STL-stack
- 头文件 #include
- 定义栈 stack
s; - 入栈 s.push(e);
- 出栈 s.pop(); 删除栈顶元素
- 取栈顶元素 s.top();
- 判断栈顶是否为空 s.empty();
- 栈中元素数量 s.size();
- 两个栈可以直接比较字典序大小,用法和字符串比较大小一样,返回bool值