资源简介
重言式判别程序源代码
数据结构
这是实验源程序和实验报告都有
C语言的

代码片段和文件信息
#include
#include
#include
#include
#define STACKINITSIZE 50
#define STACKINCREMENT 10
#define VARIMAXNUM 20
#define STARMAXLEN 100
typedef struct BiTNode
{
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode*BiTree;
typedef struct
{
BiTree *base;
BiTree *top;
int stacksize;
}Stack;
int varitab[VARIMAXNUM+1];
int sum;
char str[STARMAXLEN];
BiTree root;
Stack optrstackopndstack;
char optrtable[6][7]
={‘ ‘‘|‘‘&‘‘~‘‘(‘‘)‘‘#‘
‘|‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
‘&‘‘>‘‘>‘‘<‘‘<‘‘>‘‘>‘
‘~‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
‘(‘‘<‘‘<‘‘<‘‘<‘‘=‘‘ ‘
‘#‘‘<‘‘<‘‘<‘‘<‘‘ ‘‘=‘
};
/*栈的实现*/
int InitStack(Stack &s)
{
s.base=(BiTree *)malloc(STACKINITSIZE*sizeof(BiTree));
if(!s.base)
{
exit(-2);
}
s.top=s.base;
s.stacksize=STACKINITSIZE;
return 1;
}
BiTree GetTop(Stack s)
{
if(s.top==s.base)
{
return NULL;
}
return *(s.top-1);
}
int Push(Stack &sBiTree e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(BiTree *)realloc(s.base
(s.stacksize+STACKINCREMENT)*sizeof(BiTree));
if(!s.base)
{
exit(-2);
}
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*(s.top)=e;
s.top++;
return 1;
}
BiTree Pop(Stack &s)
{
if(s.top==s.base)
{
return NULL;
}
return *(--s.top);
}
void DestroyStack(Stack &s)
{
free(s.base);
}
/*栈的实现结束*/
void CreatVaritab(unsigned n)
{
int i;
for(i=0;i<*varitab;i++)
{
varitab[*varitab-i]=(n>>i)%2;
}
}
char cmp(char achar b)
{
int ij;
for(i=1;i<6;i++)
{
if(optrtable[i][0]==a)
break;
}
for(j=1;j<7;j++)
{
if(optrtable[0][j]==b)
break;
}
return optrtable[i][j];
}
void CreatBiTree()
{
BiTree tempab;
char *p=str;
temp=(BiTree)malloc(sizeof(BiTNode));
temp->data=‘#‘;
Push(optrstacktemp);
while((*p!=‘#‘)||(GetTop(optrstack)->data!=‘#‘))
{
if((*p>=65)&&(*p<=90))
{
temp=(BiTree)malloc(sizeof(BiTNode));
temp->data=*p;
temp->lchild=NULL;
temp->rchild=NULL;
Push(opndstacktemp);
p++;
}
else
{
switch(cmp(GetTop(optrstack)->data*p))
{
case ‘<‘:
temp=(BiTree)malloc(sizeof(BiTNode));
temp->data=*p;
temp->lchild=NULL;
temp->rchild=NULL;
Push(optrstacktemp);
p++;
break;
case ‘=‘:
temp=Pop(optrstack);
free(temp);
p++;
break;
case ‘>‘:
temp=Pop(optrstack);
b=Pop(opndstack);
temp->rchild=b;
if(temp->data!=‘~‘)
{
a=Pop(opndstack);
temp->lchild=a;
}
Push(opndstacktemp);
break;
}/*switch*/
}/*else*/
}/*while*/
root=Pop(opndstack);/*若为空表达式则返回NULL*/
temp=Pop(optrstack);
free(temp);
}
int GetValue(BiTree &tree)
{
if(!tree)
{
return 0;
}
else if((tree->data>=65)&&(tree->data<=90))
{
return varitab[tree->data-64];
}
else
{
switch(tree->data)
{
case ‘|‘:
return (G
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5889 2008-05-31 23:30 重言式判别\main.cpp
文件 109633 2008-07-16 12:07 重言式判别\重言式判别.doc
目录 0 2008-07-16 12:07 重言式判别
----------- --------- ---------- ----- ----
115522 3
- 上一篇:MFC 编程:圣诞节的礼物
- 下一篇:c++实现的MFC课程设计--旅游管理系统
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
评论
共有 条评论