栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底

因此需要的成员变量如下

int  *_stack;    //指向申请的空间的首地址
int top; //记录栈顶的位置
int size; //记录申请空间的大小

具体如下封装在类中

#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
class SeqStack
{
public:
SeqStack(int size=) //构造函数 初始化
{
_stack=new int[size];
_top=;
_size=size;
}
SeqStack(const SeqStack &src) // 拷贝构造函数(防止浅拷贝)
{
_stack=new int[src._size];
int i=;
for(;i<src._top;i++)
{
_stack[i]=src._stack[i];
}
_size=src._size;
_top=src._top;
}
SeqStack(SeqStack &&src) //右值拷贝函数 防止临时量的空间时间的浪费
{
_stack=src._stack;
_size=src._size;
_top=src._top;
src._stack=nullptr;
}
SeqStack & operator=(const SeqStack &src) //赋值构造函数 返回地址 实现连续赋值
{
if(this==&src)
{
return *this;
}
delete[]_stack;
_stack=new int[src._size];
int i=;
for(;i<src._top;i++)
{
_stack[i]=src._stack[i]; }
_size=src._size;
_top=src._top;
return *this;
}
SeqStack & operator=( SeqStack &&src) // 右值赋值构造函数 防止临时量对空间时间的浪费
{
delete []_stack;
_stack=src._stack;
_size=src._size;
_top=src._top;
src._stack=nullptr;
return *this;
}
~SeqStack() // 析构函数
{
delete[]_stack;
_stack=nullptr;
}
void push(int val) // 栈顶插入
{
if(full())
{
resize(); // 调用2倍扩容
}
_stack[_top]=val;
_top++;
}
void pop() // 栈顶删除
{
if(empty())
{
return; }
_top--;
}
int top() //返回栈顶元素
{
return mpstack[_top-];
}
bool empty() // 是否为空
{
return _top==;
}
bool full() // 是否为满
{
return _top==_size;
}
private:
int *_stack;
int _top;
int _size;
void resize() // 2倍扩容函数
{
int *s=new int[_size*];
int i=;
for(;i<_size;i++)
{
s[i]= _stack[i];
}
delete []_stack;
_stack=s;
_size=*_size;
}
};
int main()
{
SeqStack st1();
SeqStack st2(st1);
SeqStack st3=st1;
st2=st1;
st1.push();
cout<<st1.top()<<endl;
cout<<endl;
return ;
}

c++实现的顺序栈的更多相关文章

  1. 数据结构:C_顺序栈的实现

    数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...

  2. D_S 顺序栈的基本操作

    //  main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...

  3. 数据结构Java实现05----栈:顺序栈和链式堆栈

    一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...

  4. 01顺序栈_Stack---(栈与队列)

    #include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...

  5. 把十进制整数转换为r(r=2)进制输出(顺序栈实现)

    上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1)      初始化顺序栈 2)      实现入栈和出栈操作 3)      实现取栈顶元素 ...

  6. 数据结构之顺序栈SqStack

    顺序栈SqStack 基本操作 Status InitStack()//构造一个空栈S Status DestroyStack()//销毁栈S,S不再存在 Status ClearStack()//把 ...

  7. 顺序栈之C++实现

    顺序栈就是用顺序表(数组)实现的栈.其组织形式如下图所示: 下面介绍下我用C++实现的顺序栈,在VC6下调试通过.不足之处还请指正. 1.文件组织 2.ss.h栈类的声明及宏的定义 #ifndef _ ...

  8. 顺序栈和链式栈(C++实现)

    顺序栈,是一种基于数组的存储表示. 实现类代码如下: template<class T> class SeqStack{ T *element; int top; int maxSize; ...

  9. salesforce零基础学习(七十六)顺序栈的实现以及应用

    数据结构中,针对线性表包含两种结构,一种是顺序线性表,一种是链表.顺序线性表适用于查询,时间复杂度为O(1),增删的时间复杂度为O(n).链表适用于增删,时间复杂度为O(1),查询的时间复杂度为O(n ...

  10. 【小白成长撸】--顺序栈(C语言版)

    // 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...

随机推荐

  1. 【转】adb server is out of date. killing完美解决

    今天,久未出现的著名的“adb server is out of date.  killing”又发生了,在此,将解决方法记下,以便日后查看. 1. 错误信息: C:\Users\lizy>ad ...

  2. Confluence 实现公司wiki【转】

    Confluence是一个企业级的Wiki软件,可用于在企业.部门.团队内部进行信息共享和协同编辑一.安装过程1 安装并配置mysql [root@vm1 ~]# /etc/my.cnf charac ...

  3. [String]两个右补空格使字符串达到固定长度的函数 来自网上 请君自取

    代码: package fixsizestring; public class TestClass { public static void main(String[] args) { for(int ...

  4. 关于Android8.0 静态注册广播 行为变更的说明。

    Andorid 8.0 对广播的使用做了变更. 当广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播. 注意这个“隐式”是重点. 看了网上几篇文章,对这个变更理解有误.错误的理 ...

  5. Tensorflow 2 flower_photos花卉数据集手动下载、离线安装、本地加载、快速读取

    Tensorflow 2 flower_photos花卉数据集手动下载.离线安装.本地加载.快速读取 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.c ...

  6. MiniUI treeGrid 动态加载数据与静态加载数据的区别

    说明:treegrid静态数据加载时数据结构是一棵树包含children节点集合,而采用动态加载数据时数据是List结构的具体项. 静态加载数据 test1.html <!DOCTYPE htm ...

  7. python 设计模式之桥接模式 Bridge Pattern

    #写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...

  8. ansible常用的方法小结

    一.批量安装zabbix客户端 .拷贝sh脚本和.conf到远程服务器(也可以全量拷贝客户端) ansible all -m copy -a "src=/usr/local/zabbix_a ...

  9. GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training-1-论文学习

    通过对抗训练实现半监督的异常检测 Abstract 异常检测在计算机视觉中是一个经典的问题,即从异常中确定正常,但是由于其他类(即异常类)的样本数量不足,所以数据集主要基于一个类(即正常类).虽然该问 ...

  10. rf安装对应requests库的方法

    先要安装requests,再安装requestsLibrary pip install requests pip install robotframework-requests github地址 ht ...