vc++栈的简单实现
栈的数据类型是先进后出
#ifndef __MYSTACK__
#define __MYSTACK__
#include <Windows.h>
typedef struct Node
{
int data; //数据
Node* next; //下一个节点
}NODE,*PNODE;
class Stack
{
public:
Stack();
~Stack();
public:
int pop(); //返回这个出栈的数据
BOOL push(int pS); //接收入栈的数据
BOOL empty(); //判断栈是否是null 如果是null返回TRUE
int treaverse(); //遍历所有数据 private:
PNODE m_pTop; //栈顶
PNODE m_pBottom; //栈底
};
Stack::Stack()
{
m_pTop = new NODE;
if(!m_pTop)return;
m_pTop->next = NULL; //下一个节点等于null
m_pBottom = m_pTop;
}
Stack::~Stack()
{
//析构
if (empty())
{
delete m_pTop;
}else
{
PNODE p = m_pTop;
while (p!=m_pBottom)
{
p = m_pTop->next;
delete m_pTop;
m_pTop = p;
}
delete m_pBottom;
} }
int Stack::push(int pS)
{
PNODE pNext = new NODE;
if(!pNext)return -;
ZeroMemory(pNext,sizeof(NODE));
pNext->data = pS; //传进来的参数
pNext->next = m_pTop;
m_pTop = pNext;
return true;
}
BOOL Stack::empty()
{
if (m_pTop == m_pBottom)
return true;
else
return false;
}
int Stack::pop()
{
int temp = NULL;
if (empty())
return -;
PNODE p = m_pTop->next;
temp = m_pTop->data; //获取到的数据
delete m_pTop;
m_pTop = p;
return temp;
}
int Stack::treaverse()
{
if(empty())return -;
PNODE p = m_pTop;
while(p!=m_pBottom)
{
printf("%d\r\n",p->data);
p = p->next;
}
}
#endif //__MYSTACK__
vc++栈的简单实现的更多相关文章
- hdu Train Problem I(栈的简单应用)
Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...
- 栈回溯简单实现(x86)
0x01 栈简介 首先局部变量的分配释放是通过调整栈指针实现的,栈为函数调用和定义局部变量提供了一块简单易用的空间,定义在栈上的变量不必考虑内存申请和释放.只要调整栈指针就可以分配和释放内存. ...
- Javascript的堆和栈的简单理解
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- 栈及其简单应用(二)(python代码)
一.括号判定 前一篇文章我们介绍了栈的简单应用中,关于括号的判定,但那只是一种括号的判定,下面我们来介绍多种括号混合使用时,如何判断括号左右一一对应. 比如“{}{(}(][”这种情况,需要对一种括号 ...
- 栈及其简单应用(python代码)
栈属于线性结构(Linear Struncture),要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质."栈“者,存储货物或供旅客住宿的地方,可引申为仓库.中转站,所以引入到计 ...
- 用VC调用EXCEL简单代码(转载自越长大越孤单,觉得很好)
首先在stdafx.h里加入对IDispatch接口提供支持的头文件: #include <afxDisp.h> 再在应用程序类的InitInstance()函数里加入: AfxOleIn ...
- VC++ CArchive及简单的文件操作方法
CArchive 方法用于存取文件 我向你推荐的是使用CArchive,它的使用方法简单且功能十分强大.首先还是用CFile声明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,你就可 ...
- UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)
栈的练习,如此水题竟然做了两个小时... 题意:给出矩阵大小和矩阵的运算顺序,判断能否相乘并求运算量. 我的算法很简单:比如(((((DE)F)G)H)I),遇到 (就cnt累计加一,字母入栈,遇到) ...
- Leetcode题目155.最小栈(简单)
题目描述: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中.pop() -- 删除栈顶的元素.top() -- 获取栈顶 ...
随机推荐
- oracle函数 TRIM(c1 from c2)
[功能]删除左边和右边出现的字符串 [参数]C2 删除前字符串 c1 删除字符串,默认为空格 [返回]字符型 [示例] select TRIM('X' from 'XXXgao qian jingXX ...
- es6 中let与const的简析
1.let 它的作用类似于var,用来声明变量,但是所声明的变量,只在let命令所在的代码块内有效. if(true){ ; let b = ; } document.write(a); docume ...
- 详解如何在Laravel中增加自定义全局函数
http://www.php.cn/php-weizijiaocheng-383928.html 如何在Laravel中增加自定义全局函数?在我们的应用里经常会有一些全局都可能会用的函数,我们应该怎么 ...
- 2019-8-31-dotnet-将文件删除到回收站
title author date CreateTime categories dotnet 将文件删除到回收站 lindexi 2019-08-31 16:55:58 +0800 2019-03-2 ...
- oracle用NOT EXISTS替代NOT IN
在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连 ...
- ES6学习笔记第一天
## 三.const和let **3.1 const** const用来定义常量,所谓的常量就是值一旦给定后就不变,一次定义终身不变的量 const a = 10; a = 20; 上面的a就是一个常 ...
- Echarts Map地图下钻至县级
**准备工作:**1.首先使用vue-cli的脚手架生成vue项目. 2.然后使用npm安装echartsnpm install echarts -S 3.安装完后再mian.js中挂载到vue的实例 ...
- Python--day69--ORM外键的正向查询和反向查询
什么是正向查询,什么是方向查询?
- 第25章 Pytorch 如何高效使用GPU
第25章 Pytorch 如何高效使用GPU 深度学习涉及很多向量或多矩阵运算,如矩阵相乘.矩阵相加.矩阵-向量乘法等.深层模型的算法,如BP,Auto-Encoder,CNN等,都可以写成矩阵运算的 ...
- Vue实现同级组件的通信
一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.index.html <!DOCTYP ...