| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 279 人关注过本帖
标题:这个关于栈的算法错在哪?
只看楼主 加入收藏
不离不弃
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-31
收藏
 问题点数:0 回复次数:3 
这个关于栈的算法错在哪?

#include "Stdio.h"
#include "Conio.h"

typedef struct Node //定义栈
{
int data;
struct Node *next;
}Node,*LKStack;

void inistack(LKStack *s) //初始化栈
{
*s=(Node*)malloc(sizeof(Node));
(*s)->next=NULL;
}

int isEmpty(LKStack s) //判空
{
return s->next==NULL;
}

int push(LKStack s,int e) 入栈
{
Node *r;
r=(Node*)malloc(sizeof(Node));

if(r==NULL) return 0;
r->data=e;
r->next=s->next;
s->next=r;
}

int pop(LKStack s,int *e) //出栈
{
Node *r;
if(isEmpty(s)) return 0;
r=s->next;
s->next=r->next;
*e=r->data;
free(r);
}

int gettop(LKStack s,int *e)//取栈顶元素
{
if(isEmpty(s)) return 0;
*e=s->next->data;
}
void main(void) //把八进制1357转换成十进制数
{
int a=1357;
int b,e;
Node *s;
while(a)
{
b=a%8;
a=a/8;
push(s,b);
}
while(isEmpty(s))
{

pop(s,e);
printf("%d",e);
}
}
不显示结果,是怎么回事啊 ?大虾们谢谢了 !

搜索更多相关主题的帖子: 算法 
2007-11-03 17:11
gewalaaa
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-3
收藏
得分:0 

好像这句中*s=(Node*)malloc(sizeof(Node))的node*有空格

2007-11-03 21:33
tianxia_buaa
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-19
收藏
得分:0 

我觉得你应该好好再看一下指针和堆栈的概念,你在main()中定义的Node *s是没有被分配空间的,在执行你定义的pop()和push()时内存会出现问题的
建议你能写得简单一些,没必要非要用*LKStack之类的,如果是刚学的话最好不要轻易用二级指针

[此贴子已经被作者于2007-11-4 12:51:01编辑过]


2007-11-03 23:01
禾今
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-28
收藏
得分:0 
把八进制1357转换成十进制数
如果只是完成此题,则没必要做栈,可以把得到的数组逆序输出即可

因为幸福 所以继续编程
2007-11-04 00:10
快速回复:这个关于栈的算法错在哪?
数据加载中...
 
   



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

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