c语言编译无法检测出的错误是,求大佬解答,为什么这个程序编译软件检查不出错误...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

52576e3f3e88cdba3e95b46ad3ed0287.png

#include

#include /* malloc()等 */

#include

#include

#include /* exit() */

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */

typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */

typedef int SELemType;

typedef int Status; /* 定义栈顶元素类型,此句要在c3-1.h的前面 */

typedef struct Node

{

SELemType data;

struct Node *next;

}Node,*LinkStackPtr;

typedef struct LinkStack

{

LinkStackPtr top;

int count;/*记录链栈的元素个数*/

}LinkStack; /* 链栈 */

/* 链栈的基本操作(9个) */

Status InitStack(LinkStack *S)

{ /* 构造一个空栈S */

LinkStackPtr p;

p=(LinkStackPtr)malloc(sizeof( Node));

if(!p)

exit(OVERFLOW); /* 存储分配失败 */

p->next=NULL;

S->top=p;

S->count=0;

return OK;

}

Status ClearStack(LinkStack *S)/*清空链栈*/

{

LinkStackPtr p;

while(S->top)

{

p=S->top;

S->top=S->top->next;

S->count--;

free(p);

}

return OK;

}

Status DestroyStack(LinkStack *S)

{ /* 销毁栈S,S不再存在 */

ClearStack(&*S);

free(S);

return OK;

}

Status StackEmpty(LinkStack S)

{ /* 若栈S为空栈,则返回TRUE,否则返回FALSE */

if(S.top)

return TRUE;

else

return FALSE;

}

int StackLength(LinkStack S)

{ /* 返回S的元素个数,即栈的长度 */

return S.count;

}

Status GetTop(LinkStack S,SELemType*e)

{ /* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */

if(!S.top) return ERROR;

*e=S.top->data;

return OK;

}

Status Push(LinkStack *S,SELemType e)

{ /* 插入元素e为新的栈顶元素 */

LinkStackPtr p=(LinkStackPtr)malloc(sizeof(Node));

p->data=e;

p->next=S->top;

S->top=p;

S->count++;

return OK;

}

Status Pop(LinkStack *S,SELemType *e)

{ /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */

LinkStackPtr p;

if(!S->top) return ERROR;

p=S->top;

S->top=S->top->next;

S->count--;

free(p);

return OK;

}

Status visit(SELemType a)

{

printf("%d",a);

return OK;

}

Status StackTraverse(LinkStack S)

{ /* 从栈底到栈顶依次对栈中每个元素调用函error C2081: 'SElemType' : name in formal parameter list illegal数visit() */

LinkStackPtr p;

p=S.top;

while(p)

{

visit(p->data);

p=p->next;

}

printf("\n");

return OK;

}

int main()

{ int i;

SELemType e;

LinkStack s;

if(InitStack(&s))

for(i=1;i<=10;i++)

Push(&s,i);

printf("压栈操作后,栈中元素为:\n");

StackTraverse(s);

Pop(&s,&e);

printf("出栈操作后,弹出的元素为:%d\n",e);

Pop(&s,&e);

printf("再次出栈操作后,弹出的元素为:%d\n",e);

printf("Push将刚刚弹出的元素%d再次压入栈中\n");

Push(&s,e);

printf("StackEmpty判断栈是否为空:%d(1:是 0:不是)\n",StackEmpty(s));

GetTop(s,&e);

printf("GetTop当前的栈顶元素为:%d\n",e);

printf("StackLength:当前的栈的长度为:%d\n",StackLength(s));

ClearStack(&s);

printf("ClearStack栈清空后,StackEmpty栈是否为空:%d(1:是 0:不是)%d",StackEmpty(s));

DestroyStack(&s);

printf("DestroyStack栈销毁");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值