对于写过表达式解析的同学一定不会陌生,我们需要两个栈,一个是符号栈(char),一个是操作数栈(int). 经典的数据结构书中的栈,类型是定死了的。
所以能够实现一个栈,自己指定类型,想必编写接下来代码的心情要愉快的多。本实现过程采用宏定义,这样然接口看来就好像实现了模板化。这里有篇csdn的文章也是实现了模板化的,但是它采用的是预处理运算符## 实现的,及字符串化(stringification),具体链接:http://blog.csdn.net/kingofmiaomiao/article/details/2011195 (注意:字符串化也是属于宏的范畴)
下面给出,本人实现的编码,参考了一个名叫glu的开源项目中的array实现,在此表示感谢。
stack.h (这里的push, pop因为大家应该都是再熟悉不过了,就没有写日志了哈)
/**
*该文件实现了对栈操作的模板化,在实现过程中参考了一个开源的glu项目
*The file has template the operation about stack by referencing a opensource project 'glu'
*@author daniel
*@date 2011-09-19
*/
#ifndef _STACK_H
#define _STACK_H
#include <string.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 50
#de