(1)采用链式存储实现栈。
(2)实现栈的初始化、入栈、出栈操作。
(3)利用已实现的栈及其操作,设计一个十进制正整数转二进制数的函数,主函数测试该转换函数是否正确,进而检验所实现的栈是否正确。
测试数据
输入十进制正整数:(198),(2005),(10),其正确的二进制数输出形式为:
(11000110),(11111010101),(1010)。
且有很多是标点符号错误提示,改了后依然存在错误提示。希望能得到指点,谢谢!
#include <stdiostr.h>
#include <stdlib.h>
struct node
{
float data;
struct node *next;
};
typedef struct node NODE;
NODE *head;
NODE *top;
int *n;//全局变量,用与输出控制
int stack_isempty()
{
return top==NULL;
}
float push(float x) //压栈函数
{
NODE *newnode;
newnode=(NODE *)malloc(sizeof(NODE));
if (newnode==NULL)
{
printf("内存中无可用空间,栈溢出\n");
return 0;
}
else
{
newnode->data=x;
newnode->next=top;
top=newnode;
return 1;
}
}
float pop(float *element) //出栈函数
{
NODE *p;
if (stack_isempty())
{
printf("栈空,栈溢出(下溢出)\n");
return 0;
}
else
{
p=top;
top=top->next;
*element=p->data;
printf("%d\n",p->data);
free(p);
}
return 1;
}
float exchang(float k)//进制转换函数
{
int (*n)=0;
for (;k>0;k=k/2)
{
float x;
x=k%2;
push(float x);
(*n)++;
}
}
void main() //主函数
{
float x;
printf("please input the D number!\n");
scanf("%f",&x);
exchang(float x);
while((*n)--)
{
pop(float *m);
}
}
[此贴子已经被作者于2007-4-25 7:57:19编辑过]