vc++栈的简单实现
栈的数据类型是先进后出
1 #ifndef __MYSTACK__ 2 #define __MYSTACK__ 3 #include <Windows.h> 4 typedef struct Node 5 { 6 int data; //数据 7 Node* next; //下一个节点 8 }NODE,*PNODE; 9 class Stack 10 { 11 public: 12 Stack(); 13 ~Stack(); 14 public: 15 int pop(); //返回这个出栈的数据 16 BOOL push(int pS); //接收入栈的数据 17 BOOL empty(); //判断栈是否是null 如果是null返回TRUE 18 int treaverse(); //遍历所有数据 19 20 private: 21 PNODE m_pTop; //栈顶 22 PNODE m_pBottom; //栈底 23 }; 24 Stack::Stack() 25 { 26 m_pTop = new NODE; 27 if(!m_pTop)return; 28 m_pTop->next = NULL; //下一个节点等于null 29 m_pBottom = m_pTop; 30 } 31 Stack::~Stack() 32 { 33 //析构 34 if (empty()) 35 { 36 delete m_pTop; 37 }else 38 { 39 PNODE p = m_pTop; 40 while (p!=m_pBottom) 41 { 42 p = m_pTop->next; 43 delete m_pTop; 44 m_pTop = p; 45 } 46 delete m_pBottom; 47 } 48 49 50 } 51 int Stack::push(int pS) 52 { 53 PNODE pNext = new NODE; 54 if(!pNext)return -1; 55 ZeroMemory(pNext,sizeof(NODE)); 56 pNext->data = pS; //传进来的参数 57 pNext->next = m_pTop; 58 m_pTop = pNext; 59 return true; 60 } 61 BOOL Stack::empty() 62 { 63 if (m_pTop == m_pBottom) 64 return true; 65 else 66 return false; 67 } 68 int Stack::pop() 69 { 70 int temp = NULL; 71 if (empty()) 72 return -1; 73 PNODE p = m_pTop->next; 74 temp = m_pTop->data; //获取到的数据 75 delete m_pTop; 76 m_pTop = p; 77 return temp; 78 } 79 int Stack::treaverse() 80 { 81 if(empty())return -1; 82 PNODE p = m_pTop; 83 while(p!=m_pBottom) 84 { 85 printf("%d\r\n",p->data); 86 p = p->next; 87 } 88 } 89 #endif //__MYSTACK__
转载于:https://www.cnblogs.com/guolongzheng/p/7283750.html
vc++栈的简单实现相关推荐
- 用C语言模拟栈(简单实现)
//C语言模拟栈,简单实现 #include <stdio.h> #include <stdlib.h> typedef struct Node node; struct No ...
- 基于java的数据结构学习——数组实现的栈以及简单应用C++实现
基于java的数据结构学习--数组实现的栈以及简单应用的 C++ 实现 源码: // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTUR ...
- 【数据结构】栈的简单理解以及对栈的基本操作
一.静态栈的简单操作 先来简单的了解一下栈 1.栈:一种特殊的线性表,其实只允许在固定的一端进行插入或删除操作.进行数据插入和删除的一端称为栈顶,另一端称为栈底.不含任何元素的栈称为空栈,栈又称为 后 ...
- 数据结构栈的简单实现(JAVA)
新的改变 栈是线性数据结构的一种,相当于一个箱子,如果向往箱子里放书,第一本书肯定是放入箱底,但是取出来的时候是从最上面开始取的,并拿不到最里面的东西,所以元素是先进后出的,栈最上面的元素为栈顶元素. ...
- 共享栈的简单实现(C语言)
共享栈的简单实现(C语言) 认识共享栈 基本操作 入栈 出栈 读取栈顶元素 输出栈 定义 初始化 完整代码 认识共享栈 共享栈的本质就是一个数组存放两个栈,公用一个数组空间.由于顺序栈是创建时就固定了 ...
- 利用数组栈实现简单的四则运算
栈实现简单四则运算 思路 需要两个栈,一个用来存数字,一个用来存符号 定义一个指针index用来遍历表达式 遍历表达式,index指向数字时,将该数字压入数字栈 这里需要注意:指向的数字并非是一位数, ...
- (C语言)静态栈编写简单计算器(感悟与详细解析)
C语言数据结构静态栈--计算器的实现 下面我来详细的解释一下我编写的计算器代码.... 有必要先说明一下的是,此代码中含有两个栈:数据栈和算符栈: 数据栈:存放double型数字: 算符栈:存放cha ...
- hoj 1067 Rails //poj1363 Rails 栈的简单应用
//ACM ICPC Central European Regional 1997 /* 简单的栈的应用,可惜WA了好几次 poj上要把最后的while后的cout<<endl;去掉 */ ...
- CCF 201903-2 二十四点 用栈模拟简单计算器
二十四点 来源:CCF 背景 二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4张纸牌上数字的运算结果为 24. 题目 定义每一个游戏由 4 个从 1-9 的数字和 3 个四 ...
最新文章
- 汇编语言第五到八章总结
- SAP MM 事务代码MRKO触发的财务凭证不会出现在PO History里
- 反应机理_过敏反应的发生机理及表现
- 场外和场内的区别_3分钟看懂场内基金和场外基金的区别!
- visual studio c/c++报错:向“printf”传递了额外参数: _Param_(2) 未由格式字符串使用
- C++11多线程编程-两个进程轮流打印1~100
- html文字粒子效果简陋,5个很棒的CSS3文本粒子动画特效
- 无向图g的邻接矩阵一定是_矩阵是图
- 使用老毛桃U盘重装Windows10系统
- C# 列出进程以及详细信息
- 大数据_Flink_数据处理_运行时架构6_slot和并行度的关系---Flink工作笔记0021
- Junos: 使用之前
- 微信卡券开发错误自排查参考文档
- AndroidCamera学习笔记二 基本流程及框架
- linux硬盘的两个分区合并_linux 多分区合并(lvm)实例
- html中siblings方法,jQuery siblings()方法的用法
- android 5.1 壁纸路径,Android5.1 壁纸来源选项中有两个“壁纸”选项
- 论文解读:《多层肽 - 蛋白质相互作用预测的深度学习框架》
- 【罗技】M590 鼠标驱动
- Minecraft 1.16.5模组开发(五十四) 方块探测器(Detector)