最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++堆棧類模板實(shí)現(xiàn)代碼

 更新時(shí)間:2020年08月27日 10:11:02   作者:theVicTory  
這篇文章主要為大家詳細(xì)介紹了C++堆棧類模板的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近在復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu),涉及到堆棧的實(shí)現(xiàn),通過(guò)類模板可以使堆棧的存儲(chǔ)數(shù)據(jù)類型更為靈活,下面是堆棧的實(shí)現(xiàn)代碼:

#ifndef MYSTACK_H
#define MYSTACK_H
#include <iostream>
using namespace std;
 
template <typename T>
class MyStack
{
public:
 MyStack(int size);
 ~MyStack();
 bool stackEmpty();//判空
 bool stackFull();//判滿
 void clearStack();//清空
 int stackLength();//長(zhǎng)度
 bool push(T elem);//壓棧
 bool pop(T &elem);//出棧
 bool stackTop(T &elem);//返回棧頂
 void stackTranverse();//遍歷棧
 
private:
 T *m_pStack;//棧指針
 int m_iSize;//棧容量
 int m_iTop;//棧頂
};
 
template <typename T>
MyStack<T>::MyStack(int size)
{
 m_iSize = size;
 m_pStack = new T[m_iSize];
 m_iTop = 0;
}
template <typename T>
MyStack<T>::~MyStack()
{
 delete m_pStack;
 m_pStack = NULL;
}
template <typename T>
bool MyStack<T>::stackEmpty() {//判空
 return m_iTop == 0 ? true : false;
}
template <typename T>
bool MyStack<T>::stackFull() {//判滿
 return m_iTop == m_iSize ? true : false;
}
template <typename T>
int MyStack<T>::stackLength() {//棧長(zhǎng)度
 return m_iTop;
}
template <typename T>
void MyStack<T>::clearStack() {//清空
 m_iTop = 0;
}
template <typename T>
bool MyStack<T>::push(T elem) {//壓棧
 if (stackFull()) {
 return false;
 }
 else {
 m_pStack[m_iTop++] = elem;
 return true;
 }
}
template <typename T>
bool MyStack<T>::pop(T &elem) {//出棧
 if (stackEmpty())
 {
 return false;
 }
 else {
 elem = m_pStack[--m_iTop];
 return true;
 }
}
template <typename T>
bool MyStack<T>::stackTop(T &elem) {//返回棧頂元素
 if (stackEmpty())
 {
 return false;
 }
 else {
 elem = m_pStack[m_iTop-1];
 return true;
 }
}
template <typename T>
void MyStack<T>::stackTranverse() {//遍歷棧
 int i = 0;
 for (i = 0; i < m_iTop; i++) {
 cout << m_pStack[i];
 }
}
#endif

其中需要注意的是類模板需要在每個(gè)函數(shù)之前寫上模板定義template <typename T>,并且將類名寫成MyStack<T>,函數(shù)中涉及到類的使用時(shí)用T代替即可。

接著我用一個(gè)坐標(biāo)點(diǎn)類Coordinate來(lái)做測(cè)試:

在Coordinate類中利用函數(shù)重載運(yùn)算符<<實(shí)現(xiàn)坐標(biāo)點(diǎn)的打印

#include <ostream>
using namespace std;
 
class Coordinate
{
public:
 friend ostream& operator<<(ostream &out, Coordinate &coor);
 Coordinate(int x=0,int y=0)
 {
 m_iX = x;
 m_iY = y;
 }
 
 ~Coordinate()
 {
 }
private:
 int m_iX;
 int m_iY;
};
ostream& operator<<(ostream &out, Coordinate &coor) {
 out << "(" << coor.m_iX << "," << coor.m_iX << ")" << endl;
 return out;
}

下面是測(cè)試主函數(shù):

#include <iostream>
#include "MyStack.h"
#include "Coordinate.h"
using namespace std;
 
