返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++如何实现Stack方法
  • 775
分享到

C++如何实现Stack方法

2023-07-02 12:07:01 775人浏览 安东尼
摘要

这篇“c++如何实现Stack方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现Stack方法”文章吧。sta

这篇“c++如何实现Stack方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现Stack方法”文章吧。

stack模拟

stack是一种容器适配器,专门在具有后进先出的上下文环境中,其删除只能是在一端进行操作。

stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出 。

stack的底层原理可以是任何标椎的容器类模板或者一些特定的容器类,这些容器类应该支持以下操作:

  • empty:判空操作。

  • back:尾部元素获取。

  • push_back:尾部插入元素操作

  • pop_back:尾部删除元素操作。

模拟实现

template<class T, class Con = deque<T>>    class stack    {    public:        stack();        void push(const T& x)        {            _c.push_back(x);        }        void pop()        {            _c.pop_back();        }        T& top()        {            return _c.back()        }        const T& top()const        {            return _c.back();        }        size_t size()const        {            return _c.size();        }        bool empty()const        {            return _c.empty();        }    private:        Con _c;    };

示例代码

直接上代码。

SeqStack.h

#pragma once#define MAX_SIZE 1024#define TRUE 1#define FALSE 0typedef struct SEQSTACK {void *data[MAX_SIZE];int size;}SeqStack;class MySeqStack{public:MySeqStack();~MySeqStack();void init();void pushStack(void *data);void * getTopStack();void popStack();int isEmpty();int getSizeStack();void clearStack();private:SeqStack *m_stack;};

SeqStack.cpp

#include "SeqStack.h"#include <iOStream>using namespace std;MySeqStack::MySeqStack(){}MySeqStack::~MySeqStack(){if (m_stack != nullptr) {delete m_stack;m_stack = nullptr;}}void MySeqStack::init(){m_stack = new SeqStack;if (m_stack == nullptr) {cout << "分配内存为空" << endl;}else {m_stack->size = 0;for (int i = 0; i < m_stack->size; ++i) {m_stack->data[i] = nullptr;}}}void MySeqStack::pushStack(void * data){if (m_stack->size == MAX_SIZE){return;}if (m_stack == nullptr){return;}if (data == nullptr) {return;}m_stack->data[m_stack->size] = data;m_stack->size++;}void * MySeqStack::getTopStack(){if (m_stack == nullptr){return nullptr;}if (m_stack->size == 0){return nullptr;}return m_stack->data[m_stack->size-1];}void MySeqStack::popStack(){if (m_stack == nullptr){return ;}if (m_stack->size == 0){return ;}m_stack->data[m_stack->size - 1] = nullptr;m_stack->size--;}int MySeqStack::isEmpty(){if (m_stack == nullptr){return -1;}if (m_stack->size == 0) {return TRUE;}return FALSE;}int MySeqStack::getSizeStack(){return m_stack->size;}void MySeqStack::clearStack(){if (m_stack == nullptr){return ;}for (int i = 0; i < m_stack->size; ++i){m_stack->data[i] = nullptr;}m_stack->size = 0;}

main.cpp

#include <iostream>#include "SeqStack.h"using namespace std;typedef struct PERSON {char name[64];int age;int score;}Person;void test() {MySeqStack *stack = new MySeqStack;stack->init();Person p1 = { "hudf",3,56 };Person p2 = { "akso",4,67 };Person p3 = {"及家属的",6,88};Person p4 = { "口袋",7,98 };Person p5 = { "husdh",8,34 };stack->pushStack(&p1);stack->pushStack(&p2);stack->pushStack(&p3);stack->pushStack(&p4);stack->pushStack(&p5);while (stack->getSizeStack() > 0){Person *data = (Person*)stack->getTopStack();cout << "name = " << data->name << " age= " << data->age << " score=" << data->score << endl;stack->popStack();}delete stack;stack = nullptr;}int main(){test();return 0;}// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单// 调试程序: F5 或调试 >“开始调试”菜单// 入门使用技巧: //   1. 使用解决方案资源管理器窗口添加/管理文件//   2. 使用团队资源管理器窗口连接到源代码管理//   3. 使用输出窗口查看生成输出和其他消息//   4. 使用错误列表窗口查看错误//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

开发环境

vs2017控制台输出程序。

运行结果

C++如何实现Stack方法

以上就是关于“C++如何实现Stack方法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: C++如何实现Stack方法

