| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 767 人关注过本帖
标题:[求助]堆栈问题求助(问题已解决)
只看楼主 加入收藏
youhao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-4-24
收藏
 问题点数:0 回复次数:2 
[求助]堆栈问题求助(问题已解决)
用链栈实现以下功能:
(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编辑过]

搜索更多相关主题的帖子: 堆栈 
2007-04-24 12:33
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 
以下是引用youhao在2007-4-24 12:33:30的发言:
用链栈实现以下功能:
(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编辑过]


2007-04-24 12:43
youhao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-4-24
收藏
得分:0 

问题已解决。谢谢大家。
十进制转换二进制代码,程序如下。

#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编辑过]



epWuF6hE.jpg (11.28 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2007-04-24 16:34
快速回复:[求助]堆栈问题求助(问题已解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028231 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved