栈的应用:十进制转八进制
来源:互联网 发布:淘宝一千零一夜干嘛的 编辑:程序博客网 时间:2024/05/22 17:31
PS:数据结构 48页栈的应用
十进制转换八进制
自己写了下。供大家参考,通过源码进一步学习数据结构。
此书全部给出算法思想
要自己多动手敲敲code,不能光看不敲,那是没用的,给你思路,你也照样写不出来
要做一个合格的程序员就努力的写代码。通过代码量反映你的能力
//利用栈实现进制间的转换
#include<stdio.h>
#include<stdlib.h>
//#include<malloc.h>
#include<conio.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S)//构造空栈
{
S.base = (int *)malloc(sizeof(int) * (STACK_INIT_SIZE));
if(!S.base) exit(-1);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return 1;
}
int Push(SqStack &S, int e)//压栈
{
if(S.top - S.base >= S.stacksize)
{
S.base = (int *)realloc(S.base, sizeof(int) * (STACK_INIT_SIZE + STACKINCREMENT));
if(!S.base) exit(-1);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return 1;
}
int StackEmpty(SqStack S)//查看栈是否为空
{
if(S.base == S.top) return 1;
else return 0;
}
int Pop(SqStack &S, int &e)//出栈
{
if(S.top == S.base) return 0;
e = *--S.top;
return 1;
}
void conversion()//将十进制用栈转化为八进制
{
SqStack S;
int N;
int e;
InitStack(S);
printf("输入N的值:");
scanf("%d",&N);
printf(" 转换后的值:");
while(N)
{
Push(S, N % 8);
N = N/8;
}
while(!StackEmpty(S))
{
Pop(S,e);
printf(" %d",e);
}
}
void main()
{
conversion();
getch();
}
#include<stdio.h>
#include<stdlib.h>
//#include<malloc.h>
#include<conio.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S)//构造空栈
{
S.base = (int *)malloc(sizeof(int) * (STACK_INIT_SIZE));
if(!S.base) exit(-1);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return 1;
}
int Push(SqStack &S, int e)//压栈
{
if(S.top - S.base >= S.stacksize)
{
S.base = (int *)realloc(S.base, sizeof(int) * (STACK_INIT_SIZE + STACKINCREMENT));
if(!S.base) exit(-1);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return 1;
}
int StackEmpty(SqStack S)//查看栈是否为空
{
if(S.base == S.top) return 1;
else return 0;
}
int Pop(SqStack &S, int &e)//出栈
{
if(S.top == S.base) return 0;
e = *--S.top;
return 1;
}
void conversion()//将十进制用栈转化为八进制
{
SqStack S;
int N;
int e;
InitStack(S);
printf("输入N的值:");
scanf("%d",&N);
printf(" 转换后的值:");
while(N)
{
Push(S, N % 8);
N = N/8;
}
while(!StackEmpty(S))
{
Pop(S,e);
printf(" %d",e);
}
}
void main()
{
conversion();
getch();
}
- 栈的应用:十进制转八进制
- 十进制转八进制的代码
- 栈实现十进制转八进制
- 顺序栈的定义以及应用:十进制与八进制的转换、十进制与十六进制的转换
- 十进制转八进制
- 八进制转十进制
- 十进制转八进制
- 十进制转八进制
- 十进制转八进制
- 十进制转八进制
- 1011十进制转八进制
- python 十进制转八进制
- 十进制转八进制
- 十进制转八进制
- 十进制转八进制
- 十进制转八进制
- 栈的应用之二进制转换为十进制,八进制和十六进制
- 栈的应用--数制转换(十进制数转换为二进制、八进制、十六进制)
- 学习.Net的经典网站
- C#中的泛型(2.0)
- c#中的反射
- 详细介绍微软SQL Server 2008
- C#中的常用例程
- 栈的应用:十进制转八进制
- SQL Server 2008:传递表值参数 (1)
- SQL Server 2008:传递表值参数 (2)
- 数据仓库:甲骨文 VS 微软
- asp.net2.0发送邮件代码
- 你究竟对SQL Server 2005了解多少?
- SQL Server 2008和T-SQL新功能
- 反射技术与设计模式
- vi与vim