栈操作和应用—数制转换
来源:互联网 发布:清新网站引导页源码 编辑:程序博客网 时间:2024/06/05 07:40
以下代码包括详尽的栈的操作和数制转换的应用,后面会陆续带来更多栈的应用。
#include "stdafx.h"#include <iostream>using namespace std;//宏定义,为了修改方便#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0#define CONVERSION_NUM 8typedef int SElemType;typedef int Status; typedef struct{ SElemType *base; SElemType *top; int stackSize;}stack;stack s; //全局变量,栈Status InitStack(stack &s){ s.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!s.base){cout<<"内存不足!"<<endl;return ERROR;} s.top = s.base; s.stackSize = STACK_INIT_SIZE; return OK;}Status DestroyStack(stack &s){ free(s.base); return OK;}Status ClearStack(stack &s){ s.top = s.base; s.stackSize = STACK_INIT_SIZE; return OK; }bool StackEmpty(stack s){ if(s.base == s.top) return true; else return false;}int StackLength(stack s){ return s.top - s.base;}Status GetTop(stack s,SElemType &e){ if(s.top == s.base) {cout<<"当前栈为空!"<<endl;e = 0;return ERROR;} e = *(s.top - 1); return OK;}Status Push(stack &s,SElemType e){ if(s.top - s.base >= s.stackSize){ s.base = (SElemType*)realloc(s.base, (s.stackSize + STACKINCREMENT) * sizeof(SElemType)); if(!s.base){cout<<"内存不足!"<<endl;return ERROR;} s.stackSize = s.stackSize + STACKINCREMENT; } *s.top = e; s.top ++; return OK;}Status Pop(stack &s,SElemType &e){ if(s.base ==s.top){cout<<"栈为空!"<<endl;return ERROR;} s.top --; e = * s.top; return OK;}//应用1,数制转换 十进制->CONVERSION_NUM进制void conversion(int n){ InitStack(s); int e = 0; while(n){ Push(s,n % CONVERSION_NUM); n = n / CONVERSION_NUM; } while(!StackEmpty(s)){ Pop(s,e); cout<<e; } cout<<endl;}int main(int argc, char* argv[]){ int num; cout<<"输入十进制数:"; cin>>num; conversion(num); return 0;}
1 0
- 栈操作和应用—数制转换
- 栈的应用——数制转换
- 栈的应用——数制转换
- 栈的应用——数制转换
- 栈的应用—数制转换
- 栈的应用:数制转换
- 栈应用之一数制转换
- 栈的应用----数制转换
- 栈的应用数制转换
- 数制转换(栈的应用)
- 5.栈的应用-数制转换和括号匹配
- 第3章 栈和队列——栈的应用:数制转换
- 栈的应用举例——数制转换
- 数据结构—栈应用(一)数制转换
- VC栈的应用--数制转换
- 栈应用--数制转换
- 栈的应用之数制转换
- 栈的应用之数制转换
- editText.requestFocus()失效
- sql查询结果拼接
- 多线程之主线程等待多线程
- Java多态理解
- 将MATLAB矩阵写入TXT
- 栈操作和应用—数制转换
- VC6.0 不能断点调试的解决方法 VC6.0没有debug模式
- react
- 深入理解java虚拟机笔记(第二章:java内存区域)
- HBuilder修改statusbar样式
- Swift如何将数值转换为可拼写的字符串
- 公用表表达式(CTE)
- 一个面试官会问的问题 关于Block的
- MongoDB的特点和适用场景