功能:
大致思路:
整体思路:
1.建栈:创建一个空链栈,把数字类型放入栈中。
2.入栈:需要一个栈头和准备入栈的数字。push(T *,int);
3.计算:从输入中读取数据,当遇到不是数字类型时,就从栈顶上往下取数据,取top->data和(top->next)->data;进行计算;
4.出栈:计算完成之后把刚才计算的那两个节点出栈,把得到的计算的结果从新放入栈中,并释放内存;
5.其他:使用字符串输入需要注意:当多个数字一起时不能判断大于10位以上的,所以需要做相关记号,或者采用循环单个输入法以某个特定符号结束。
代码实现:
- 节点设计:
typedef struct OperandType{
int data; //操作数
struct OperandType * next;
}*LinkedList;
- 构建空栈:
LinkedList createStack(){
LinkedList top = (LinkedList) malloc (sizeof(OperandType)); //申请内存
if(top != NULL){
top->next = NULL;
return top;
}
}
- 入栈实现: