C++数据结构学习:用栈做表达式求值
日期:2008年11月12日 作者:-
栈的应用很广泛,原书只讲解了表达式求值,那我也就只写这些。其实,栈的最大的用途是解决回溯问题,这也包含了消解递归;而当你用栈解决回溯问题成了习惯的时候,你就很少想到用递归了,比如迷宫求解。
另外,人的习惯也是先入为主的,比如树的遍历,从学的那天开始,就是递归算法,虽然书上也教了用栈实现的方法,但应用的时候,你首先想到的还是递归;当然了,如果语言本身不支持递归(如BASIC),那栈就是唯一的选择了——好像现在的高级语言都是支持递归的。
如下是表达式类的定义和实现,表达式可以是中缀表示也可以是后缀表示,用头节点数据域里的type区分,这里有一点说明的是,由于单链表的赋值函数,我原来写的时候没有复制头节点的内容,所以,要是在两个表达式之间赋值,头节点里存的信息就丢了。你可以改写单链表的赋值函数来解决这个隐患,或者你根本不不在两个表达式之间赋值也行。
#ifndef EXPression_H
#define Expression_H
#include "List.h"
#include "Stack.h"
#define INFIX 0
#define POSTFIX 1
#define OPND 4
#define OPTR 8
template class ExpNode
{
public:
int type;
union { Type opnd; char optr;};
ExpNode() : type(INFIX), optr('=') {}
ExpNode(Type opnd) : type(OPND), opnd(opnd) {}
ExpNode(char optr) : type(OPTR), optr(optr) {}
};
更多内容请看C/C++技术专题 数据结构 数据结构教程专题,或
template class Expression : List >
{
public:
void Input()
{
MakeEmpty(); Get()->type =INFIX;
cout << endl << "输入表达式,以=结束输入" << endl;
Type opnd; char optr = ' ';
while (optr != '=')
{
cin >> opnd;
if (opnd != 0)
{
ExpNode newopnd(opnd);
LastInsert(newopnd);
}
cin >> optr; - [1] [2] [3] [4] 下一页
-
- C++数据结构学习:用栈做表达式求值 相关文章:
- ·情书大全|【求爱情书】我是这样爱上你的
- ·求助:如何知道自己是否被人限制局域网内网速!
- ·C++数据结构学习:用栈做表达式求值
- ·求职小建议(一)怎样做好简历
- ·求职面试自我介绍一分钟
- ·男生如何追求女生
- ·C#算术表达式求值
- ·大学生求职如何当走个性化之路
- ·简历模板【范文】:(24)教师求职自荐信范文
- ·Excel数据分类汇总满足多种数据整理需求
- C++数据结构学习:用栈做表达式求值 相关软件
- ·求婚365日2
- ·66RPG求职记
- ·求索客户管理系统 V2.23 SQL网络版
- ·求医记
- ·求真易语言工具箱 V3.0 正式版
- ·我思我悠,我爱我求
- ·中学语文课堂导语艺术探求
- ·求索客户管理系统 V2.7 单机版
- ·为中国思想趋向求答案
- ·天求腹透管理系统 V1.1.6
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:插入排序法
精品推荐
热点TOP10
特别推荐
- ·C语言常用的三种排序方法总结与探讨
- ·C/C++笔试、面试题目大汇总
- ·C#基础概念二十五问
- ·利用C#远程存取Access数据库
- ·入门教程:实例详解C++友元
- ·C语言基础教程(三)输入输出函数及控制流程语句
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·如何在C/C++中调用Java
- ·设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- ·gSOAP中内存的使用
- ·Windows下C语言网络编程快速入门
- ·C语言教程第六章:指针
- ·漫谈C++ Builder多线程编程技术
- ·学生成绩管理系统实习
- ·用C#实现pdf文件的完整性验证
- ·将程序从托管扩展 C++ 迁移到 C++/CLI(1)
- ·链表的c语言实现(六)
- ·C语言库函数 (D类字母)
- ·用AVIFile函数制做AVI文件基本步骤
- ·利用C++实现的贪吃蛇游戏