int main() {
 MyStack<Coordinate> *pStack = new MyStack<Coordinate>(5);
 
 pStack->push(Coordinate(3, 5));//坐標(biāo)點(diǎn)入棧
 pStack->push(Coordinate(7, 5));
 pStack->push(Coordinate(6, 5));
 pStack->push(Coordinate(4, 5));
 pStack->push(Coordinate(3, 5));
 
 pStack->stackTranverse();//遍歷棧
 Coordinate t;
 pStack->pop(t);//出棧
 cout <<"彈出的t為:"<< t ;
 cout << "長(zhǎng)度:" << pStack->stackLength();
 pStack->clearStack();//清空棧
 pStack->stackTranverse();
 
 //delete pStack;
 //pStack = NULL;
 
 system("pause");
 return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用?c++?在?windows?上定時(shí)執(zhí)行一個(gè)函數(shù)的示例代碼

    使用?c++?在?windows?上定時(shí)執(zhí)行一個(gè)函數(shù)的示例代碼

    這篇文章主要介紹了使用c++在windows上穩(wěn)定定時(shí)執(zhí)行一個(gè)函數(shù),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 如何尋找數(shù)組中的第二大數(shù)

    如何尋找數(shù)組中的第二大數(shù)

    本篇文章是對(duì)如何尋找數(shù)組中的第二大數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • c++用指針交換數(shù)組的實(shí)例講解

    c++用指針交換數(shù)組的實(shí)例講解

    下面小編就為大家分享一篇c++用指針交換數(shù)組的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲操作

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲操作

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Visual Studio 2019 DLL動(dòng)態(tài)庫(kù)連接實(shí)例(圖文教程)

    Visual Studio 2019 DLL動(dòng)態(tài)庫(kù)連接實(shí)例(圖文教程)

    這篇文章主要介紹了Visual Studio 2019 DLL動(dòng)態(tài)庫(kù)連接實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • VS2022設(shè)置編碼方式為utf-8的三種方式小結(jié)

    VS2022設(shè)置編碼方式為utf-8的三種方式小結(jié)

    本文主要介紹了VS2022設(shè)置編碼方式為utf-8的三種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • QT實(shí)現(xiàn)C++數(shù)據(jù)類與json轉(zhuǎn)換

    QT實(shí)現(xiàn)C++數(shù)據(jù)類與json轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了如何使用QT實(shí)現(xiàn)C++數(shù)據(jù)類與json轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • C++面試常見(jiàn)問(wèn)題整理匯總

    C++面試常見(jiàn)問(wèn)題整理匯總

    這篇文章主要介紹了C++面試常見(jiàn)問(wèn)題整理,匯總了C++基本語(yǔ)法、面向?qū)ο蟾鞣N概念與易錯(cuò)點(diǎn),需要的朋友可以參考下
    2017-05-05
  • C++中的extern “C”用法詳解

    C++中的extern “C”用法詳解

    這篇文章主要介紹了C++中的extern “C”用法詳解,簡(jiǎn)單來(lái)說(shuō),extern “C”是C++聲明或定義C語(yǔ)言符號(hào)的方法,是為了與C兼容,需要的朋友可以參考下
    2015-03-03
  • Opencv實(shí)現(xiàn)對(duì)象提取與測(cè)量

    Opencv實(shí)現(xiàn)對(duì)象提取與測(cè)量

    這篇文章主要為大家詳細(xì)介紹了基于Opencv實(shí)現(xiàn)對(duì)象提取與測(cè)量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評(píng)論

靖宇县| 民乐县| 大冶市| 辽源市| 治县。| 津市市| 金平| 涡阳县| 黄大仙区| 正镶白旗| 白银市| 辽阳市| 晋城| 杂多县| 涪陵区| 精河县| 静乐县| 宜城市| 十堰市| 邹平县| 浮梁县| 武鸣县| 桃园市| 南木林县| 启东市| 阿拉善右旗| 正宁县| 垫江县| 崇阳县| 嵊州市| 金昌市| 叙永县| 金门县| 华池县| 旌德县| 息烽县| 青冈县| 千阳县| 额尔古纳市| 乌兰察布市| 剑川县|