信息储存与检索上机报告。
一)逆波兰变换。
一、上机题目:
编写算法和程序,实现布尔检索式的逆波兰变换。
二、试验编程语言:c语言。
三、程序设计总体思路:
1、建立两个栈:算项指针栈和算符栈。
2、将表达式送入表达式数组,从左向右扫描检索提问表达式中的字符,对当前字符做如下处理:
如果是算项,将指向该算项的指针放到算项栈中。
如果是“(”则“(”无条件进算符栈,如果是“)”则将算符栈中“(”以及“(”以上的算符出栈。
如果是运算符+ -将他们与算符栈栈顶算符进行比较,如果优先级高于那个算符,将此算符进栈。如果低于算符栈栈顶算符,则把那个算符作为树的根节点。这时算项栈栈顶指针出栈,其所指字符作为右孩子,再将此时算项栈栈顶指针出栈,作为该根节点的左孩子;再将指向该根节点的指针入算项栈。
也就是将此时的这棵树作为了一个算项。如此循环直到表达式数组最后一个运算符为终止符“﹒”一棵表达式二叉树建立完成。
3、后序遍历此二叉树,显示逆波兰表达式。
四、程序源**。
#include ""
#include ""
#include<>
#include<>
typedef structsq;
void copystr(char *a,char *b)
int i=0;
dowhile(a[i]!=0');
b[i]='0';
void voidsq(sq *s)
s->top=-1;
int ifempty(sq *s)
return(s->top==-1);
void push(sq *s,char *c)
if(s->top==19)
printf("over flow");
elsechar *pop(sq *s)
if(ifempty(s))
elsereturn(s->s[s->top--]
int judge(char *c)
if(c[1]==0')
switch(c[0])
elsereturn(1);
void write(char *a,char *b,char *c)
strcat(a,c);
strcat(a,b);
int seek(char *c,int start)
int signal=1;
for(start=start++;c[start]!=0'&&signal!=0;start++)
if(signal==0)
return(start-1);
elsevoid fb(sq *a,sq *b)
for(;!ifempty(a);)
char *rewrite(char *a)
sq front;
sq back;
int i,j,k,flag=0;
char *result;
char mid[20];
voidsq(&front);
voidsq(&back);
for(i=0;a[i]!=0';)
else if(a[i]!=
fb(&back,&front);
for(;>2;)
if(flag==1)else
result=
return(result);
void main()
char re[20];
char a[20];
printf("请输入算式:");
scanf("%s",a);
copystr(rewrite(a),re);
printf("逆波兰式:%s",re);
信息检索上机实践报告
课题 导电塑料材料的研制。老师 胡静学生 1 序言。1.1 中文检索词 塑料导电研制 1.2 index words in english plastic conductive research 注释 共选用了6种数据库,包括中文数据库3个,外文数据库2个,搜索引擎1个。2 检索结果。2.1 中文科...
信息检索上机
姓名学号 1.简述布尔逻辑检索技术的种类,各表示什么含义,分别用什么来表示?a.逻辑 与 用 或 and 表示少数用 表示交集,缩小搜索范围 b.逻辑 或 用 或 or 表示。表并列关系,扩大搜索范围 c 逻辑 非 用 或 not 表示。表排除概念,不包含。缩小搜索范围。2.信息检索不是一蹴而就的,...
信息检索上机
姓名学号 简述布尔逻辑检索技术的种类,各表示什么含义,分别用什么来表示?a.逻辑 与 用 或 and 表示少数用 表示交集,缩小搜索范围 b.逻辑 或 用 或 or 表示。表并列关系,扩大搜索范围 c 逻辑 非 用 或 not 表示。表排除概念,不包含。缩小搜索范围。信息检索不是一蹴而就的,请分析检...