中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++基礎學習之利用兩個棧實現一個隊列

發布時間:2020-10-04 08:04:54 來源:腳本之家 閱讀:117 作者:lixiaogang_theanswer 欄目:編程語言

1 .給出類類型如下:有兩個成員變量,分別是兩個stack容器,存放的元素類型是 int;stack的特點是:先進后出;而隊列queue的特點是先進先出;現在用兩個 stack容器來實現隊列:

實現代碼:

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

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


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

#include "queue.h"

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

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

//返回隊首元素
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; 
}

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

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

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



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

分析過程:

讓s1作為存儲空間,而s2作為臨時緩沖區。

進行入隊操作時,將元素壓入s1。

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

C++基礎學習之利用兩個棧實現一個隊列

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝应县| 攀枝花市| 饶平县| 岳阳县| 武汉市| 黄平县| 大渡口区| 四会市| 封丘县| 牙克石市| 同心县| 彭州市| 德惠市| 奉节县| 文成县| 册亨县| 蚌埠市| 华蓥市| 门源| 桐柏县| 尼木县| 阿巴嘎旗| 南汇区| 七台河市| 隆回县| 太和县| 封开县| 嘉鱼县| 丹江口市| 新化县| 扶绥县| 莱州市| 东海县| 玉龙| 乌兰县| 钟山县| 栾城县| 保山市| 嘉祥县| 子洲县| 嘉荫县|