数据结构利用栈将十进制数转换成二进制数 为什么不对啊

来源:百度知道 编辑:UC知道 时间:2024/05/12 18:31:49
我是数据结构的初学者,今天做了一道题 利用栈将十进制数转换成二进制数 我做完了为什么就是不对啊?怎么也想不明白。希望高手帮忙解答一下。这个是用c++做得。
#include<iostream.h>
#include<malloc.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linkstack;
void setnull(linkstack *top)
{
top=NULL;
}
void push(linkstack *top,datatype x)
{
linkstack *p;
p=(linkstack *)malloc(sizeof(linkstack));
p->data=x;
p->next=top;
top=p;

}
datatype pop(linkstack *top)
{ datatype y;
if(top==NULL)
{
cout<<"栈为空"<<endl;
return NULL;
}
else
{ y=top->data;
top=top->next;
return y;
}

}
void main()
{
int k;
linkstack *top;
setnull(top);
cout<<"请输入你要转换的数字:"<<endl;
cin>>k;
while(k!=0)
{

答案如下:
#include<iostream.h>
#include<malloc.h>
typedef int datatype;

typedef struct node
{
datatype data;
node *next;
}linkstack; //栈结构

void setnull(linkstack **top) //初始化
{ //所有函数参数改成二维指针
(*top)=NULL;
}
void push(linkstack **top,datatype x)
{
linkstack *p;
p=(linkstack *)malloc(sizeof(linkstack));
p->data=x;
p->next=*top;
*top=p;

}
datatype pop(linkstack **top)
{
datatype y;
linkstack *del;
if(*top==NULL)
{
cout<<"栈为空"<<endl;
return NULL;
}
else
{
y=(*top)->data;
del = (*top);
*top=del->next;
free(del);

return y;
}

}
void main()
{
int k;
linkstack *top; //如果参数还是一维指针的话,里面的东西就不会被改变了
setnull(&top); //因为top指向的地址并没有改变,并且会提示top没被初始化
cout<<"请输入你要