栈的主要特点及实例应用
学习数据结构的知识,第一课便是栈结构。
要注意栈是一端封闭,另一端开口的数据存储结构,所以存的时候就像是们盛饭的时候,碗里的饭是慢慢多到顶的,取出来的时候就像吃的时候,慢慢到底。
这就是说 先入的后出,或者说后入先出。
下面是实现栈结构的代码:
//超超
//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;
}
相比那种不使用栈结构的取数运算来说,这样的一个结构明显减轻了很多的花费。
作为程序员必须要掌握的一个结构
栈的主要特点及实例应用相关推荐
- PE学习(六)第六章 栈与重定位表 实例栈溢出、模拟加载器加载DLL、遍历重定位表
第六章 栈与重定位表 16bit OS 存在长调用 lcall push cs,ip 相应的iret pop ip, cs 而call/ret only focus ip register 3 ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...
昨日内容回顾 0. 组件注意事项!!!data属性必须是一个函数!1. 注册全局组件Vue.component('组件名',{template: ``})var app = new Vue({el: ...
- 【Android 应用开发】Activity 返回堆栈管理 ( 栈内复用模式 singleTask | 单实例模式 singleInstance )
文章目录 一. singleTask ( 栈内复用模式 ) Activity 实例在返回堆栈中的位置 二. singleTask ( 栈内复用模式 ) Activity 启动的五种情况 三. sing ...
- 【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 )
文章目录 I . 默认启动模式 ( standard ) II . 栈顶复用启动模式 ( singleTop ) III . 栈内复用启动模式 ( singleTask ) IV . 单实例启动模式 ...
- java栈、堆、方法区
1.java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方 2.堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) ...
- Android 之Tasks和Back Stack(任务和返回栈)
2019独角兽企业重金招聘Python工程师标准>>> 介绍: 应用通常包含多个Activity.每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Act ...
- 四大组件之 Activity_任务和返回栈
[文章内容来自Developers] 应用通常包含多个 Activity.每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity. 例如,电子邮件应用可能有一个 ...
- Android零基础入门第77节:Activity任务栈和启动模式
2019独角兽企业重金招聘Python工程师标准>>> 通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容. Android采用任务栈(Task)的 ...
- Activity栈管理(三):Intent的Flag与taskAffinity
作者:anly_jun 链接:https://www.jianshu.com/p/c97688eb5056 引用上文生命周期和launchMode介绍, Activity的生命周期实际上比我们想象的复 ...
- 2020-11-8(activity状态以及任务栈)
activity四种状态 a.处于前台的activity,可见的,并且可以跟用户进行交互 b.处于暂停的状态,可见,但不能被操作 c.处于停止状态,不可见,也不可以被操作 d.销毁状态,activit ...
最新文章
- 《分布式服务架构:原理、设计与实战》第二章彻底解决分布式系统一致性的问题...
- Spring配置数据源的四种方式
- PAT (Advanced Level) 1017 Queueing at Bank(模拟)
- Magento: 在客户账户中添加自定义链接 My Account Add Link
- LeetCode 题 - 69. x 的平方根 python解法
- php最复杂,php – 什么方法最好构建这个复杂的图
- 不全屏放映ppt的方法
- win10音响左右声道测试软件,win10左右声道不分的三种解决方法【图文】
- 动态RAM与静态RAM
- 盘点近年25家外卖O2O,谁比谁难过
- 计算机上瘾英语对话,对手机上瘾的英语作文(精选5篇)
- 前端工程化-我们需要做什么
- 进销存设计与分析_库存明细表(14)
- android倒计时dialog,倒计时 Dialog
- 基于diffusion models的无监督Image-to-Image转化
- matlab 播放声音,用matlab录音和放音
- 找到了!宝藏公众号合集,新媒体运营小白必须学习
- 敏捷开发-Scrum过程模型
- NLP模型(二)——GloVe实现
- 轮毂、轮辋、轮圈,你还分不清楚?