C++中棧和佇列用法詳解
阿新 • • 發佈:2019-02-01
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)程式碼例項:
2.C++佇列用法詳解#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; }
佇列Queue是一種容器介面卡,它給予程式設計師一種先進先出(FIFO)的資料結構。
(1)包含標頭檔案:#include<queue>
(2)定義佇列:queue模版類需要兩個模版引數,一個是元素型別,一個是容器型別,元素型別是必要的,容器型別是可選的,預設是佇列型別。queue<int> q;
(3)相關操作:
(4)程式碼例項:queue入隊,如例:q.push(x); 將x 接到佇列的末端。 queue出隊,如例:q.pop(); 彈出佇列的第一個元素,注意,並不會返回被彈出元素的值。 訪問queue隊首元素,如例:q.front(),即最早被壓入佇列的元素。 訪問queue隊尾元素,如例:q.back(),即最後被壓入佇列的元素。 判斷queue佇列空,如例:q.empty(),當佇列空時,返回true。 訪問佇列中的元素個數,如例:q.size()
#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;
}
總結:關於堆疊和佇列的具體用法根據專案實際需求而定,高深層次的堆疊和佇列的使用有待深究,本文僅供參考!