DAF程序运行结果有问题, 求大神援助!!!

wtc1212 2013-05-04 01:59:29
这里是我的代码
#include <stdio.h>
#include <malloc.h>
//////////////////////////////////////////////////
//////////Make a link list////////////////////////
//////////////////////////////////////////////////
typedef struct Node
{
char data;
struct Node *next;
}LNode,*LinkList;
//////////////////////////////////////////////////
//////////Save the input string in link list//////////
//////////////////////////////////////////////////
LinkList input()
{
LinkList L;
LNode *s,*r;
char x;
L=r=NULL;
scanf("%c",&x);
while(x!='#')
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
if(L==NULL)
L=s;
else
r->next=s;
r=s;
scanf("%c",&x);
}
if(r!=NULL)
r->next=NULL;
return L;
}
/////////////////////////////////////////////////
/////////////////grammer///////////////
/////////////////////////////////////////////////
char nextview1(char a1,char a2)
{
char b='A';
{
if(a1 == 'A' && a2== 'a' )
b='B';
else if(a1 == 'A' && a2 == 'b' )
b='D';
else if(a1 == 'B' && a2 == 'a')
b='C';
else if(a1 == 'B' && a2 == 'b' )
b='D';
else if(a1 == 'C' && a2 == 'a' )
b='C';
else if(a1 == 'C' && a2 == 'b' )
b='C';
else if(a1 == 'D' && a2 == 'a' )
b='B';
else if(a1 == 'D' && a2 == 'b' )
b='E';
else if (a1 == 'E' && a2 == 'a' )
b='F';
else if (a1 == 'E' && a2 == 'b' )
b='E';
else if (a1 == 'F' && a2 == 'a' )
b='C';
else if (a1 == 'F' && a2 == 'b' )
b='E';
}
printf("stat is:\n",b);
return b;
}

////////////////////////////////////////////////////////
///////////judge string content the grammer or not ///////////////
///////////////////////////////////////////////////////
int move1(LinkList song)
{
char view;
view='A';
LNode *dou1;
dou1=song;
int i=0;
while(dou1!=NULL)
{
if(view!='E')
{
view=nextview1(view,dou1->data);
dou1=dou1->next;
}
else if(view!='F')
{
view=nextview1(view,dou1->data);
dou1=dou1->next;
}
else if(view=='E')
{
i=1;
}
else if(view=='F')
{
i=1;
}
}
printf("Display i :",i);
return i;
}


int main()
{
LinkList song;
int choose1,choose2;
int c;
printf("input your string (add # after you finish your input)\n");
song=input();
printf("DFA choice\n");
printf("1. grammer1\n");
/*printf("2. (a|b)﹡bbb﹡\n");*/
printf("2. EXIT\n");
while (c!=3)
{

switch (c)
{
case 1:
{

choose1=move1(song);
if(choose1==1)
{
printf("string accord grammer\n");
}
else
printf("string is not accord grammr\n");
break;
}


case 2:
{
c=4;
break;
}
}
scanf("%d",&c);
}

}
程序要求是检查输入的字符串是否符合程DFA定的语法 但是我每一次输出字符串 输出结果都是不符合 实在不知道原因, 而且在nextview1这个函数里 我想显示出STATE也显示不出来, 我在网上查过 我的输出语句应该是没问题的 ,希望大神能帮我解答
...全文
7 点赞 收藏 回复
写回复
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2013-05-04 01:59
社区公告
暂无公告