怎么看c语言错误出在哪,请各位大佬帮我看看错误出在哪里
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
這是我自己寫我的括號(hào)匹配代碼,調(diào)試時(shí)不管輸入什么括號(hào),總是顯示輸出匹配,不知道錯(cuò)誤出在哪里。代碼奉上#include
#include
typedef char ElemType;
typedef struct linknode
{
ElemType data; //數(shù)據(jù)域
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指向尾結(jié)點(diǎn),釋放其空間
}
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對(duì)應(yīng)的結(jié)點(diǎn)p
p->next=s->next; //插入p結(jié)點(diǎn)作為開(kāi)始結(jié)點(diǎn)
s->next=p;
}
bool Pop(LinkStNode *&s,ElemType &e)
{ LinkStNode *p;
if (s->next==NULL) //棧空的情況
return false;
p=s->next; //p指向開(kāi)始結(jié)點(diǎn)
e=p->data;
s->next=p->next; //刪除p結(jié)點(diǎn)
free(p); //釋放p結(jié)點(diǎn)
return true;
}
bool GetTop(LinkStNode *s,ElemType &e)
{ if (s->next==NULL) //棧空的情況
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("請(qǐng)輸入括號(hào)符號(hào)的數(shù)量\n");
scanf("%d",&n);
char *exp[n]={"(",")"};
printf("請(qǐng)逐個(gè)輸入括號(hào)符號(hào)(用空格隔開(kāi))");//輸出 “請(qǐng)逐個(gè)輸入括號(hào)符號(hào)()” 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");
}
總結(jié)
以上是生活随笔為你收集整理的怎么看c语言错误出在哪,请各位大佬帮我看看错误出在哪里的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言字符串操作面试题,C语言常见字符串
- 下一篇: c语言运算程序,C语言运算符