- 论坛徽章:
- 0
|
请教高手啊,先谢谢啦。
是想用 “栈”做一个可以转换数的进制的程序,但是却老是提示“内存错误”。程序如下:
#include<iostream.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int top;
}SeqStack;
int Init_SeqStack(SeqStack **s )
{
if((*s)=new(SeqStack))return 0;
(*s)->top=-1;
return 1;
}
int Empty_SeqStack(SeqStack *s)
{
if(s->top==-1)
return 1;
else return 0;
}
int Push_SeqStack(SeqStack **s,int x)
{
if ((*s)->top==MAXSIZE-1)
return 0;
else
{
(*s)->data[++(*s)->top]=x;
return 1;
}
}
int Pop_SeqStack(SeqStack **s,int *x)
{
if (Empty_SeqStack(*s))
return 0;
else
{
*x=(*s)->data[(*s)->top--];
return 1;
}
}
int Top_SeqStack(SeqStack *s)
{
if(Empty_SeqStack(s))
return 0;
else
return (s->data[s->top]);
}
void conversion(double N,int r)
{
double n;
int M,x,y;
SeqStack *S,*P,*Q;
Init_SeqStack(&S);
Init_SeqStack(&P);
Init_SeqStack(&Q);
M=N/1;
n=N-M;
while(M)
{
Push_SeqStack(&S,M%r);
M=M/r;
}
while(n)
{
int m;
m=n*r;
Push_SeqStack(&Q,m);
n=n*r;
if(n>1)
n=n-1;
}
while(Empty_SeqStack(S))
Pop_SeqStack(&S,&x);
while(Empty_SeqStack(Q))
{
Pop_SeqStack(&Q,&y);
Push_SeqStack(&P,y);
Pop_SeqStack(&P,&y);
cout<<x<<y<<endl;
}
}
void main()
{
double N;
int r;
cout<<"请输入要转化为几进制,及要转化的数:"<<endl;
cin>>N>>r;
cout<<"转化后的数应为:"<<endl;
conversion(N,r);
}
多谢啊!! |
|