栈和队列
【定义和特点】
栈:栈(stack)又名堆栈,它是限定在表的一端进行插入和删除操作的线性表(后进先出)。这一端被称为栈顶,相对地,把另一端称为栈底。不含元素的空表称为空栈。
队列:和栈相反,队列(queue)是一种先进先出的线性表。它只允许在表的前端进行删除操作,而在表的后端进行插入操作。允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。
向一个栈插入新元素又称作入栈,从一个栈删除元素又称作出栈。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。和线性表一样,栈和队列的存储结构也包括顺序和链式两种。
【栈的使用】
头文件:#include<stack>
声明一个栈:stack <数据类型> 数据名 如:stack <int> a
基本用法:
a.push(); //向栈内压入一个成员 a.pop(); //从栈顶弹出一个成员 a.empty(); //为空返回true,否则返回false a.top(); //返回栈顶,但不删除成员 a.size(); //返回栈的大小
【队列的使用】
头文件:#include<queue>
声明一个队列:queue <数据类型> 数据名 如:queue <int> q
基本用法:
q.push(); //在队尾插入数据 q.pop(); //在队首删除数据 q.empty(); //为空返回true,否则返回false q.front(); //返回队首元素 q.back(); //返回队尾的元素 q.size(); //返回队列的大小
【案例分析】
1.数制转换
从低位到高位顺序产生的各个数位,在输出时需要按照从高位到低位的顺序,可以用栈先压入完毕再依次出栈。
2.括号匹配的检验
存在两种括号[],(),嵌套的顺序随意,需检验是否为正确格式。
若是左括号则入栈,遇到匹配的右括号则出栈,最后判断是否为空栈即可。