怎么看c语言错误出在哪,请各位大佬帮我看看错误出在哪里
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
這是我自己寫我的括號匹配代碼,調試時不管輸入什么括號,總是顯示輸出匹配,不知道錯誤出在哪里。代碼奉上#include
#include
typedef char ElemType;
typedef struct linknode
{
ElemType data; //數據域
struct linknode *next; //指針域
} LinkStNode; //鏈棧類型
void InitStack(LinkStNode *&s)
{
s=(LinkStNode *)malloc(sizeof(LinkStNode));
s->next=NULL;
}
void DestroyStack(LinkStNode *&s)
{
LinkStNode *p=s->next;
while (p!=NULL)
{
free(s);
s=p;
p=p->next;
}
free(s); //s指向尾結點,釋放其空間
}
bool StackEmpty(LinkStNode *s)
{
return(s->next==NULL);
}
void Push(LinkStNode *&s,ElemType e)
{ LinkStNode *p;
p=(LinkStNode *)malloc(sizeof(LinkStNode));
p->data=e; //新建元素e對應的結點p
p->next=s->next; //插入p結點作為開始結點
s->next=p;
}
bool Pop(LinkStNode *&s,ElemType &e)
{ LinkStNode *p;
if (s->next==NULL) //??盏那闆r
return false;
p=s->next; //p指向開始結點
e=p->data;
s->next=p->next; //刪除p結點
free(p); //釋放p結點
return true;
}
bool GetTop(LinkStNode *s,ElemType &e)
{ if (s->next==NULL) //??盏那闆r
return false;
e=s->next->data;
return true;
}
bool Match(LinkStNode *st,char exp[],int n)
{
int i=0;char e;
bool match=true;
while(i
{
if(exp[i]=='(')
Push(st,exp[i]);
else if(exp[i]==')')
{
if(GetTop(st,e)==true)
{
if(e!='(')
match=false;
else
Pop(st,e);
}
else match=false;
}
if(exp[i]=='[')
Push(st,exp[i]);
else if(exp[i]==']')
{
if(GetTop(st,e)==true)
{
if(e!='[')
match=false;
else
Pop(st,e);
}
}
if(exp[i]=='{')
Push(st,exp[i]);
else if(exp[i]=='}')
{
if(GetTop(st,e)==true)
{
if(e!='{')
match=false;
else
Pop(st,e);
}
}
i++;
}
if(!StackEmpty(st))
match=false;
DestroyStack(st);
return match;
}
int main()
{
int n=1,i;
printf("請輸入括號符號的數量\n");
scanf("%d",&n);
char *exp[n]={"(",")"};
printf("請逐個輸入括號符號(用空格隔開)");//輸出 “請逐個輸入括號符號()” for(i=0;i
{
scanf("%c",&exp[i]);
}
for(i=0;i
{
printf("%c",exp[i]);
}
LinkStNode * st;
InitStack(st);
bool match;
match=Match(st,exp[0],n);
if (match=true)
{//輸出匹配
printf("輸出匹配\n");
}
else
printf("輸出不匹配 \n");
}
總結
以上是生活随笔為你收集整理的怎么看c语言错误出在哪,请各位大佬帮我看看错误出在哪里的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言字符串操作面试题,C语言常见字符串
- 下一篇: c语言运算程序,C语言运算符