程序相对简单易懂,运行程序,
在命令行中输入:123+*#(注意:由于输入字符,以‘#’结束)
输出:5.000000
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
float *base;
float *top;
int StackSize;
}Stack;
//创建一个栈,100为Maxsize,#define无法定义
void Createstack(Stack &s)
{
s.base=(float *)malloc(100 * sizeof(float));
s.top=s.base;
s.StackSize=100;
}
//栈顶指针
float top(Stack s)
{
if(s.top==s.base)
{
return -1;
printf("error!\n");
//栈满
}
return *(s.top-1);
}
// 入栈程序
void push(Stack &s,float elem)
{
if(s.top-s.base>=s.StackSize)
{
//扩展栈空间
s.base=(float *)realloc(s.base,(s.StackSize+10)*sizeof(float));
s.top=s.base+s.StackSize;
s.StackSize+=10;
}
*s.top++ = elem;
}
//出栈程序
void pop(Stack &s)
{
if(s.top==s.base)
{
//栈空
printf("error!\n");