栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

括号匹配:链栈C语言版

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

括号匹配:链栈C语言版

#include
#include
#include
typedef char SElemType;
typedef int Status;
#define MAXSIZE 20
#define ERROR 0
#define OK 1
typedef struct Stack
{
    SElemType data[MAXSIZE];
    int top;
}Stack;
bool Init(Stack* &S)                                    
{
    S = (Stack*)malloc(sizeof(Stack));
    S->top = 0;
    if(S)
       {
             printf("栈初始化完成!n"); 
          return true;
       }
    else
          return false;
}
bool Empty(Stack* &S)                                  
{
    if(S->top == 0)
    {
     printf("栈空!n");
     return true;
    }
    else 
    {
     printf("栈不空!n");
     return false;
    }
 }
void Destory(Stack* &S)                                  
{
   free(S);
   printf("已销毁!n");    
} 
Status Push(Stack* &S,SElemType e)                      
{
    if(S->top == MAXSIZE)
    {
      printf("栈满,压入失败!n");
      return ERROR;
    }
    else
    {
      S->data[S->top] = e;                              //从0号单元存储 
      S->top++;
      return OK;
   }
}
Status Pop(Stack* &S,SElemType &e)                      
{
    if(S->top == 0)
       return ERROR;
    else
    {
        S->top--;
        e = S->data[S->top];
        return OK;
    }
}
Status Gettop(Stack* &S,SElemType e)
{
    if(S->top == 0)
       return ERROR;
    else
      {
          S->top--;
        e = S->data[S->top];
        S->top++;
        return e;
      }
}
int PairStack(Stack* &S,char sys[MAXSIZE])
{
    int i;
    char left,right,left2,e;
    for(i = 0;i < strlen(sys);i++)
    {
        if(sys[i] == '('||sys[i] == '{'||sys[i] == '[')
        {
            left = sys[i];
            Push(S,left);
        }
        else
        {
        right = sys[i];
        left2 = Gettop(S,e);
        if((left2 == '('&&right == ')')||(left2 == '{'&& right == '}')||(left2 == '['&&right == ']'))
        { 
            Pop(S,e);
        }
        }
    }
          if(Empty(S))
           {
               printf("配对成功!n");
               return OK;
           }
          else
          {
              printf("匹配失败!n");
              return ERROR;
          }
}
int main()
{
    char a[MAXSIZE],b[MAXSIZE];
    strcpy(a,"[{}]");
    printf("符号串1为:%sn",a);
    Stack* S;
    Init(S); 
    PairStack(S,a);
    strcpy(b,"{[}]()");
    printf("符号串2为:%sn",b);
    PairStack(S,b);
    return 0;    
} 
 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号