c++之栈和队列

描述

1.stack容器

      stack ,栈(堆栈),是一种先进后出(First In Last Out,FILO)的数据结构,先插入的数据在栈底,后放入的数据在栈顶,所有的数据只能从栈顶取出。

     在生活中先进后出的例子友很多,例如我们在桌子上摞书,先放的在最下面,后放的在最上面。在取书的时候也是先取最后放的,最才能取到第一个放的。

队列

    在栈容器中,只有栈顶数据才可以被外界访问,因此stack不存在遍历。

2.栈容器使用示例

  •   stack(栈)容器特性:

      先进后出(后进先出) --类似与往袋子中装东西,先放进去的在最下面,最后放进行的可以先拿出来;第一个放进去的 --->栈底

      最后一个放进的 --->栈顶

      stack只允许从栈顶取数据

     stack容器无法对数据进行排序sort,但可以判断容器是否为空empty,可以计算元素的个数size;

  • 相关函数:
stack构造函数:
	stack< T > stk; //默认构造
	stack(const stack &p);//拷贝构造
stack赋值
	operator=() --运算符号重载
stack入栈与出栈:
	push() -- >入栈
	emplace() -- >入栈(在容器尾部插入元素)
	pop() --- >出栈
	top() -- >查看栈顶元素
	empty() -- >判断容器是否为空
	size()  -- >获取元素个数
	swap -- >交换元素

使用示例:

#include < iostream >
#include < stack >
using namespace std;
void test()
{
	//创建一个stack容器
	stack< int > stk;
	//入栈
	stk.push(10);
	stk.push(20);
	stk.push(30);
	stk.push(40);
	stk.emplace(100);
	stack< int >stk3(stk);//拷贝构造
	cout < < "stk元素个数:" < < stk.size() < < endl;
	//查看stk元素
	while (!stk.empty())
	{
		cout < < stk.top() < < " ";//查看栈顶元素
		stk.pop();//出栈
	}
	cout < < endl;
	stack< int >stk2 = stk;//赋值
	if (stk2.empty())
	{
		cout < < "stk2为空" < < endl;
	}
	//入栈
	stk2.push(111);
	stk2.push(222);
	stk2.swap(stk3);

	//查看stk2元素
	cout < < "skt2栈内容:" < < endl;
	while (!stk2.empty())
	{
		cout < < stk2.top() < < " ";//查看栈顶元素
		stk2.pop();//出栈
	}
	cout < < endl;
	
	//查看stk3元素
	cout < < "skt3栈内容:" < < endl;
	while (!stk3.empty())
	{
		cout < < stk3.top() < < " ";//查看栈顶元素
		stk3.pop();//出栈
	}
	cout < < endl;
}
int main()
{
	test();
	system("pause");
}
队列

3.queue容器

      队列(queue 和堆栈相似,是一种可以存取的数据结构,不同的是队列的存取是在两个不同的方向进行的,因此其主要特征是先进先出(First-in-first-out,FIFO),类似于我们生活中的水管。

队列

4.queue容器使用示例

      队列只需要从对尾插入数据(入队,push_back),对头取数据(出队,pop_front);

      队列只能访问对头和队尾数据,其他数据需要出队才能访问,所以不存在遍历队列;

      返回队列头数据:front()

      返回队列尾数据:back()

  • 相关函数:
队列构造函数:
	queue< T > que; //队列通过类模板实现,默认构造函数
	queue(const queue &p);
	operator=(queue &p)  -- >运算符重载
相关成功函数:
	入队:push()
	出队:pop()
获取队列头数据:front();
获取队列尾数据:back();
判断队列是否为空:empty();
获取队列中元素个数:size();
互换元素:swap();

      使用示例:

#include < iostream >
#include < queue >
using namespace std;
void test()
{
	queue< int > q;
	//入队
	q.push(10);
	q.push(20);
	q.push(30);
	q.emplace(40);//从队列尾插入数据
	cout < < "队列中成员个数:" < < q.size() < < endl;
	while (!q.empty())//判断队列是否为空
	{
		cout < < "队列头:" < < q.front() < < "t队列尾:" < < q.back() < < endl;
		q.pop();//出队
	}
	cout < < "队列中成员个数:" < < q.size() < < endl;
	
}
int main()
{
	test();
	system("pause");
}
队列
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分