广 西 大 学 实 验 报 告
姓名
______
丁雪雪
_______
学号
_______0807100317___
_______________
计
网
____ ______
专业
___083___
班
_____2009______
年
_____11______
月
______31_____
日
实验内容
表达式求值
指导教师
华蓓
一、实验目的
1.了解和掌握栈的结构特征。
2.学会为栈类的定义和函数的实现。
3.学会栈的建立。
二、实验内容
根据所学的数据结构中栈的特性及相关算法,应用于求解一个具体的实际问题 ----------
表达式求值。
要求:
(1) 掌握栈的逻辑特性和物理特性;
(2) 掌握栈的各种相关算法;
(3) 编程对表达式求值,要求对正确的表达式能给出正确结果;对不正确的表达式能指出错
误,如少左括号,少右括号,分母为 0 等。
三、设计分析
首先定义一个栈类,其中有成员变量:元素 elem,栈顶 top,最大长度 maxlen;函数
成员 SqStack 用于建立一个栈,push 函数完成入栈操作,pop 函数完成取栈操作,gettop 函
数实现取栈顶操作。rela 函数中建立以个字符数组,通过 switch 语句实现运算符的优先顺序。
Oprt 函数,通过 switch 函数来实现对指定的运算量执行指定的运算。parenthesis 函数,通
过循环并调用 pop,push,gettop 函数来判断表达式的括号是否配对。comp 函数,通过运
用 while 循环,switch 语句和 if,else if 嵌套语句以及调用 pop 函数,push 函数,gettop 函
数来实现对表达式的计值处理。
在主函数中,定义一个动态的字符数组。将字符数组赋值给一个字符串类的参数 s,在
调用函数 parenthesis 来判断括号是都配对,在调用好书 comp 来对表达式求值。
四、源程序代码
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
template <class Telem>
class SqStack
{
private:
Telem *elem;
int top;
int maxlen;
public:
~SqStack(){delete[] elem;}
void clear(){top=-1;};
第 1 页 共 5 页