栈与队列的基础知识点

<栈> 栈(stack)又名堆栈,它是一种特殊的线性表。元素之间成线性结构。在c++中其头文件为

特性:运算受限制,只允许在栈顶进行插入删除操作,插入叫做进栈,入栈或者压栈(push),删除叫做出栈(pop),由于有这种特性,所以著名特点是后进先出。

定义:stacks

现在展示一道题进行讲解吧,话不多说请看题,杭电acm题

栈与队列的基础知识点_第1张图片

根据题目要求,我们很清楚的知道,这就是一个关于栈的应用,当一辆辆列车进去之后,只能当后面的列车出来了,最前面的车才可以出来。正好符合栈的特性,因此,我们可以定义一个栈来模拟这个过程

完整代码如下:

#include
#include
#include
using namespace std;
int main()
{
	char in[100]; char out[100]; int flag[200];
	int n;
	while (cin >> n) {
		int i, j; i = j = 0;
		cin >> in;
		cin >> out;
		stacks;//定义为字符型的栈结构
		for ( i = 0; i <=n;)
		{
			if (s.empty())//判断栈为空,push第一个元素
			{
				s.push(in[i]);
				flag[i + j] = 0;
				i++;
			}
			if (!s.empty()&&s.top()!=out[j])//当栈不空且栈顶不为当前出栈的元素时继续输入
			{
				s.push(in[i]);
				flag[i + j] = 0;
				i++;
			}
			if (!s.empty()&&s.top() == out[j])//栈不空且和当前出栈元素相等时进行pop
			{
				s.pop();
				flag[i + j] = 1;
				j++;
			}
		}
		if (s.empty())
		{
			cout << "Yes." << endl;
			for (i = 0; i < 2*n; i++)
			{
				if (flag[i] ==0)//利用flag来进行判断时输入还是输出
					cout << "in"<

接下来说一下队列

<队列> 队列(queue)是一种特殊的线性表。在c++中头文件为

特性:它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。著名特点和栈相反,是先进先出。

定义:queueq,queueq,queueq,

操作:插入q.push(),删除q.pop(),注意,q.pop()并不会返回元素值,而要用q.front()返回队头元素,用q.back()返回队尾元素

 

详细用法:
查看是否为空范例        M.empty()    是的话返回1,不是返回0;
从已有元素后面增加元素   M.push()
输出现有元素的个数      M.size()
显示第一个元素          M.front()
显示最后一个元素        M.back()
清除第一个元素          M.pop()
*/
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
queue myQ;

cout<< "现在 queue 是否 empty? "<< myQ.empty() << endl; 

for(int i =0; i<10 ; i++)
{
myQ.push(i);
}
for(int i=0; i
{
printf("myQ.size():%d\n",myQ.size());
cout << myQ.front()<
myQ.pop();
}

system("PAUSE"); 

return 0;
}

输出结果:
现在 queue 是否 empty? 1
myQ.size():10
0
myQ.size():9
1
myQ.size():8
2
myQ.size():7
3
myQ.size():6
4
请按任意键继续. . .




你可能感兴趣的:(栈与队列的基础知识点)