zoukankan      html  css  js  c++  java
  • 自动机转换 248

    #include<stdio.h>
    #define N 30
    char str[N]={NULL};
    void Print(int i,char y);
    int st[N];
    int t=0,k=0;
    struct node//定义一个队列
    {
        char data;
        struct node * next;
    };
    typedef struct node QueueNode;
    struct node2//定义一个链队列
    {
        QueueNode *front;
        QueueNode *rear;
    };
    typedef struct node2 Queue;
    Queue InitQueue()//初始化队列
    {
        Queue Q;
        Q.front=(QueueNode *)malloc(sizeof(QueueNode));
        Q.front->next=NULL;
        Q.rear=Q.front;
        return(Q);
    }
    Queue InserQ(Queue Q,char x)//x进队列
    {
        QueueNode *p;
        p=(QueueNode *)malloc(sizeof(QueueNode));
        p->data=x;
        p->next=NULL;
        Q.rear->next=p;
        Q.rear=p;
        return(Q);
    }
    Queue DeleteQ(Queue Q)//出队列
    {
        int i=t++,j;
        QueueNode *p;
        char y=NULL;
        if(Q.front==Q.rear)
        {
            printf("队列为,无法出队列!");//判断队列是否为空
            return(Q);
        }
        p=Q.front->next;
        y=Q.front->next->data;//将队列中的元素赋值给y
        Q.front->next=p->next;
        if(p==Q.rear)
            Q.rear=Q.front;
        str[t]=y;
        st[k]=t;
        if(y!='|')
        {
            if(p->next->data=='*'&&p->next!=NULL)
            {
                str[t]='~';
                Print(0,'~');
                str[t+1]=y;
                Print(t,y);
                str[t+2]='~';
                k--;
                Print(t,'~');
                free(p->next);
            }
            else
                Print(i,y);
        }
        if(y=='|')
        {
            k--;
            t--;
        }
        k++;
        free(p);
        return Q;
    }
    void Print(int i,char y);//调用函数来判断并输出
    main()
    {
        char x,y;
        Queue p,q;
        p=InitQueue();
        printf("请输入正规式:");
        while(scanf("%c",&x)==1&&x!='\n')//大神的方法,牛
            p=InserQ(p,x);
        q=p;
        while(p.front!=p.rear)
            p=DeleteQ(p);
    }
    void Print(int i,char y)//调用函数来判断并输出
    {
        printf("f(%d,%c)=%d\n",i,y,st[k]);
    
        memset(str,0,N);//清空数组str里的所有元素
    }
  • 相关阅读:
    Python 学习笔记 -- 列表的基本使用
    帮助你构建云服务的开源平台:openstack
    一个基于Asterisk构建的VOIP应用软件:Elastix介绍
    Asterisk项目概述
    Asterisk 代码架构概述
    云计算投入成本分析
    撕去服务器虚拟化和云计算的神秘面纱
    VOIP开源项目源码地址
    websocket技术
    JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化
  • 原文地址:https://www.cnblogs.com/YY0302/p/6144289.html
Copyright © 2011-2022 走看看