学无先后,达者为师

网站首页 编程语言 正文

Stack和Queue容器的系列操作( 详解 )

作者:比特冬哥 更新时间: 2022-07-18 编程语言

文章目录

  • 一、Stack容器
    • 1. 基本概念
    • 2. 常用接口
      • 构造函数、赋值操作、数据存取、大小操作
  • 二、Queue容器
    • 1. 基本概念
    • 2. 常用接口
      • 构造函数、赋值操作、数据存取、大小操作
  • 三、示例代码
    • stack.cpp
    • queue.cpp


一、Stack容器

1. 基本概念

Stack是—释先进后出(First In Last Out,FILO)的数据结构,它只有一个出口
在这里插入图片描述
栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为
栈中进入数据称为—入栈push
栈中弹出数据称为—出栈pop

2. 常用接口

构造函数、赋值操作、数据存取、大小操作

功能描述: 栈容器常用的对外接口

构造函数

stack<T> stk;                // stack采用模板类实现,stack对象的默认构造形式
stack( const stack &stk);    //拷贝构造函数

赋值操作

stack& operator=(const stack &stk);     //重载等号操作符

数据存取

push(elem) ;    //向栈顶添加元素
pop();          //从栈顶移除第一个元素
top();          //返回栈顶元素

大小操作

empty();    //判断堆栈是否为空
size();     //返回栈的大小

二、Queue容器

1. 基本概念

Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口
在这里插入图片描述
队列容器允许从一端新增元素,从另一端移除元素
队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为
队列中进数据称为—入队push
队列中出数据称为—出队pop

2. 常用接口

构造函数、赋值操作、数据存取、大小操作

功能描述: 队容器常用的对外接口
构造函数

queue<T> que;                //queue采用模板类实现,queue对象的默认构造形式
queue( const queue &que);    //拷贝构造函数

赋值操作

queue& operator=(const queue &que);    //重载等号操作符

数据存取

push(elem) ;    //往队尾添加元素
pop();          //从队头移除第一个元素
back();         //返回最后一个元素
front();        //返回第一个元素

大小操作

empty();    //判断堆栈是否为空
size();    //返回栈的大小

三、示例代码

stack.cpp

#include<iostream>
#include<string>
#include<stack>
using namespace std;

//栈容器常用接口
void test01()
{
	//创建栈容器 栈容器必须符合先进后出
	stack<int> s;
	
	//入栈
	s.push(10); 
	s.push(20); 
	s.push(30); 
	
	while(!s.empty())
	{
		cout<<"栈顶元素为:"<<s.top()<<endl;
		s.pop();   //弹出栈顶元素 
	}
	cout<<"栈的大小为:"<<s.size()<<endl; 
} 

int main()
{
	test01();
	
	system("pause");
	return 0;
}

queue.cpp

#include<iostream>
#include<string>
#include<queue>
using namespace std;

class Person
{
	public:
		Person(string name,int age)
		{
			this->Name=name;
			this->Age=age;
		}
		
		string Name;
		int Age;
};

void test01()
{
	//创建队列
	queue<Person> p;     
	
	//准备数据
	Person p1("唐三藏",40);
	Person p2("孙悟空",70);
	Person p3("猪八戒",60);
	Person p4("沙师弟",50);
	
	//入队 
	p.push(p1);
	p.push(p2);
	p.push(p3);
	p.push(p4); 
	
	cout<<"出队前 队列大小:"<<p.size()<<endl;
	
	//判断队列是否为空,不为空 取对头和队尾,出队
	cout<<"逐步出队:"<<endl; 
	while(!p.empty()) 
	{
		cout<<endl<<"对头元素 --- 姓名为:"<<p.front().Name<<"   队头元素 --- 年龄为:"<<p.front().Age<<endl;
		cout<<"对尾元素 --- 姓名为:"<<p.back().Name<<"   队尾元素 --- 年龄为:"<<p.back().Age<<endl;
		
		//出队
		p.pop(); 
	}
	cout<<"出队完成!"<<endl<<endl;
	cout<<"出队后 队列大小:"<<p.size()<<endl;
}

int main()
{
	test01();
	
	system("pause");
	return 0;
}

原文链接:https://blog.csdn.net/Dustinthewine/article/details/125836242

栏目分类
最近更新