zoukankan      html  css  js  c++  java
  • 操作符是否合法

    //头文件
    
    #include <stdio.h>
    #include <malloc.h>
    #define MaxSize 100
    typedef char ElemType;
    typedef struct
    {    
    
           ElemType data[MaxSize];
    
           int top;                            /*栈指针*/
    
    } SqStack;                              /*顺序栈类型定义*/
    
    void InitStack(SqStack *&s)
    
    {
    
           s=(SqStack *)malloc(sizeof(SqStack));
    
           s->top=-1;
    
    }
    
    void ClearStack(SqStack *&s)
    
    {
    
           free(s);
    
    }
    
    int StackLength(SqStack *s)
    
    {
    
           return(s->top+1);
    
    }
    
    int StackEmpty(SqStack *s)
    
    {
    
           return(s->top==-1);
    
    }
    
    int Push(SqStack *&s,ElemType e)
    
    {
    
           if (s->top==MaxSize-1)    /*栈满的情况,即栈上溢出*/
    
                  return 0;
    
           s->top++;
    
           s->data[s->top]=e;
    
           return 1;
    
    }
    
    int Pop(SqStack *&s,ElemType &e)
    
    {
    
           if (s->top==-1)        /*栈为空的情况,即栈下溢出*/
    
                  return 0;
    
           e=s->data[s->top];
    
           s->top--;
    
           return 1;
    
    }
    
    int GetTop(SqStack *s,ElemType &e)
    
    {
    
           if (s->top==-1)              /*栈为空的情况,即栈下溢出*/
    
                  return 0;
    
           e=s->data[s->top];
    
           return 1;
    
    }
    
    void DispStack(SqStack *s)
    
    {
    
           int i;
    
           for (i=s->top;i>=0;i--)
    
                  printf("%c ",s->data[i]);
    
           printf("\n");
    
    }
    
    //实现函数
    
    #include<iostream>
    
    #include "heshan1.h"
    
    using namespace std;
    
    int judge(char a[])
    
    {
    
           int i;
    
           ElemType x;
    
           SqStack *s;
    
           InitStack(s);
    
           for(i=0;a[i]!='\0';i++)
    
           {
    
                  if(a[i]=='I')
    
                         Push(s,a[i]);
    
                  else if(a[i]=='O')
    
                  {
    
              if(s->top==-1)           //遇到"o"出栈操作   先判断栈是否为空,若为空说明不合法;否则继续
    
                         {
    
                                return 0;
    
                         }
    
                  else
    
                         Pop(s,x);
    
                  }
    
                 
    
           }
    
       return(s->top==-1);
    
       
    
    }
    
    void main()
    
    {
    
        char a[20];int i;
    
           for(i=0;i<20;i++)
    
           {
    
                  a[i]='\0';
    
           }
    
           cout<<"请输入操作序列(I、O序列)"<<endl;
    
           cin>>a;      
    
           int m=judge(a);
    
           if(m==0)
    
           cout<<"你输入的操作序列是不合法的"<<endl;
    
           else
    
           cout<<"你输入的操作序列是合法"<<endl;
    
    }
  • 相关阅读:
    Chapter 4 持久存储数据对象
    pyhton Chapter3 读文件
    python笔记1
    C#读写txt文件
    机器学习第一讲
    Json对象
    表单加载
    多列树
    Java 基础【11】@注解
    Java 基础【06】复合赋值运算
  • 原文地址:https://www.cnblogs.com/heshan664754022/p/2384683.html
Copyright © 2011-2022 走看看