蛋疼的编译结果,到底是怎么了
2013-11-24 01:12
162 查看
#include"stdio.h"
#include"math.h"
#include"time.h"
#include"io.h"
#include"stdlib.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
typedef int Status;
typedef int SElemType;
typedef struct StackNode
{
SElemType data;
struct StackNode *next;
}StackNode;*LinkStackPtr;
typedef struct
{
LinkStackPtr top;
int count;
}LinkStack;
//链栈结构
Status visit(SElemType c)
{
printf("%d\n",c);
return OK;
}
Status InitStack(LinkStack *S)
{
S->top=(LinkStackPtr)malloc(sizeof(StackNode));
if(!S->top)
return ERROR;
S->top=NULL;
S->count=0;
return OK;
}//构建一个空栈
Status ClearStack(LinkStack *s)
{
LinkStackPtr p,q;
p=s->top;
while(p)
{
p=q;
p=p->next;
free(q);
}
s->count=0;
return OK;
}//使栈变为空栈
Status EpmtyStack(LinkStack s)
{
if(s.count==0)
return TRUE;
else
return FALSE;
}//判断栈是否为空栈
int StackLength(LinkStack s)
{
return s.count;
}//返回s中数据元素个数
Status GetTop(LinkStack s,SElemType *e)
{
if(s.top===NULL)
return ERROR;
else
*e=s.top->data;
return OK;
}//用e返回s中的栈顶元素
Status Push(LinkStack *S,SElemType e)
{
LinkStackPtr s=(LinkStackPtr)malloc(sizeof(StackNode));
s->data=e;
s->next=S->top;
S->top=s;
S->count++;
return OK;
}//向栈中插入一个元素e
Status Pop(LinkStack *S,SElemType *e)
{
LinkStack p;
if(EpmtyStack(S))
return ERROR;
*e=S->top->data;
p=S->top;
S->top=S->top->next;
free(p);
S->count--;
return OK;
}//删除栈顶元素
Status StackTraverse(LinkStack s)
{
LinkStackPtr p;
p=s.top;
while(p)
{
visit(p->data);
p=p->next;
}
return OK;
}//输出S中所有数据元素
int main()
{
LinkStack s;
int j;
int e;
if(InitStack(*s)==OK)
{
for(j=0;j<=5;j++)
{
Push(*s,j);
}
}
printf("栈中元素为: ",StackTraverse(s));
printf("栈的长度:%d\n",StackLength(s));
Pop(*s,*e);
printf("栈是否为空:(1,是;0,否)",EpmtyStack(s));
GetTop(s,*e);
printf("栈长为:%d\n",StackLength(s));
ClearStack(*s);
printf("是否为空栈:(1,是;0,否)",EpmtyStack(s));
return O;
}
#include"math.h"
#include"time.h"
#include"io.h"
#include"stdlib.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
typedef int Status;
typedef int SElemType;
typedef struct StackNode
{
SElemType data;
struct StackNode *next;
}StackNode;*LinkStackPtr;
typedef struct
{
LinkStackPtr top;
int count;
}LinkStack;
//链栈结构
Status visit(SElemType c)
{
printf("%d\n",c);
return OK;
}
Status InitStack(LinkStack *S)
{
S->top=(LinkStackPtr)malloc(sizeof(StackNode));
if(!S->top)
return ERROR;
S->top=NULL;
S->count=0;
return OK;
}//构建一个空栈
Status ClearStack(LinkStack *s)
{
LinkStackPtr p,q;
p=s->top;
while(p)
{
p=q;
p=p->next;
free(q);
}
s->count=0;
return OK;
}//使栈变为空栈
Status EpmtyStack(LinkStack s)
{
if(s.count==0)
return TRUE;
else
return FALSE;
}//判断栈是否为空栈
int StackLength(LinkStack s)
{
return s.count;
}//返回s中数据元素个数
Status GetTop(LinkStack s,SElemType *e)
{
if(s.top===NULL)
return ERROR;
else
*e=s.top->data;
return OK;
}//用e返回s中的栈顶元素
Status Push(LinkStack *S,SElemType e)
{
LinkStackPtr s=(LinkStackPtr)malloc(sizeof(StackNode));
s->data=e;
s->next=S->top;
S->top=s;
S->count++;
return OK;
}//向栈中插入一个元素e
Status Pop(LinkStack *S,SElemType *e)
{
LinkStack p;
if(EpmtyStack(S))
return ERROR;
*e=S->top->data;
p=S->top;
S->top=S->top->next;
free(p);
S->count--;
return OK;
}//删除栈顶元素
Status StackTraverse(LinkStack s)
{
LinkStackPtr p;
p=s.top;
while(p)
{
visit(p->data);
p=p->next;
}
return OK;
}//输出S中所有数据元素
int main()
{
LinkStack s;
int j;
int e;
if(InitStack(*s)==OK)
{
for(j=0;j<=5;j++)
{
Push(*s,j);
}
}
printf("栈中元素为: ",StackTraverse(s));
printf("栈的长度:%d\n",StackLength(s));
Pop(*s,*e);
printf("栈是否为空:(1,是;0,否)",EpmtyStack(s));
GetTop(s,*e);
printf("栈长为:%d\n",StackLength(s));
ClearStack(*s);
printf("是否为空栈:(1,是;0,否)",EpmtyStack(s));
return O;
}
相关文章推荐
- 程序经VC编译运行后的输出结果怎么不完整???
- 初学OpenCV3,运行编程入门上读取并播放视频的原版程序,编译通过但是没有任何输出,已按网上博主各种方法试,还是没有结果,大家看怎么解决?
- 怎么设置JSP代码中算数相乘以后的结果小数点只取后2位
- win7使用过程中vs2012显示行号结果整个窗口都变成黑色了,教你怎么变回浅色?
- nasm编译结果的调试符号
- 怎么在dos命令下,使用java命令编译源代码
- 经验分享(十五)我们到底该怎么学技术?如何成为一个优秀的技术人员?
- JDK动态代理干了什么事情?为什么我的事务会不起效?spring的事务到底应该怎么使用?原理是什么?
- 到底怎么做才有用?
- 支付宝回调通知怎么处理才能保证结果不丢失
- 怎么在vs环境下编译lua
- .NET语言中a += b与a = a + b的编译结果必然相同
- 米老师讲课:到底怎么学习
- 调用FindFirstVolume编译错误是undeclared identifier,怎么回事?
- 内核编译时, 到底用make clean, make mrproper还是make distclean(转载)
- ByteBuffer 到底怎么用?网络编程中一点总结!
- Makefile编译时怎么打印出变量值
- android编译结果: 文件系统分析
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?