基于visual Studio2013解决面试题之0203栈实现




题目



解决代码及点评

/*用模板类实现栈*//* 标准输入输出流头文件 */
#include <iostream>
/* 将标准库的std命名空间下标示符提升到全局 */
using namespace std;/* 定义栈模板库 */
template <class T>
class stack
{
public:stack(int len = 10);  /* 构造函数,默认栈深度为10 */~stack();			/* 析构函数 */void push(T value);	/* 压栈 */void pop();			/* 弹出栈顶元素 */void empty();		/* 清空栈 */T top();			/* 获取栈顶元素 */int size();			/* 栈大小 */T min();			/*  */
private:int ntop;			/* 当前top位置 */int len;                   /* 栈空间长度 */T *arr;              /* 栈数据 */int mtop;   /* 辅助栈,用来保存最小值的 */int mlen;   /* 辅助栈长度 */T *marr;    /* 辅助栈数据 */};template <class T>
stack<T>::stack(int len)
{if (len <= 0){return;}this->len = len;	/* 初始化栈长度 */ntop = 0;			/* 注意空栈是用0表示,那么栈顶元素应该是ntop-1 */arr = new T[len];	/* 申请空间 *//* 辅助栈的大小和栈大小相同 */mlen = len;      //辅助栈,每次弹入数据都判断最小值,//将最小值入辅助栈,元素出栈时也和辅助栈比较//所以辅助栈的栈顶元素一直是最小值mtop = 0;marr = new T[mlen];
}/* 析构函数,当构造函数有申请空间或者使用系统资源时,必须提供析构函数 */
template <class T>
stack<T>::~stack()
{delete[]arr;delete[]marr;
}/* 压栈 */
template <class T>
void stack<T>::push(T value)
{/* 首先判断是否有空间,没有空间则直接返回吧 */if (ntop == len){return;}/* 把值保存到栈顶,并将栈顶下标加1 */arr[ntop++] = value;// 辅助栈用来保存最小值,当辅助栈还是空的时候// 直接入栈,如果不空,则需要比较栈顶是否大于valueif (mtop == 0)marr[mtop++] = value;else if (value < marr[mtop - 1]){marr[mtop++] = value;}}/* 出栈 */
template <class T>
void stack<T>::pop()
{// 如果栈空了,则出栈失败if (ntop == 0){return;}// 如果弹出的正好是最小值,那么把辅助栈先出栈if (arr[ntop - 1] == marr[mtop - 1]){mtop--;}// 进行出栈操作ntop--;
}/* top,获取栈顶元素,也就是 ntop-1指示的那个值 */
template <class T>
T stack<T>::top()
{if (ntop == 0){return NULL;}return arr[ntop - 1];}/* 返回栈元素个数,正好是ntop */
template <class T>
int stack<T>::size()
{return ntop;
}/* 清空栈,只需要将ntop恢复成0,即可 */
template <class T>
void stack<T>::empty()
{if (ntop == 0){return;}ntop = 0;mtop = 0;}/* 获取栈最小值,就是辅助栈的栈顶 */
template <class T>
T stack<T>::min()
{return marr[mtop - 1];}/* 测试主函数 */
int main()
{stack<int> s;s.pop();s.push(2);s.push(3);s.push(5);s.push(1);s.push(7);s.pop();s.pop();cout << s.size();cout << endl << s.top();cout << endl << s.min();system("pause");return 0;
}


代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果









转载于:https://www.cnblogs.com/niulanshan/p/6175177.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

div盒子模型

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style type"text/css">#box{width: 400px;height: 400px;border: 5px pink dotted;/*边框的以圆点组成的虚线*/padding-left: 150px;paddin…

html地图缩放比例,百度地图之添加控件——比例尺、缩略图、平移缩放

地图控件概述百度地图上负责与地图交互的UI元素称为控件。百度地图API中提供了丰富的控件&#xff0c;您还能够经过Control类来实现自定义控件。javascript地图API中提供的控件有&#xff1a;cssControl&#xff1a;控件的抽象基类&#xff0c;全部控件均继承此类的方法、属性。…

通过Servlet的response绘制页面验证码

java部分 package com.servlet;import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.util.Random;import javax.servlet.ServletException…

Datebase

1.datebase是数据库的意思.数据库是用来储存数据的,所有程序都依赖于Datebase进行储存.它是一个软件,有多种品牌. 2.品牌:微软的MS sqlserver ,Oracle(性能最好),Mysql(开源)包括阿里在使用,DB2(濒临pass) 3.数据库的扮演角色:无论哪个一个程序都是由UI程序逻辑Datebase组成,而…

写未来的电子计算机的畅想两百字,未来科技作文200字

相信大家都好奇&#xff0c;我们未来的科技会是怎么样的&#xff1f;现在就让我们一起来畅想未来。下面是由出国留学网小编为大家整理的“未来科技作文600字”&#xff0c;仅供参考&#xff0c;欢迎大家阅读。未来科技作文600字【一】随着人们生活水平的提高&#xff0c;汽车&a…

Ms sqlserver闪退----“转载的知识”

找到MSSMS安装位置&#xff0c;例如我是安装到了D:\Program Files (x86)\Microsoft SQL Server Management Studio 18 将D:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop文件夹下的Microsoft.VisualStudio.Shell.In…

MVC + LigerUI 做后台管理还真是清爽

LigerUI是基于Jquery&#xff0c;轻量级UI框架。具体可以看官方演示 http://www.ligerui.com/ 我的简单后台 模拟Winodw桌面效果&#xff0c;挺不错呢。最喜欢的还是他的&#xff0c;下拉列表绑定Grid&#xff0c;主从表字段关联选择方便。 当然他也不是很好&#xff0c;也不少…

继续教育统考计算机和英语难度怎么样,网络教育英语统考90分的难度怎么样

网络教育本科生统考考90分是比较高的分值&#xff0c;考生报考网络教育难度并不是很大&#xff0c;考试科目分别是大学英语和计算机应用基础两门。网络教育统考考90分难不难网教统考英语考90分是比较有难度的&#xff0c;英语一总分100分&#xff0c;想考90很难很难&#xff0c…

sqlserver note

1.规范,写的代码标准 2.面向对象的思想 3.数据的完整性 4.不能非法牟利 关于数据的完整性,包括: a.域完整性:组成实体的各个部分都不缺失 b.实体完整性:各个个体都不同,唯一 c.引用完整性:数据之间借调时真实存在,有效 d.自定义完整性. 5.excel不能完全保证数据的完整性,但通过…

XAML 概述四

这一节我们来简单介绍一下XAML的加载和编译&#xff0c;它包括如下三种方式&#xff1a; 只使用代码 使用代码和未编译的XAML 使用代码和编译过的BAML 一. 只使用代码 我们首先创建一个简单的控制台应用程序。然后我们添加PresentationFramework.dll、PresentationCore.dll、…

怎样用计算机制作思维导图,如何使用电脑制作成思维导图,这个方法简单又实在...

原标题&#xff1a;如何使用电脑制作成思维导图&#xff0c;这个方法简单又实在我上周发现&#xff0c;其实我们办公室里面很多同事都不知道怎么制作思维导图的。起因是我们老板在烦恼一个项目&#xff0c;而这个项目的对接人就需要我们做一份思维导图给他的&#xff0c;说要让…

增删改

四句死代码 1.查询数据 select * from 表名 2.插入数据 insert into 表名 values (‘值1’,‘值2’) 3.删除数据 delete from 表名 where 条件 4.update 表名 set 列值 where 条件 5.重置,一般不要使用,数据难以恢复 truncate table 表名

【PHP入门到精通】:Ch05:字符串处理

Ch05: 字符串简介 5.1 字串说明 字符串是指由>0个字符构成的一串字符&#xff0c;所以叫字符串。这里所说的字符主要包括以下几种类型&#xff1a;数字类型&#xff1a;如1, 2, 3, 4等。字母类型&#xff1a;如果a, b, c, d等。特殊字符&#xff1a;如#, $, %, ^, &等。…

计算机桌面锁屏设置,怎么设置电脑锁屏

怎么设置电脑锁屏当在使用电脑的时候难免会遇到中途离开的情况&#xff0c;可能就是一小会&#xff0c;此时不想关机&#xff0c;也不想让别人在此期间操作电脑&#xff0c;因此就需要为电脑添加一个密码使它处于锁屏状态&#xff0c;那么具体怎样设置才能让电脑锁屏呢?第一步…

基本查询

--选择查询 select 列名,列名 from 表名select athlete from king --精确匹配 select * from 表名 where 条件select * from king where country 中国--多条件 select * from 表名 where 条件 连接符(or and) 条件 --!!!列名不同 考虑and连接 列名相同 考虑or 连接select * fr…

理解 JavaScript 作用域和作用域链

JavaScript作用域 任何程序设计语言都有作用域的概念&#xff0c;简单的说&#xff0c;作用域就是变量与函数的可访问范围&#xff0c;即作用域控制着变量与函数的可见性和生命周期。在JavaScript中&#xff0c;变量的作用域有全局作用域和局部作用域两种。 1. 全局作用域&…

关于计算机网络的英语演讲稿,幽默英语演讲稿

幽默英语演讲稿love your mother爱你的母亲why are you crying, a young boy asked his mom?你为什么哭?一个小男孩问他的妈妈."because im a woman," she told him.因为我是女人,她告诉他."i dont understand," he said.我不明白.他回答his mom just hu…

模糊查询与字符串的操作

select CAST (333 as varchar(20) )--函数转换--模糊查询:无法精确表达的部分,可以精确表达的部分 - 列名 like --无法精确表达的部分,用到通配符 -- % : 任意长度的字符串 -- select * from 表名 where 列名 like 李% --所有李开头的人的信息-- - : 长度单位为1的字符串 -- …

预科教育计算机基础知识重点归纳,民族预科班计算机教育论文

1少数民族预科教育中计算机课程与教学的特点分析1.1民族预科教育中计算机教学课程设置特点在民族预科教育中&#xff0c;计算机专业教学课程的设置主要以学生计算机应用能力培养为主&#xff0c;通常情况下&#xff0c;其开设课程主要包括计算机基础知识以及计算机网络基础知识…

聚合函数与分组查询

聚合函数 1,select count()-数量vt a. count(列名)里面有null&#xff0c;则不会计数 b. count(表名)里面有null&#xff0c;会计数&#xff0c;每行 2,sum(列名)求和 avg(列名)求平均值 数学列 3,max(列名)最大值 min(列名)最小值 排序算法 4,len(列)每行的字符长度 5,distinc…