1. 程式人生 > >C++中棧和佇列用法詳解

C++中棧和佇列用法詳解

1.C++棧用法詳解

堆疊是一個容器的改編,棧是限定僅在表尾進行插入或刪除操作的線性表,因此表尾端成為棧頂,相應的,表頭端成為棧底,不含有任何元素的棧稱為空棧。它實現了一個先進後出的資料結構(FILO),

棧一般採用陣列作為其儲存結構,這樣做可以避免使用指標,簡化程式,當然陣列需要預先宣告靜態資料區的大小,但這不是問題,因為即便是頻繁進出入棧操作,任何時刻棧元素的實際個數也不會很多,

為棧預留一個足夠大但又不佔用太多空間並不是很困難,如果不能做到這一點,那麼節省記憶體的方法就是使用連結串列儲存棧。

(1)包含標頭檔案 #include<stack>

(2)定義堆疊:stack模版類需要兩個模版引數,一個是元素型別,一個是容器型別,元素型別是必要的,容器型別是可選的,預設是棧型別。stack<int> s;

(3)相關操作:

s.empty()          如果棧為空返回true,否則返回false
    s.size()           返回棧中元素的個數
    s.pop()            刪除棧頂元素但不返回其值
    s.top()            返回棧頂的元素,但不刪除該元素
    s.push()           在棧頂壓入新元素
(4)程式碼例項:
#include "stdafx.h"
#include <iostream>
#include <stack>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	int i,n;
	stack <int> s;
	for (i=0;i<10;i++)
	{
		s.push(i);
	}
	n=s.size();
	cout<<"堆疊個數:"<<n<<endl;
	while(!s.empty())
	{
	cout<<"堆疊輸出:"<<s.top()<<endl;
		s.pop();
	}
	getchar();
	return 0;
}
2.C++佇列用法詳解

佇列Queue是一種容器介面卡,它給予程式設計師一種先進先出(FIFO)的資料結構。

(1)包含標頭檔案:#include<queue>

(2)定義佇列:queue模版類需要兩個模版引數,一個是元素型別,一個是容器型別,元素型別是必要的,容器型別是可選的,預設是佇列型別。queue<int> q;

(3)相關操作:

queue入隊,如例:q.push(x); 將x 接到佇列的末端。
queue出隊,如例:q.pop(); 彈出佇列的第一個元素,注意,並不會返回被彈出元素的值。
訪問queue隊首元素,如例:q.front(),即最早被壓入佇列的元素。
訪問queue隊尾元素,如例:q.back(),即最後被壓入佇列的元素。
判斷queue佇列空,如例:q.empty(),當佇列空時,返回true。
訪問佇列中的元素個數,如例:q.size()
(4)程式碼例項:
#include "stdafx.h"
#include <iostream>
#include <queue>
#include <stack>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	int i,n,n1;
	stack <int> s;
	queue <int> q;
	for (i=0;i<10;i++)
	{
		s.push(i);
		q.push(i);
	}
	n=s.size();
	n1=q.size();
	cout<<"堆疊個數:"<<n<<endl;
	cout<<"佇列個數:"<<n1<<endl;
	while(!s.empty())
	{
		cout<<"堆疊輸出:"<<s.top()<<endl;
		s.pop();
	}
	cout<<endl<<endl;
	while(!q.empty())
	{
		cout<<"佇列輸出:"<<q.front()<<endl;
		q.pop();
	}
	getchar();
	return 0;
}

總結:關於堆疊和佇列的具體用法根據專案實際需求而定,高深層次的堆疊和佇列的使用有待深究,本文僅供參考!