实验1-源文件(g.cpp+test.cpp)
来源:互联网 发布:win32 编程 pdf 编辑:程序博客网 时间:2024/05/16 18:28
//g.cpp,文件中设计了文法的数据结构
#include<string.h>
#include<iostream.h>
typedef struct Snode{
char* s;
struct Snode *nexts;
}Snode;
typedef struct Cnode{
char c;
struct Cnode *nextc;
struct Snode *define;
}Cnode;
class G{
public:
Cnode *vn,*vt,*s,*p;
G(){
vn=0;
vt=0;
s=0;
p=0;
}
void insert_into_vn(char newc){
Cnode *p;
Cnode *lastvn;
p=new Cnode;
p->c=newc;
p->nextc=0;
p->define=0;
if(!vn){
vn=p;
set_s(vn);
set_p(vn);
}else{
lastvn=vn;
while(lastvn->nextc)
lastvn=lastvn->nextc;
lastvn->nextc=p;
}
}
void insert_into_vt(char newc){
Cnode *p;
Cnode *lastvt;
p=new Cnode;
p->c=newc;
p->nextc=0;
p->define=0;
if(!vt)
vt=p;
else{
lastvt=vt;
while(lastvt->nextc)
lastvt=lastvt->nextc;
lastvt->nextc=p;
}
}
void insert_into_s(char leftvn,char* rights){
Cnode* pc;
Snode *ps,*lasts;
ps=new Snode;
ps->s=rights;
ps->nexts=0;
pc=find_char_inq(vn,leftvn);
if(!pc){
insert_into_vn(leftvn);
pc=find_char_inq(vn,leftvn);
}
lasts=pc->define;
if(!lasts)
pc->define=ps;
else{
while(lasts->nexts) lasts=lasts->nexts;
lasts->nexts=ps;
}
}
void set_s(Cnode* nows){
s=nows;
}
void set_p(Cnode* nowp){
p=nowp;
}
Cnode* find_char_inq(Cnode* q,char c){
Cnode* p=q;
if(!p) return 0;
while(p&&p->c!=c)
p=p->nextc;
if(!p) return 0; else return p;
}
void printG(){
Cnode *pc;
Snode *ps;
pc=vn;
while(pc){
cout<<pc->c<<"->";
ps=pc->define;
while(ps){
cout<<ps->s;
ps=ps->nexts;
if(ps) cout<<"|";
}
cout<<"/n";
pc=pc->nextc;
}
}
};
//试验一测试文件
//test.cpp文件,测试上面定义的数据结构
#include<iostream.h>
#include"g.cpp"
void main(){
G g;
g.insert_into_vn('S');
g.insert_into_vn('Q');
g.insert_into_vn('R');
g.insert_into_vt('a');
g.insert_into_vt('b');
g.insert_into_vt('c');
g.insert_into_s('S',"Qc");
g.insert_into_s('S',"c");
g.insert_into_s('Q',"Rb");
g.insert_into_s('Q',"b");
g.insert_into_s('R',"Sa");
g.insert_into_s('R',"a");
g.printG();
}
- 实验1-源文件(g.cpp+test.cpp)
- 实验3-源文件(g.cpp+subg.h+subg.cpp+test.cpp)
- 编译实验2-源文件(test.cpp)
- test.cpp
- test.cpp
- 找不到源文件lib.cpp
- iOS源文件转cpp
- 【学习C++】两个源文件CPP(cpp与cpp) 或 头文件h与源文件cpp
- SEH-test.cpp
- g++ 编译几个cpp
- cpp
- CPP
- CPP
- cpp
- cpp
- CPP
- CPP
- cpp-empty-test 程序流程
- Release 版会出错可能原因
- 初夏的第二场雨
- 国外与国内 数学与计算机(转)
- 童年趣事之一
- 我哭了,我郁闷~~~是我太认真了吗?
- 实验1-源文件(g.cpp+test.cpp)
- Asp.net
- 编译实验2—C语言中读写文件(c.pp)
- int string coverter
- 编译实验2-在C++中读写文件(testfile.cpp)
- 编译实验2-源文件(test.cpp)
- 关于 Blog 和 RSS 的全面介绍
- 在ASP.NET中面向对象的编程思想
- 有空聊聊天吧