#include
#include
typedef struct sStack
{int data[100];
int top;
} seqstack;
void initialstack(seqstack &S)
{S.top=-1;
}
bool stackempty(seqstack &S)
{
}
bool pushstack(seqstack &S,int x)
{if(stackfull(S))
return false;
else {S.top++;
S.data[S.top]=x;
return true;
}
}
bool popstack(seqstack &S,int &x)
{if(stackempty(S))
return false;
else{x=data.[S.top];
S.top--;
return true;
}
}
void main()
{int n;
int x;
seqstack S;
initialstack(&S);
printf("请输入非负十进制数:");
scanf("%d",&n);
if(n==0) printf("对应八进制数为:/n0");
while(n!=0)
{if(S.top==100) printf("/n栈满结束");
else {x=n%2;
pushstack(S,x);
n=n/2;
}
}
if(S.top==-1) printf("/n栈空结束");
else while(S.top!=-1){popstack(seqstack S,x);
printf("%d",x);
S.top--;
}
只在lz的基础上改,不得不说,lz你的思路很混乱啊。
#include<stdio.h>
#include<stdlib.h>
typedef struct sStack
{
int data[100];
int top;
} seqstack;
void initialstack(seqstack &S)
{
S.top=-1;
}
bool stackempty(seqstack &S)
{
return S.top == -1? true:false;
}
bool stackfull(seqstack &S)
{
return S.top == 100? true:false;
}
bool pushstack(seqstack &S,int x)
{
if (stackfull(S))
return false;
else
{
S.top++;
S.data[S.top]=x;
return true;
}
}
bool popstack(seqstack &S,int &x)
{
if (stackempty(S))
return false;
else
{
x=S.data[S.top];
S.top--;
return true;
}
}
int main()
{
int n;
int x;
seqstack S;
initialstack(S);
printf("请输入非负十进制数:");
scanf("%d",&n);
if (n==0) printf("对应八进制数为:/n0");
while (n!=0)
{
if (S.top==100) printf("/n栈满结束");
else
{
x=n%8;
pushstack(S,x);
n=n/8;
}
}
if (S.top==-1) printf("/n栈空结束");
else
{
while (S.top!=-1){
popstack(S,x);
printf("%d",x);
// S.top--;
}
}
return 0;
}
可是运行还有一个错误啊,,,是不是我电脑有问题