MHWDarkGrey 2017-11-25 10:06 采纳率: 0%
浏览 691

求大佬解答,程序检查不出错误但运行不出来

#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;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-11-25 15:31
    关注

    程序检查不出错误
    说说看你是怎么检查的。盯着代码傻看的么?

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog