学习数据结构的知识,第一课便是栈结构。

要注意栈是一端封闭,另一端开口的数据存储结构,所以存的时候就像是们盛饭的时候,碗里的饭是慢慢多到顶的,取出来的时候就像吃的时候,慢慢到底。

这就是说 先入的后出,或者说后入先出。

下面是实现栈结构的代码:

//超超 
//2016/10/5日
#include <iostream>
using namespace std;
enum error_code{success,overflow,underflow,rangeerror};
typedef int elementtype ;
const int maxlen=15;
class stack{
public:
stack();
bool        isempty()const;
bool         isfull() const;
error_code         get_top(elementtype &x)const;
error_code         push(const elementtype x);
error_code         pop();
private:
int         count;
elementtype       data[maxlen];
}; 
stack::stack(){ 
count = 0; 
}

bool  stack::isempty()const{
if ( count == 0 )       
return true;
else          
return false;
}
bool stack::isfull()const{
if ( count == maxlen ) 
return true;
else 
return false;         
}
error_code stack::get_top(elementtype &x)const{
if ( isempty() ) 
return  underflow;
else {
x = data[count - 1];
return success;
}
}
error_code stack::push(const elementtype x){
if(isfull()) 
       return overflow;
else{
data[count]=x;
count++;
return success;
}
}
error_code stack::pop(){
if(isempty()) 
return underflow;
else{
count--;
return success;
}
}

使用的时候直接取栈结构来使用,熟悉进制转换的人都知道,在做进制转换的时候余数是从下往上读的,读完最下面的一位就是最高位;

在栈结构中,最高位应该是最后出栈的,所以非常符合这个数据结构

基于栈结构,下面是进制转换的实现代码:

//num为要转化的数字 m为要转的进制
void decimalism_other(int num ,int m){
stack s;
int x;
while(num!=0){
s.push(num%m);
num=num/m;
}
while(!s.isempty()){
s.get_top(x);
s.pop();
cout<<x;
}
cout<<endl;

}

int main(){
decimalism_other(18,8);
    return 1;
}

相比那种不使用栈结构的取数运算来说,这样的一个结构明显减轻了很多的花费。

作为程序员必须要掌握的一个结构

栈的主要特点及实例应用相关推荐

  1. PE学习(六)第六章 栈与重定位表 实例栈溢出、模拟加载器加载DLL、遍历重定位表

    第六章 栈与重定位表 16bit OS 存在长调用 lcall push cs,ip    相应的iret pop ip, cs  而call/ret only focus ip register 3 ...

  2. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...

    昨日内容回顾 0. 组件注意事项!!!data属性必须是一个函数!1. 注册全局组件Vue.component('组件名',{template: ``})var app = new Vue({el: ...

  3. 【Android 应用开发】Activity 返回堆栈管理 ( 栈内复用模式 singleTask | 单实例模式 singleInstance )

    文章目录 一. singleTask ( 栈内复用模式 ) Activity 实例在返回堆栈中的位置 二. singleTask ( 栈内复用模式 ) Activity 启动的五种情况 三. sing ...

  4. 【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 )

    文章目录 I . 默认启动模式 ( standard ) II . 栈顶复用启动模式 ( singleTop ) III . 栈内复用启动模式 ( singleTask ) IV . 单实例启动模式 ...

  5. java栈、堆、方法区

    1.java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方 2.堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) ...

  6. Android 之Tasks和Back Stack(任务和返回栈)

    2019独角兽企业重金招聘Python工程师标准>>> 介绍: 应用通常包含多个Activity.每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Act ...

  7. 四大组件之 Activity_任务和返回栈

    [文章内容来自Developers] 应用通常包含多个 Activity.每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity. 例如,电子邮件应用可能有一个 ...

  8. Android零基础入门第77节:Activity任务栈和启动模式

    2019独角兽企业重金招聘Python工程师标准>>> 通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容. Android采用任务栈(Task)的 ...

  9. Activity栈管理(三):Intent的Flag与taskAffinity

    作者:anly_jun 链接:https://www.jianshu.com/p/c97688eb5056 引用上文生命周期和launchMode介绍, Activity的生命周期实际上比我们想象的复 ...

  10. 2020-11-8(activity状态以及任务栈)

    activity四种状态 a.处于前台的activity,可见的,并且可以跟用户进行交互 b.处于暂停的状态,可见,但不能被操作 c.处于停止状态,不可见,也不可以被操作 d.销毁状态,activit ...

最新文章

  1. 《分布式服务架构:原理、设计与实战》第二章彻底解决分布式系统一致性的问题...
  2. Spring配置数据源的四种方式
  3. PAT (Advanced Level) 1017 Queueing at Bank(模拟)
  4. Magento: 在客户账户中添加自定义链接 My Account Add Link
  5. LeetCode 题 - 69. x 的平方根 python解法
  6. php最复杂,php – 什么方法最好构建这个复杂的图
  7. 不全屏放映ppt的方法
  8. win10音响左右声道测试软件,win10左右声道不分的三种解决方法【图文】
  9. 动态RAM与静态RAM
  10. 盘点近年25家外卖O2O,谁比谁难过
  11. 计算机上瘾英语对话,对手机上瘾的英语作文(精选5篇)
  12. 前端工程化-我们需要做什么
  13. 进销存设计与分析_库存明细表(14)
  14. android倒计时dialog,倒计时 Dialog
  15. 基于diffusion models的无监督Image-to-Image转化
  16. matlab 播放声音,用matlab录音和放音
  17. 找到了!宝藏公众号合集,新媒体运营小白必须学习
  18. 敏捷开发-Scrum过程模型
  19. NLP模型(二)——GloVe实现
  20. 轮毂、轮辋、轮圈,你还分不清楚?

热门文章

  1. 如何批量压缩图片?教你一键批量压缩图片的方法技巧
  2. 上海“随申码”研发幕后::倒排期的3天!
  3. 工业企业外购材料进项税额的会计处理
  4. 嵌入式Linux下获取CPU温度方法
  5. ANDROID 有关高德地图 导航SDK 组件不见的问题
  6. docker服务及镜像开机自动启动
  7. 使用Excel制作公众号数据看板
  8. 系列篇|一文尽览事件相机原理
  9. 鸿蒙哦叟,苕木匠时评:说鸿蒙“
  10. linux进程sl是什么,Linux ps state sl+是什么意思