关于栈的测试例程的问题

木犀花香 2013-04-29 12:32:07
以下是代码:stack.h

#ifndef Stack_H
#define Stack_H

typedef int Elementyp;

struct Node;
typedef struct Node *Ptrtonode;
typedef Ptrtonode Stack;

int Isempty(Stack S);
void Push(Elementyp X,Stack S);
void Pop(Stack S);
Elementyp Topofstack();
Stack CreateEmptystack(void);
void MakeEmpty(Stack S);
Elementyp Top(Stack S);
#endif



stack.c
#include <stdio.h>
#include <string.h>
#include "stack.h"


struct Node
{
Elementyp data;
Ptrtonode Next;
};

Stack CreateEmptystack(void)
{
Stack S;
S=malloc(sizeof(struct Node));
S->Next=NULL;
MakeEmpty(S);
return S;
}

void MakeEmpty(Stack S)
{
if(S==NULL)
printf("must use cerate stack first!");
else
{
while(!Isempty(S))
Pop(S);
}
}

void Push(Elementyp X,Stack S)
{
Ptrtonode P;
P=malloc(sizeof(struct Node));

P->data=X;
P->Next=S->Next;
S->Next=P;
}

void Pop(Stack S)
{
Ptrtonode P;
P=S->Next;
S->Next=S->Next->Next;
free(P);
}

int Top(Stack S)
{
if(!Isempty(S))
return S->Next->data;
else
{
printf("error: stack empty!");
return 0;
}
}

int Isempty(Stack S)
{
return S->Next==NULL;
}



teststack.c
#include <stdio.h>
#include "stack.c"
#include "stack.h"
int main(int argc, char *argv[])
{
int c,temp;
Stack S;

S=CreateEmptystack();
while((c=getchar())!=EOF)
{
Push(c,S);

}

while(!Isempty(S))
{
temp=Top(S);
printf("%d\t",temp);
Pop(S);
}

return 0;
}




编译可以通过,但运行失败,这是为什么?

没有得到想要的结果!



...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
木犀花香 2013-04-29
  • 打赏
  • 举报
回复
引用 3 楼 Idle_Cloud 的回复:
[quote=引用 2 楼 lelieven 的回复:] [quote=引用 1 楼 Idle_Cloud 的回复:] Isempty这个函数只有声明,没有实现, 加上就好了。
恩,竟然犯了这样的错误。还有那个运行的时候为什么出来的是8个数啊?[/quote] 你的是什么测试数据啊。[/quote]明白了,谢谢你!
木犀花香 2013-04-29
  • 打赏
  • 举报
回复
引用 3 楼 Idle_Cloud 的回复:
[quote=引用 2 楼 lelieven 的回复:]
[quote=引用 1 楼 Idle_Cloud 的回复:]
Isempty这个函数只有声明,没有实现,
加上就好了。


恩,竟然犯了这样的错误。还有那个运行的时候为什么出来的是8个数啊?[/quote]
你的是什么测试数据啊。[/quote]输入1234然后逆序输出他们的ASCII码。但多了10 32 32 32 不知道为什么?
Carl_CCC 2013-04-29
  • 打赏
  • 举报
回复
引用 2 楼 lelieven 的回复:
[quote=引用 1 楼 Idle_Cloud 的回复:] Isempty这个函数只有声明,没有实现, 加上就好了。
恩,竟然犯了这样的错误。还有那个运行的时候为什么出来的是8个数啊?[/quote] 你的是什么测试数据啊。
木犀花香 2013-04-29
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
Isempty这个函数只有声明,没有实现, 加上就好了。
恩,竟然犯了这样的错误。还有那个运行的时候为什么出来的是8个数啊?
Carl_CCC 2013-04-29
  • 打赏
  • 举报
回复
Isempty这个函数只有声明,没有实现, 加上就好了。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