栈和队列的定义与基本用法

栈和队列


定义和特点

栈:栈(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.括号匹配的检验

存在两种括号[],(),嵌套的顺序随意,需检验是否为正确格式。

若是左括号则入栈,遇到匹配的右括号则出栈,最后判断是否为空栈即可。



猜你喜欢

转载自blog.csdn.net/qq_41117236/article/details/80764231