顺序栈实现数制转换
2011-12-06 15:27
316 查看
#include <stdio.h>
#include <stdlib.h>
#define StackSize 100 /*假定预分配的栈空间最多为100个元素*/
typedef int DataType; /*应将顺序栈的DataType定义改为整型*/
typedef struct
{ DataType data[StackSize];
int top;
}SeqStack;
void main()
{
void InitStack(SeqStack *S);
int StackEmpty(SeqStack *S);
int StackFull(SeqStack *S);
void Push(SeqStack *S,DataType x);
DataType Pop(SeqStack *S);
DataType StackTop(SeqStack *S);
void MultiBaseOutput(int N,int B);
int N,B;
printf("请输入欲转换的十进制数:");
scanf("%d",&N);
printf("请输入欲转换成的进制:");
scanf("%d",&B);
MultiBaseOutput(N,B);
}
void InitStack(SeqStack *S)
{ /*将顺序栈置空*/
S->top=-1;
}
int StackEmpty(SeqStack *S)
{
return S->top==-1;
}
int StackFull(SeqStack *S)
{
return S->top==StackSize-1;
}
void Push(SeqStack *S,DataType x)
{ if (StackFull(S))
{ printf("Stack overflow");
exit(0); /*上溢,退出运行*/
}
S->data[++S->top]=x; /*栈顶指针加1后将x进栈*/
}
DataType Pop(SeqStack *S)
{ if (StackEmpty(S))
{ printf("Stack underflow");
exit(0); /*下溢,退出运行*/
}
return S->data[S->top--]; /*栈顶元素返回后将栈顶指针减1*/
}
DataType StackTop(SeqStack *S)
{ if (StackEmpty(S))
{ printf("Stack is empty");
exit(0);
}
return S->data[S->top];
}
void MultiBaseOutput(int N,int B)
{ /*假设N是非负的十进制整数,输出等值的B进制数*/
int i;
SeqStack S;
InitStack(&S);
printf("十进制数%d的%d进制数是",N,B);
while(N)
{ /*从右向左产生B进制数的各位数字,并将其进栈*/
Push(&S,N%B);
N=N/B;
}
while(!StackEmpty(&S))
{ /*栈非空时退栈输出*/
i=Pop(&S);
printf("%d",i);
}
printf("\n");
}
#include <stdlib.h>
#define StackSize 100 /*假定预分配的栈空间最多为100个元素*/
typedef int DataType; /*应将顺序栈的DataType定义改为整型*/
typedef struct
{ DataType data[StackSize];
int top;
}SeqStack;
void main()
{
void InitStack(SeqStack *S);
int StackEmpty(SeqStack *S);
int StackFull(SeqStack *S);
void Push(SeqStack *S,DataType x);
DataType Pop(SeqStack *S);
DataType StackTop(SeqStack *S);
void MultiBaseOutput(int N,int B);
int N,B;
printf("请输入欲转换的十进制数:");
scanf("%d",&N);
printf("请输入欲转换成的进制:");
scanf("%d",&B);
MultiBaseOutput(N,B);
}
void InitStack(SeqStack *S)
{ /*将顺序栈置空*/
S->top=-1;
}
int StackEmpty(SeqStack *S)
{
return S->top==-1;
}
int StackFull(SeqStack *S)
{
return S->top==StackSize-1;
}
void Push(SeqStack *S,DataType x)
{ if (StackFull(S))
{ printf("Stack overflow");
exit(0); /*上溢,退出运行*/
}
S->data[++S->top]=x; /*栈顶指针加1后将x进栈*/
}
DataType Pop(SeqStack *S)
{ if (StackEmpty(S))
{ printf("Stack underflow");
exit(0); /*下溢,退出运行*/
}
return S->data[S->top--]; /*栈顶元素返回后将栈顶指针减1*/
}
DataType StackTop(SeqStack *S)
{ if (StackEmpty(S))
{ printf("Stack is empty");
exit(0);
}
return S->data[S->top];
}
void MultiBaseOutput(int N,int B)
{ /*假设N是非负的十进制整数,输出等值的B进制数*/
int i;
SeqStack S;
InitStack(&S);
printf("十进制数%d的%d进制数是",N,B);
while(N)
{ /*从右向左产生B进制数的各位数字,并将其进栈*/
Push(&S,N%B);
N=N/B;
}
while(!StackEmpty(&S))
{ /*栈非空时退栈输出*/
i=Pop(&S);
printf("%d",i);
}
printf("\n");
}
相关文章推荐
- 数制转换--顺序栈的实现
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 顺序串的实现C++封装
- 线性表的顺序实现——数据结构课堂作业
- java实现循环队列(顺序队列)
- javaScript的三种实现顺序控制的编程实践
- 顺序表实现(C++)
- 顺序栈的实现
- 顺序栈的实现
- iOS 通过添加线程依赖和信号量结合实现一个复杂界面请求多个接口时按指定顺序执行
- 15.Scala多重继承、多重继承构造器执行顺序及AOP实现
- 静态顺序表的实现(2)
- 栈的c语言实现(顺序存储)。。。2014.5.9
- 数据结构学习笔记-栈的顺序存储(C语言实现)
- 顺序列表记单词工具Android实现
- 动态顺序表的简单实现
- (学习java)顺序栈的实现以及二进制的转换
- 顺序实现线性表--顺序表
- 【顺序查找-Java实现】
- 顺序栈的实现 C语言版(二)