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

因此需要的成员变量如下
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++实现的顺序栈的更多相关文章
- 数据结构:C_顺序栈的实现
数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...
- D_S 顺序栈的基本操作
// main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...
- 数据结构Java实现05----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- 01顺序栈_Stack---(栈与队列)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
- 把十进制整数转换为r(r=2)进制输出(顺序栈实现)
上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1) 初始化顺序栈 2) 实现入栈和出栈操作 3) 实现取栈顶元素 ...
- 数据结构之顺序栈SqStack
顺序栈SqStack 基本操作 Status InitStack()//构造一个空栈S Status DestroyStack()//销毁栈S,S不再存在 Status ClearStack()//把 ...
- 顺序栈之C++实现
顺序栈就是用顺序表(数组)实现的栈.其组织形式如下图所示: 下面介绍下我用C++实现的顺序栈,在VC6下调试通过.不足之处还请指正. 1.文件组织 2.ss.h栈类的声明及宏的定义 #ifndef _ ...
- 顺序栈和链式栈(C++实现)
顺序栈,是一种基于数组的存储表示. 实现类代码如下: template<class T> class SeqStack{ T *element; int top; int maxSize; ...
- salesforce零基础学习(七十六)顺序栈的实现以及应用
数据结构中,针对线性表包含两种结构,一种是顺序线性表,一种是链表.顺序线性表适用于查询,时间复杂度为O(1),增删的时间复杂度为O(n).链表适用于增删,时间复杂度为O(1),查询的时间复杂度为O(n ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
随机推荐
- Java性能分析神器-JProfiler详解(转)
前段时间在给公司项目做性能分析,从简单的分析Log(GC log, postgrep log, hibernate statitistic),到通过AOP搜集软件运行数据,再到PET测试,感觉时间花了 ...
- 多个请求共用一个Servlet(JavaWEB)
我们在对JavaWEB工程进行开发的时候,我们经常会遇到这样一个问题,在jsp中发送到Servlet的每一个请求都要写一个对应的Servlet,这样会造成一个工程完成下来需要写几十个Servlet,那 ...
- Class as decorator in python
Class as decorator in python . https://www.geeksforgeeks.org/class-as-decorator-in-python/ http://co ...
- 005 Spring和SpringBoot中的@Component 和@ComponentScan注解
今天在看@ComponentScan,感觉不是太理解,下面做一个说明. 1.说明 ComponentScan做的事情就是告诉Spring从哪里找到bean 2.细节说明 如果你的其他包都在使用了@Sp ...
- PHP 循环输出多重数组元素
<?php $arr = array( array( array( array( array( ,, ) ) ), array( ,,) ) ), array(, , ) ); function ...
- [原]Arcgis arcmap修改图元配色
感谢南师大的“深爱”提供的帮助 1.选择识别工具,点击海洋,确定海洋色块的color index为255 2.右键tif选择属性 3.选择分页栏中的符号化(Symbology) 4.找到对应的Labe ...
- flutter PopupMenuButton弹出式菜单列表
import 'package:flutter/material.dart'; class PopupMenuButtonDemo extends StatefulWidget { @override ...
- 磁盘I/O高居不下,通过什么来查看占用I/O的进程?
iotop命令是一个用来监视磁盘I/O使用状况的top类工具.iotop具有与top相似的UI,其中包括PID.用户.I/O.进程等相关信息.Linux下的IO统计工具如iostat,nmon等大多数 ...
- 有些lambda表达式就可以体现出编程中「Context(上下文)」环境
编程中什么是「Context(上下文)」? 每一段程序都有很多外部变量.只有像Add这种简单的函数才是没有外部变量的.一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行.你为了使他们运行 ...
- 忏悔言情小说带来的意淫以及对治方法 (转自学佛网:http://www.xuefo.net/nr/article55/554935.html)
小时候,因为父母经常吵架,我觉得很孤独,一个人经常孤零零的,就喜欢一个人看书,大人的书难免里面有情情爱爱的内容,结果就很喜欢里面的深情的爱情故事,总是幻想自己有一段爱情.其实就是意淫的开始,所以后来学 ...