栈的c++实现

栈的基本函数C++实现        前两天自己照着一些博客仿写了栈的C++,其间也出了一些问题,但是通过调试,各个基本函数都得到了验证。当然可能存在我不知道的问题,如果有小伙伴验证我代码的时候出现了问题希望可以告知我一下,非常感谢。 代码如下: Stack.h文件 #pragma once //栈的基本函数实现 #include<iostream> #define STACK_INIT_SIZE ... 阅读详情

一 固定大小的栈

代码如下

//
//  stack.h
//  stack
//

#ifndef __stack__stack__
#define __stack__stack__

#include <stdio.h>

template <class Type>
class Stack
{
private:
    enum {MAX = 10};
    Type items[MAX];
    int top;
public:
    Stack();
    bool isempty();
    bool isfull();
    bool push(const Type & item);
    bool pop(Type &item);
};

template <class Type>
Stack<Type> ::Stack()
{
    top = 0;
}
template <class Type>
bool Stack<Type>::isempty()
{
    return top == 0;
}

template <class Type>
bool Stack<Type>::isfull()
{
    return top == MAX;
}

template <class Type>
bool Stack<Type>::push(const Type & item)
{
    if (top < MAX)
    {
        items[top++] = item;
        return true;
    }
    else
        return false;
}

template <class Type>
bool Stack<Type>::pop(Type & item)
{
    if (top > 0)
    {
        item = items[--top];
        return true;
    }
    else
        return false;
}


#endif /* defined(__stack__stack__) */

二 大小可变的栈

代码如下

#ifndef __stack__stcktp1__
#define __stack__stcktp1__

#include <stdio.h>

template <class Type>
class Stack {
private:
    enum {SIZE = 10};
    int stacksize;
    Type * items;
    int top;
public:
    explicit Stack(int ss = SIZE);
    Stack(const Stack & st);
    ~Stack() {delete [] items;}
    bool isempty() {return top == 0;}
    bool isfull() {return top == stacksize;}
    bool push(const Type & item);
    bool pop(Type & item);
    Stack & operator=(const Stack & st);
};

template <class Type>
Stack<Type> ::Stack(int ss):stacksize(ss),top(0)
{
    items = new Type[stacksize];
}

template <class Type>
Stack<Type> ::Stack(const Stack & st)
{
    stacksize = st.stacksize;
    top = st.top;
    items = new Type[stacksize];
    for (int i = 0; i < top; i++)
    {
        items[i] = st.items[i];
    }
}

template <class Type>
bool Stack<Type>::push(const Type & item)
{
    if (top < stacksize)
    {
        items[top++] = item;
        return true;
    }
    else
        return false;
}

template <class Type>
bool Stack<Type>::pop(Type &item)
{
    if (top > 0)
    {
        item = items[--top];
        return true;
    }
    else
        return false;
}

template<class Type>
Stack<Type> & Stack<Type>::operator=(const Stack<Type> &st)
{
    if (this == &st)
    {
        return *this;
    }
    delete []items;
    stacksize = st.stacksize;
    top = st.top;
    items = new Type[stacksize];
    for(int i = 0;i < top;i++)
    {
        items[i] = st.items[i];
    }
    return *this;
}

#endif /* defined(__stack__stcktp1__) */



用C++实现栈 首先,我们先了解一下什么是栈。 栈是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。 它具有先进后出,后进先出的特点。 栈的存储方式有两种,一种是顺序栈,另一种是链式栈。 顺序栈:顺序栈的存储结构是利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素,同时附设指针top是栈顶元素在顺序栈中的位置。栈顶指针top的初始值通常设置为-1. 链式栈:链式栈是一种数据存储结... 阅读详情

相关推荐

c++ 栈的数组实现

/* 栈的数组实现 */ #include using namespace std; #define MAXSIZE 10; template class Stack { public: //默认构造函数 Stack(); Stack(size_t maxElements); Stack(T data[],size_t maxElments); ~Stack(); //入栈

typistw的专栏 2019

类模板表示数组中元素数量的两种方式

