刮号判断

来源:互联网 发布:安卓应用市场网站源码 编辑:程序博客网 时间:2024/04/27 15:08
/****************************************************************--程序描述:输入不同刮号,判断是否匹配--修改原因:从前代码写不够规范--修改日期:    2009.5.29--修改人:吴强--编辑工具and语言   Turbo C for Windows , C语言--输入要求:只可输入 {, [, (, ), ], } 6种符号,并以空格表示结束***********************************************************************/#include #include #include typedef struct node{    char date;    struct node*next;}Node;Node *Push(Node *s, char c){    Node *r;    if (s == NULL)    {r= (Node *)malloc( sizeof(Node) );r->date= c;r->next= NULL;s= r;return s;    }    else    {r=(Node *)malloc( sizeof(Node) );r->date= c;r->next= s;s= r;return s;    }}Node *Pop(Node *s){    Node *p;    Node *q;    if (s == NULL)    {printf("Stack kong");exit(0);    }    else    {p= s;s= s->next;q=(Node *)malloc( sizeof(Node) );q->date= p->date;q->next= s;free(p);return q;    }}int StackEmpty(Node *s){    if (s == NULL)    {       return 1;    }    else    {       return 0;    }}main(){    Node *stack;    Node *stackRight;    Node *StackAllTop;    Node *StackRightTop;    char c;    stack= NULL;    stackRight= NULL;    c= getchar();    while (c != ' ')    {    stack= Push(stack,c);    c= getchar();    }    while ( !StackEmpty(stack) )    {        StackAllTop= Pop(stack);        stack= StackAllTop->next;        if ( StackAllTop->date == '}' ||      StackAllTop->date == ']' ||      StackAllTop->date == ')' )        {            stackRight=Push(stackRight,StackAllTop->date);    }        else if ( StackAllTop->date == '{' ||                   StackAllTop->date == '[' ||       StackAllTop->date == '(' )    {        if ( stackRight == NULL )        {        printf("result error!!!/n");                exit(0);            }            StackRightTop= Pop(stackRight);        stackRight= StackRightTop->next;        if ( StackAllTop->date == '(' )        {        //判断是否匹配,StackAllTop->date+1 就是 ')'        if ( StackAllTop->date+1 != StackRightTop->date )        {            printf("result error!/n");            exit(0);    }            }            else if ( StackAllTop->date == '[' || StackAllTop->date == '{' )        {        //StackAllTop->date+1 就是 ']'或'}'         if ( StackAllTop->date+2 != StackRightTop->date )                {                printf("result error! /n");                exit(0);        }            }    }//end elseif    }//end while    printf("result correct! /n");}
原创粉丝点击