本文链接: https://lsjlt.com/news/341981.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++如何实现Stack方法
    这篇“C++如何实现Stack方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现Stack方法”文章吧。sta...
    99+
    2023-07-02
  • C++详解实现Stack方法
    目录栈简介stack模拟示例代码开发环境运行结果栈简介 栈本着先进后出的原则,来存取数据。作为数据结构中的一种,这里不多介绍相关栈。仅以此文记录C++中栈的实现,可帮助提升编程能力与...
    99+
    2024-04-02
  • Golang如何实现数据结构Stack
    本文小编为大家详细介绍“Golang如何实现数据结构Stack”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang如何实现数据结构Stack”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。介绍Stack在计...
    99+
    2023-07-06
  • C++ stack与queue模拟实现详解
    目录stack与queue模拟实现 stackqueue为什么选择deque作为stack和queue的底层默认容器总结stack与queue模拟实现 在stl中,stack(...
    99+
    2024-04-02
  • 如何实现C#扩展方法
    这篇文章将为大家详细讲解有关如何实现C#扩展方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我们的编程生涯中我们要使用很多很多类库,这些类库有的是我们自己开发的,我们有她的代码,有的是第三方发布的,我...
    99+
    2023-06-17
  • C++stack与queue使用方法详细讲解
    目录Stack的介绍和使用stack的默认定义的模板stack的使用queue的介绍和使用queue的默认定义的模板queue的使用Stack的介绍和使用 stack的文档介绍 st...
    99+
    2023-01-04
    C++ stack与queue C++ stack使用方法 C++ queue使用方法
  • C#如何实现迭代器方法
    这篇文章主要介绍C#如何实现迭代器方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.迭代器方法可以使用foreach循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。迭代器用法法介绍。  迭代器用于依次返...
    99+
    2023-06-29
  • C++中的stack容器如何使用
    这篇文章主要讲解了“C++中的stack容器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的stack容器如何使用”吧!stack容器1 简介① stack是一种先进后出的容...
    99+
    2023-07-05
  • Pandas使用stack和pivot实现数据透视的方法
    目录前言 一、经过统计得到多维度指标数据二、使用unstack实现数据的二维透视三、使用pivot简化透视四、stack、unstack、pivot的语法1.stack2....
    99+
    2024-04-02
  • C++如何实现二分法求方程
    这篇文章将为大家详细讲解有关C++如何实现二分法求方程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。二分法是一种求解方程近似根的方法。对于一个函数 f(x)f(x),使用二分法求 f(...
    99+
    2023-06-15
  • 如何理解C++实现程序方法
    这篇文章将为大家详细讲解有关如何理解C++实现程序方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++实现程序解决问题,本程序采用射线法,由待测试点(v)水平引出一条射线B(v,w),计...
    99+
    2023-06-17
  • C#如何实现工厂方法模式
    本篇内容介绍了“C#如何实现工厂方法模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,...
    99+
    2023-07-02
  • C++详细讲解stack与queue的模拟实现
    目录容器适配器双端队列概念结构deque迭代器优缺点stack模拟queue模拟实现容器适配器 适配器是一种设计模式(设计模式是一套反复使用的、大部分人知道的代码设计经验的总结),该...
    99+
    2024-04-02
  • C++实现stack与queue数据结构的模拟
    目录stack模拟实现queue模拟实现栈和队列都是容器适配器搞出来的,对容器进行封装,从而实现先进先出和后进先出的结构 stack模拟实现 常规实现数据结构的思路 template...
    99+
    2023-05-16
    C++ stack与queue模拟 C++ stack模拟实现 C++ queue模拟实现
  • 如何实现C#扩展方法性能测试
    这篇文章给大家分享的是有关如何实现C#扩展方法性能测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C#扩展方法性能测试方法三则一共是如下三个方法与string.IsNullOrEmpty(称为“原方法”)比较:...
    99+
    2023-06-17
  • 亲自教你实现栈及C#中Stack源码分析
    定义 栈又名堆栈,是一种操作受限的线性表,仅能在表尾进行插入和删除操作。 它的特点是先进后出,就好比我们往桶里面放盘子,放的时候都是从下往上一个一个放(入栈),取的时候只能从上往下一...
    99+
    2024-04-02
  • C++中Stack(栈)的使用方法与基本操作详解
    目录一、stack概述二、stack的基本操作1、头文件2、stack创建方式3、栈顶和栈底操作4、元素添加和删除5、栈的大小操作6、判断栈是否为空三、stack的实际应用一、sta...
    99+
    2023-05-19
    C++ Stack栈用法 C++ Stack C++ 栈
  • C#如何实现前台与后台方法互调
    本篇文章为大家展示了C#如何实现前台与后台方法互调,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前台与后台方法互调是很多读者关心的功能。下面提供的代码,可以实现C#前台与后台方法互调的目的。<...
    99+
    2023-06-17
  • 如何在C++项目中实现一个aligned_malloc方法
    这篇文章将为大家详细讲解有关如何在C++项目中实现一个aligned_malloc方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。malloc的默认行为int main(){&n...
    99+
    2023-06-07
  • javascript方法如何实现
    JavaScript是一种强大的脚本语言,被广泛应用于Web前端开发、后端开发和移动端开发等领域。在JavaScript中,方法是指一组用于完成特定任务的函数。本篇文章将介绍有关JavaScript方法的基础知识,以及如何编写和调用这些方法...
    99+
    2023-05-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作