模板常用作容器类,为容器类提供可重用代码是引入模板的主要动机。 允许指定数组大小的方法: 在类中使用动态数组和构造函数参数来提供元素数目(如模板类vector) template<class Type> class Stack { private: enum{SIZE = 10}; int stacksize; Type * items; public: explicit ...

Jibeon的学习之路 614

CANopen PDO 配置實戰:3步完成0x1800-0x1A00物件字典映射與事件觸發

本文详细解析CANopen PDO配置实战,通过3个关键步骤完成0x1800-0x1A00对象字典映射与事件触发设置。重点介绍COB-ID位域解析、映射参数配置及事件触发优化,帮助工程师实现工业自动化设备间毫秒级实时数据交换,提升系统通信效率。

weixin_33709609的博客 379

【CPP】栈简介及简化模拟实现

CPP栈和队列简单模拟实现

BinaryWiker的博客 905

Altium Designer操作技巧(1)——原理图中如何批量替换元器件?

《AltiumDesigner批量替换元器件技巧分享》摘要:本文介绍了两种在AltiumDesigner中批量替换元器件的实用方法。方法一通过“查找相似对象”功能,可精准匹配并批量修改器件参数;方法二利用ActiveBOM功能,在BOM表中直观操作器件替换,推荐使用第二种方法可使BOM管理更高效。这些技巧能有效减少物料种类、降低贴装成本,特别适用于电阻电容等常用器件的批量替换。关注公众号获取更多电子设计技巧。

u012526819的博客 2582

Nexus3国内高速下载指南:多版本全平台资源汇总

本文针对国内开发者从官网下载Nexus 3速度慢、易失败的问题,提供了详尽的解决方案。汇总了Windows、Linux、macOS等多个平台的Nexus 3历史及最新版本(如3.31.1)的国内高速下载链接,并附有版本选择建议与Linux环境下的快速启动指南,帮助用户高效获取和部署这一流行的仓库管理工具。

jwt8token的博客 432

栈的实现(cpp)链表实现

栈的结构体 template <class T> struct LinkNode { T Data; LinkNode *Next; LinkNode() : Next(nullptr) { cout << "Please input data: "; cin >> Data; } LinkNode(const T &data, LinkNode *next = nullptr) :

in_va的博客 398

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1874

C++实现栈

@这篇文档是由C++代码实现的环形队列 栈就是先进后出的一种数据结构,这篇文档通过数组实现栈,要求是:栈是顺序的(即栈的长度初始化后给定了,如果栈中插入元素到了最后一个位置表示栈已满不能再插入新的元素),其次栈的插入类型没有定,所以建立的是模板类和函数模板,最后通过调用类模板在main()函数中实现。 本文是以Visual Studio中新建的C++win32的控制台应用程序实现的,其中建立了头文...

u014114763的博客 833

DIY一个SM2262ENG 2TB Nvme固态硬盘,慧荣SM2262EN主控

网友订做的 材料: 慧荣科技的62en,2片1G 三星DDR4缓存,4颗PF29F04T2AOCTH1,8CE B17A。SM2262EN属于慧荣第二代PCIe SSD主控,支持PCIe G3×4通道和全新的NVMe 1.3规范、8个NAND通道设计,并提供完整固件设计,最大循序读取速度高达3.5GB/s,循序写入速度达3.0GB/s,随机读写则高达420K IOPS和420K IOPS。此外,还采用目前最先进的低功耗设计,无论是在待机还是在工作状态下,均展现超低功耗,有效减少30%的功耗,满足用户追求超

m0_55207244的博客 1万+

PCL 点云加权均值收缩

PCL 点云加权均值收缩

dayuhaitang1的博客 688

c++栈的实现

最近在学习数据结构,栈在这里总结一下c++实现的栈几种方法:1.使用数组这是几种方法里面最为简单的方法,直接放代码: “` include using namespace std; template class arraystack { public: arraystack(); ~arraystack(); t peek(); t top(...

baidu_41550746的博客 1686

ICM20948 DMP代码详解(69)

ICM20948 DMP代码详解(69)

phmatthaus的专栏 617

链式栈的 C++实现(附c++代码实现)

链式栈的思想和创建一个带头指针的链式线性表的思想非常相似,头指针指向栈顶指针。实现链式栈的创建空栈、入栈、出栈、遍历 还有查找 之类的功能可以在理解下面这些代码的思路之后非常容易写出! C++实现代码如下: //StackNode.h #pragma once #include<iostream> using namespace std; class StackNode { publ...

One_castle的博客 3665

lvgl 9虚拟键盘控件 (lv_keyboard) 使用指南

是 LittlevGL 提供的一个虚拟键盘控件,适用于在图形界面中输入文本。与按钮矩阵类似,虚拟键盘预定义了多个键位布局,支持多种模式和自定义键位映射,能够满足各种文本输入需求。通过与文本区域 (Text Area) 的结合,键盘能够自动将输入的字符传送到指定区域。控件是 LittlevGL 提供的强大虚拟键盘解决方案,适用于任何需要文本输入的界面。通过预定义的键盘模式、自定义键位映射和文本区域自动填充功能,可以大大提升用户输入体验。无论是在嵌入式系统的用户界面中,还是在其他需要虚拟键盘的应用中,

m0_62599305的博客 2185

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Cpp实现栈

Cpp实现栈 Stack.h #pragma once #ifndef STACK_H #define STACK_H #include<iostream> #define MAXSIZE 100 #define overflow -2 #define Status int #define OK 1 #define ERROR 0 template<class SElemType> class SqStack { public: SqStack(); SqStack(Sq

weixin_47610359的博客 963

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

链栈之C++实现

链栈是借用单链表实现的栈。其不同于顺序栈之处在于: 1、链栈的空间是程序运行期间根据需要动态分配的,机器内存是它的上限。而顺序栈则是 静态分配内存的。 2、链栈动态分配内存的特性使得它一般无需考虑栈溢出的问题。           链栈的的组织结构如下图所示。容易发现其是架构的单链表的基础之上的。                 下面介绍下我用C++实现的链栈,VC6下调试。 1

ON THE WAY TO GEEK 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C++ 栈的实现

stack 类实现 点击此处浏览C++官方的stack详细内容 主要功能有以下几个 函数 功能 empty 测试 stack 是否为空 pop 从 stack 的顶部删除元素 push 将元素添加到 stack 顶部 size 返回 stack 中的元素数量 top 返回对 stack 顶部元素的引用 自己实现stack类 只要清楚栈先进后出的原理就很好实现 # include<iostream> # include<string> using n

Slatter的博客 437

栈与队列及其C++实现

栈与队列总结及其C++实现栈及队列简介栈队列栈及队列的实现栈的实现队列的实现 栈及队列简介 栈 栈是一种后进先出的数据结构即LIFO。 通常,插入操作在栈中被称作入栈,在栈的末尾添加一个新元素。删除操作被称作出栈,删除操作也发生在栈的末尾。即对于栈来说插入和删除操作均发生在栈的同一端。 如下图,在LIFO数据结构中,将首先处理添加到队列中的最新元素。 在C++ STL标准库中 <stack...

NEUChords的博客 1489

C++实现一个链栈

链栈不名思意,就是既具有链表的特性,又具有栈的特性。链栈中的元素由指针域和数据域组成,通过指针指向下一个元素;2.链栈同时又具有栈的特性,先进后出。

肩上风骋的博客 455

栈的C++单链表实现

使用C风格的实现,栈的内部使用单链表结构实现。实现接口为:创建表头、入栈、出栈、反转、打印、清空 代码结构如下: SingleList.h:数据结构的声明和定义 main.cpp:测试数据结构: SingleList.h: #pragma once #include<iostream> #include<string.h> using namespace st...

m0_38084180的博客 883

C++栈的用法及栈的实现

首先看一下原c++栈的方法的基本用法: push(): 向栈内压入一个成员; pop(): 从栈顶弹出一个成员; empty(): 如果栈为空返回true,否则返回false; top(): 返回栈顶,但不删除成员; size(): 返回栈内元素的大小; 代码示例: #include<iostream> #include<stack> using name

猕猴桃的博客 11万+

C++ stack&&queue 栈和队列的使用&&模拟实现

讲解C++的栈和队列的使用与模拟实现。模拟实现中,用文字叙述来帮助读者更好地理解堆和栈的模拟实现。

weixin_57761086的博客 2552
上一篇: 队列的C++实现
下一篇: 二分查找的实现
iam_lmk
博客等级 码龄16年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值