栈的应用举例----数制转换
来源:互联网 发布:ubuntu 安装php环境 编辑:程序博客网 时间:2024/05/23 16:54
头文件:SqStack.h
#include<cstdlib>
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define STACK_INIT_SISE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
//构造一个空栈S
Status InitStack(SqStack& S)
{
S.base = (SElemType*)malloc(STACK_INIT_SISE*sizeof(SElemType));
if (!S.base)
exit(OVERFLOW);
S.top = S.base;
S.stacksize = STACK_INIT_SISE;
return OK;
}
//销毁栈S,栈S不再存在
Status DestroyStack(SqStack& S)
{
S.top = S.base;
free(S.base);
S.base = NULL;
S.top = NULL;
return OK;
}
//把栈S置空
Status ClearStack(SqStack& S)
{
S.top = S.base;
return OK;
}
//若栈S为空栈,则返回TRUE,否则返回FALSE
Status StackEmpty(SqStack S)
{
if (S.top == S.base)
return TRUE;
else
return FALSE;
}
int StackLength(SqStack S)
{
return (S.top - S.base);
}
//若栈S不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
Status GetTop(SqStack S, SElemType& e)
{
if (StackEmpty(S))
return ERROR;
e = *(S.top - 1);
return OK;
}
//插入元素e为新的栈顶元素
Status Push(SqStack& S, SElemType e)
{
if (S.top - S.base >= S.stacksize)
{
S.base = (SElemType*)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType));
if (!S.base)
exit(OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
//*S.top = e;
//S.top++;
return OK;
}
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
Status Pop(SqStack& S, SElemType& e)
{
if (StackEmpty(S))
return ERROR;
S.top--;
e = *S.top;
//e = *--S.top;
return OK;
}
//访问栈中的数据元素
Status visit(SElemType data)
{
if (cout << data << " ")
return OK;
else
return ERROR;
}
//从栈底到栈顶依次对栈中每个元素调用函数visit().一旦visit()失败,则操作失败
Status StackTraverse(SqStack S, Status(*visit)(SElemType))
{
SElemType* p = S.base;
while (S.top>p)
{
if (!visit(*p++))
return ERROR;
}
return OK;
}
主函数:
#include"SqStack.h"
void main()
{
SqStack S;
InitStack(S);
SElemType num;
cout << "输入一个十进制数:";
cin >> num;
while (num)
{
Push(S, num % 8);
num /= 8;
}
cout << "对应的八进制数为:";
while (!StackEmpty(S))
{
SElemType e;
Pop(S, e);
cout << e;
}
cout << endl;
}
- 栈的应用举例----数制转换
- 栈的应用举例:数制转换,表达式求值
- 栈的应用举例——数制转换
- 数据结构 P48 算法实现 栈的应用举例-数制转换
- 栈的应用:数制转换
- 栈的应用----数制转换
- 栈的应用数制转换
- 数制转换(栈的应用)
- 3.2栈的应用举例----数制转换、括号匹配及行编辑
- PHP数据结构之六 PHP栈的应用举例【数制转换和括号匹配算法】
- VC栈的应用--数制转换
- 栈的应用之数制转换
- 栈的应用——数制转换
- 栈的应用之数制转换
- 栈的应用—数制转换
- 栈的基本应用-数制转换-数据结构
- 栈的应用之数制转换
- 栈在数制转换上的应用
- Python中MySQLConnector模块使用方法详解
- Linux基本操作和vi编辑器
- viewcontrollers 过场动画切换示例(iOS 5)
- Ubuntu下安装Nginx详细步骤
- xcode 错误提示: xxx.png pngcrush caught libpng error:
- 栈的应用举例----数制转换
- cocos2d-x线程使用错误修正
- 得到statusBarHeight, titleBarHeight, DisplayWidth, DisplayHeight:
- linux安装jdk
- python连接msSqlServer
- spring学习笔记(一)
- android paint Xfermode
- 行车路程
- JSON.toJSONString会把key的首字母转成小写