有没有检查c语言编译错误的软件,求大佬解答,为什么这个程序编译软件检查不出错误...
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
#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;
}
總結
以上是生活随笔為你收集整理的有没有检查c语言编译错误的软件,求大佬解答,为什么这个程序编译软件检查不出错误...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java虚拟机1.7_《Java虚拟机原
- 下一篇: SQLite学习手册(数据类型)