作者在 2009-07-14 16:27:13 发布以下内容
哪位好心的同志,帮我看看下面程序中的问题,请指点一二,谢谢
#include <iostream>
#define StackInitSize 100
#define StackAddSize 10
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
#define StackInitSize 100
#define StackAddSize 10
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack (SqStack s)
{
s.base=new int[StackInitSize];
if (!s.base) exit (-1);
s.top=s.base;
s.stacksize=StackInitSize;
return 1;
}
{
s.base=new int[StackInitSize];
if (!s.base) exit (-1);
s.top=s.base;
s.stacksize=StackInitSize;
return 1;
}
int Push (SqStack s,int e)
{
if (s.top-s.base>=s.stacksize){
s.base=(int *)realloc(s.base,(s.stacksize+StackAddSize)*sizeof (int));
if (!s.base) exit (-1);
s.top=s.base+s.stacksize;
s.stacksize += StackAddSize;
}
*s.top++=e;
return 1;
}
{
if (s.top-s.base>=s.stacksize){
s.base=(int *)realloc(s.base,(s.stacksize+StackAddSize)*sizeof (int));
if (!s.base) exit (-1);
s.top=s.base+s.stacksize;
s.stacksize += StackAddSize;
}
*s.top++=e;
return 1;
}
int Pop (SqStack s,int e)
{
if (s.top==s.base) return 0;
e=*s.top--;
return 1;
}
{
if (s.top==s.base) return 0;
e=*s.top--;
return 1;
}
void main()
{
SqStack L;
InitStack (L);
int n,d,*num;
scanf ("%d",&n);
scanf ("%d",&d);
for (int i=0;i<n;++i)
{
num=new int;
scanf ("%d",num++);
int N=*num;
while (N){
Push (L,N%d);
N=N/d;
}
while (L.top != L.base){
Pop(L,n);
printf ("%d",n);
}
}
}
{
SqStack L;
InitStack (L);
int n,d,*num;
scanf ("%d",&n);
scanf ("%d",&d);
for (int i=0;i<n;++i)
{
num=new int;
scanf ("%d",num++);
int N=*num;
while (N){
Push (L,N%d);
N=N/d;
}
while (L.top != L.base){
Pop(L,n);
printf ("%d",n);
}
}
}