91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

玉树县| 济南市| 商城县| 亚东县| 晋江市| 蓝田县| 余姚市| 旬邑县| 秀山| 进贤县| 禄丰县| 苏尼特左旗| 青岛市| 江油市| 岳普湖县| 临漳县| 涡阳县| 宁陵县| 建瓯市| 奉化市| 漳浦县| 左权县| 铁力市| 肇源县| 察隅县| 汕头市| 安吉县| 西乌| 桐城市| 景宁| 兰溪市| 米林县| 嘉定区| 扶绥县| 乌拉特前旗| 清镇市| 读书| 灵川县| 泾源县| 靖江市| 东山县|