欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++基礎(chǔ)學(xué)習(xí)之利用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列

 更新時(shí)間:2019年05月19日 14:42:27   作者:lixiaogang_theanswer  
這篇文章主要給大家介紹了關(guān)于C++基礎(chǔ)學(xué)習(xí)之利用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

1 .給出類類型如下:有兩個(gè)成員變量,分別是兩個(gè)stack容器,存放的元素類型是 int;stack的特點(diǎn)是:先進(jìn)后出;而隊(duì)列queue的特點(diǎn)是先進(jìn)先出;現(xiàn)在用兩個(gè) stack容器來實(shí)現(xiàn)隊(duì)列:

實(shí)現(xiàn)代碼:

-------------------------------------
------------- queue.h ---------------
#pragma once
#include <iostream>
#include <stdlib.h>
#include <stack>
using namespace std;

class Queue
{
private:
 stack<int> s1;
 stack<int> s2;
public:
 //入隊(duì)
 void Push(const int& val);
 //出隊(duì)
 void Pop();
 //返回隊(duì)首元素
 int& Front();
 //返回隊(duì)尾元素
 int& Back();
 //判斷隊(duì)列是否為空
 bool Empty();
 //返回隊(duì)列大小
 int Size();
};


----------------------------------------
------------- queue.cpp ----------------

#include "queue.h"

//入隊(duì)
void Queue::Push(const int& val)
{
 //棧s1作隊(duì)列的隊(duì)尾,s2作為隊(duì)列的隊(duì)頭
 s1.push(val);
 cout<<val<<" ";
}

//出隊(duì)
void Queue::Pop()
{
 while (!s1.empty())
 {
 int val = s1.top();
 s2.push(val);
 s1.pop();
 }
 s2.pop();
}

//返回隊(duì)首元素
int& Queue::Front()
{
 while (!s1.empty())
 {
 s2.push(s1.top());
 s1.pop();
 }

 int temp = s2.top();
 while (!s2.empty())
 {
 int var = s2.top();
 s1.push(var);
 s2.pop();
 }
 return temp; 
}

//返回隊(duì)尾元素
int& Queue::Back()
{
 return s1.top();
}

//判斷隊(duì)列是否為空
bool Queue::Empty()
{
 if (s1.empty()&&s2.empty())
 {
 return true;
 }
 else
 return false;
}

//返回隊(duì)列大小
int Queue::Size()
{
 return s1.size()+s2.size();
}



--------------------------------------
--------------- test.cpp -------------
#include "queue.h"
void test()
{
 Queue q1;
 cout<<"入隊(duì)列操作:"<<endl;
 cout<<"插入的隊(duì)列元素分別是:"<<endl;
 q1.Push(1);
 q1.Push(2);
 q1.Push(3);
 q1.Push(4);
 q1.Push(5);
 q1.Push(6);
 cout<<"判斷隊(duì)列是否為空!"<<endl;
 if (q1.Empty())
 {
 cout<<"empty."<<endl;
 }
 else
 {
 cout<<"not empty."<<endl;
 }
 cout<<"獲取隊(duì)頭元素:"<<endl;
 cout<<q1.Front()<<endl;
 cout<<"獲取隊(duì)尾元素:"<<endl;
 cout<<q1.Back()<<endl;
 cout<<"獲取隊(duì)列的大小操作:"<<endl;
 cout<<q1.Size()<<endl;
 printf("出隊(duì)列操作:\n");
 q1.Pop();
}
int main()
{
 test();
 system("pause");
 return 0;
}

分析過程:

讓s1作為存儲(chǔ)空間,而s2作為臨時(shí)緩沖區(qū)。

進(jìn)行入隊(duì)操作時(shí),將元素壓入s1。

進(jìn)行出隊(duì)操作時(shí),將s1的元素逐個(gè)“倒入”(彈出并壓入)s2,將s2的頂元素彈出作為出隊(duì)元素,之后再將s2剩下的元素逐個(gè)“倒回”s1。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論