回 帖 发 新 帖 刷新版面

主题:求救!!!!括号匹配问题!

各位大虾求助啊!!!括号匹配问题。
#include "stdio.h"
#include "malloc.h"

typedef char ElementType;
typedef struct linknode
{ ElementType data;
  struct linknode *next;
}LinkNode;
typedef LinkNode* LinkStack;

void InitStack(LinkStack  *s)
{
  *s = NULL;
}

int StackEmpty(LinkStack s)
{
  return s == NULL;
}

void Push(LinkStack *s,ElementType x)
{  
   LinkNode *q;
   q = (LinkNode *)malloc(sizeof(LinkNode));
   q->data = x;
   q->next = *s;
   *s = q;
}

ElementType pop(LinkStack  *s)
{
   LinkNode *k;
   ElementType v;
   
   if (StackEmpty(*s))
       return '\0';
   v = (*s)->data;
   k = *s;
   *s = k->next;
   free(k); 
   return v;
}

int match(char *str)
{
    char ch;
    ElementType x;
    LinkStack s;
    InitStack(&s);
    while ((ch = *str) != '\0')  {
       if (ch == '(' || ch == '[' || ch == '{')
          Push (&s,ch );
       else if (ch == ')' || ch == ']' || ch == '}')  {
          x = pop(&s);
          if (x == '\0') return 0;
          if (x == '(' && ch != ')')
             return 0;
          if (x == '[' && ch != ']')
             return 0;
          if (x == '{' && ch != '}')
             return 0;
       }
       str ++;
    }
    if (StackEmpty(s))
       return 1;
    return 0;
}

int main()
{
    char str[100];
    printf("input a expression:");

    gets(str);

    if (match(str))
         printf( "match!\n");
    else
         printf( "not match!\n");
    return 0;

}

运行的时候只显示printf("input a expression:");这条语句,后面结果不出现,屏幕直接跳出来,听朋友说是要用getch()。可我用了也不行啊
帮忙看看哪个地方有错误!!谢谢谢谢谢谢!!![em7]

回复列表 (共7个回复)

沙发

那你就getch()好了。
前面加上#include <conio.h>

板凳

请问getch()加在什么地方??
#include <conio.h>函数呢??我是莱鸟

3 楼

#include<conio.h>加在最前面。
getch()加在最后面return 0;这句的前面。

4 楼

谢谢啊~~

5 楼

不行啊。还是不显示结果。直接从屏幕上跳出来~~~~ T_T

6 楼

谢谢。搞定了!知道问题出在哪了

7 楼

能告诉我你的问题出在哪了么??谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册