(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编辑过]
----------------解决方案--------------------------------------------------------
用链栈实现以下功能:
(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; //错误(1),%运算两边都应该为int型,而你的k是float
push(float x); //错误(2),函数调用里的实参,不要加类型
(*n)++;
}
}
void main() //主函数
{
float x;
printf("please input the D number!\n");
scanf("%f",&x);
exchang(float x); //错误(3),函数调用里的实参,不要加类型
while((*n)--)
{
pop(float *m); //错误(4),函数调用里的实参,不要加类型,且*m未定义
}
}
E:\Projects\Cpp1.c(59) : error C2296: '%' : illegal, left operand has type 'float '
E:\Projects\Cpp1.c(60) : error C2143: syntax error : missing ')' before 'type'
E:\Projects\Cpp1.c(60) : error C2198: 'push' : too few actual parameters
E:\Projects\Cpp1.c(60) : error C2059: syntax error : ')'
E:\Projects\Cpp1.c(68) : warning C4013: 'scanf' undefined; assuming extern returning int
E:\Projects\Cpp1.c(69) : error C2143: syntax error : missing ')' before 'type'
E:\Projects\Cpp1.c(69) : error C2198: 'exchang' : too few actual parameters
E:\Projects\Cpp1.c(69) : error C2059: syntax error : ')'
E:\Projects\Cpp1.c(72) : error C2143: syntax error : missing ')' before 'type'
E:\Projects\Cpp1.c(72) : error C2198: 'pop' : too few actual parameters
E:\Projects\Cpp1.c(72) : error C2059: syntax error : ')'
[此贴子已经被作者于2007-4-24 12:56:43编辑过]
----------------解决方案--------------------------------------------------------
问题已解决。谢谢大家。
十进制转换二进制代码,程序如下。
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node NODE;
NODE *head;
NODE *top;
int n=0;
int element;
int stack_isempty()
{
return top==NULL;
}
int push(int 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;
}
}
int pop(int *element)
{
NODE *p;
if (stack_isempty())
{
printf("栈空,栈溢出(下溢出)\n");
return 0;
}
else
{
p=top;
top=top->next;
*element=p->data;
free(p);
}
return *element;
}
void exchang(int k)
{
int x;
for(;k>0;k=k/2)
{
x=k%2;
push(x);
n++;
}
}
void main()
{
int x;
printf("please input the decimal number!\n");
scanf("%d",&x);
exchang(x);
printf("\nafter change to binary: ");
while(n--)
{
printf("%d",pop(&element));
}
printf("\n");
}
[此贴子已经被作者于2007-4-25 7:56:42编辑过]
----------------解决方案--------------------------------------------------------