日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

欄目分類
最近更新