1. 程式人生 > >C++基礎:C++標準庫之棧(stack)和佇列(queue)

C++基礎:C++標準庫之棧(stack)和佇列(queue)

在C++標準庫(STL)中,實現了棧和佇列,方便使用,並提供了若干方法。以下作簡要介紹。

1、棧(stack)說明及舉例:

使用棧,要先包含標頭檔案 : #include<stack>

定義棧,以如下形式實現: stack<Type> s; 其中Type為資料型別(如 int,float,char等)。

棧的主要操作:

s.push(item);		//將item壓入棧頂
s.pop();			//刪除棧頂的元素,但不會返回
s.top();			//返回棧頂的元素,但不會刪除
s.size();			//返回棧中元素的個數
s.empty();			//檢查棧是否為空,如果為空返回true,否則返回false 

棧操作舉例:

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

void main()
{
	stack<int> s;
	int num;

	cout<<"------Test for Stack-------"<<endl;
	cout<<"Input number:"<<endl;
	
	while(cin>>num)
	{
		s.push(num);
	}

	cout<<"The Stack has "<<s.size()<<" numbers.They are:"<<endl;
	while(!s.empty())
	{
		cout<<s.top()<<" ";
		s.pop();
	}
	cout<<"\nNow the size is "<<s.size()<<endl;
	system("Pause");
}

結果截圖:

2、佇列(queue)說明及舉例:

使用佇列,要先包含標頭檔案 : #include<queue>

定義佇列,以如下形式實現: queue<Type> q; 其中Type為資料型別(如 int,float,char等)。

佇列的主要操作:

q.push(item)           //將item壓入佇列尾部
q.pop()                //刪除隊首元素,但不返回
q.front()              //返回隊首元素,但不刪除
q.back()               //返回隊尾元素,但不刪除
q.size()               //返回佇列中元素的個數
q.empty()              //檢查佇列是否為空,如果為空返回true,否則返回false

佇列操作舉例

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

void main()
{
	queue<int> q;
	int num;

	cout<<"------Test for Queue-------"<<endl;
	cout<<"Input number:"<<endl;
	while(cin>>num)
	{
		q.push(num);
	}
	cout<<"Now the Queue has "<<q.size()<<" numbers."<<endl;
	cout<<"The first is "<<q.front()<<endl;
	cout<<"The last is "<<q.back()<<endl;
	cout<<"All numbers:"<<endl;
	while(!q.empty())
	{
		cout<<q.front()<<" ";
		q.pop();
	}
	cout<<"Now the Queue has "<<q.size()<<" numbers."<<endl;
	system("Pause");


}

結果截圖: