5.7表达式类型的实现.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
<<数据结构>> 课程设计报告 题 目 5.7表达式类型的实现 200 8年7月 表达式类型的实现 一、存储结构定义} 数据关系:R1={<ai-1,ai>|ai-1,ai属于D,i=2,……,n} 约定an端为栈顶,a1端为栈底。 基本操作: InitStack(&S) 操作结果:构造一个空栈S。 DestroyStack(&S) 初始条件:栈S已存在。 操作结果:栈S被销毁。 GetTop(S,&e) 初始条件:栈S已存在且非空。 操作结果:用e返回S的栈顶元素。 Push(&S,e) 初始条件:栈S已存在。 操作结果:插入元素e为新的栈顶元素。 Pop(&S,&e) 初始条件:栈S已存在且非空。 操作结果:删除S的栈顶元素,并用e返回其值。 }ADT Stack 程序的头文件如下: #include <stdlib.h> #include "iostream.h" #include "stdio.h" #include "malloc.h" #define TRUE 1 #define FALSE 0 #define OK 1 #define OVERFLOW -1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 ///数据类型定义 typedef int Status; typedef struct BiTNode { int tdata;//放int数据,当有数字时,data='&',用'&'标志结点放的是数字 char data;//放字母和运算符号 struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; ///栈的数据类型定义 typedef char SElemType; typedef struct //用于前缀表达式建立二叉树时的栈类型。 { SElemType *base; SElemType *top; int stacksize; }SqStack; typedef struct //用于原表达式建立二叉树时的栈类型。 { BiTree *base; BiTree *top; int stacksize; }SBStack; SBStack S1; SqStack S; //借用该栈来实现阿拉伯数字的输入 SqStack PTR; ////栈的函数声明 void Merger(); void output(); void yuanput(); Status IntiStack(SqStack &S); int StackLength(SqStack S); Status Push(SqStack &S,char e); char Pop(SqStack &S); Status DestroyStack(SqStack &S); Status GetTop(SqStack S,char &e); Status IntiSBtack(SBStack &S); Status BPush(SBStack &S, BiTNode *e); BiTree BPop(SBStack &S); char GetTop(SqStack S); char bPop(SqStack &S,char &e); /////////////////////////////// void input(); //输入表达式 Status IntiBiTree(BiTree &T);//二叉树的初始化 Status DestroyBiTree(BiTree &T);//二叉树的销毁 Status CreateBiTree(BiTree &T);//前缀表达式建立二叉树 void CrtExptree(BiTree &T);//原表达式建立二叉树 void CrtNode(BiTree &T, char ch); void CrtSubtree (BiTree &T, char c); Status PreOrderTraverse(BiTree T,Status (* Visit)(BiTNode *e));//先序遍历 int pow10(int b);//10的b方 ////////////////////////// Status PrintBiTree(BiTree e);//树的先序输出 Status MergeConst(BiTree &T);//合并(一次) Status MergeConst5(BiTree &T);//设五次内能合并完整 Status Assign(BiTree &T);//变量附值 Status assignn

文档评论(0)

mx597651661 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档