数据结构 堆栈 实现中缀表达式求值

堆栈(Stack):具有一定操作约束的线性表,即只在一端(栈顶,Top)做插入,删除。
  • 插入数据:入栈(Push)
  • 删除数据:出栈(Pop)
  • 先入后出原则:Last In First Out
  • 示例图:
    在这里插入图片描述
栈的顺序存储实现:

栈的顺序存储实现通常由一个一维数组和一个记录栈顶元素位置的变量组成。

#define MAXSIZE 最大个数
typedef struct Stack{
    ElementType Data[MAXSIZE];
    int Top;
};
Stack *PtrS;
  • 1.初始化操作:
    Stack *MakeEmpty(Stack *PtrS){   //初始化栈
    	Stack *p;
    	p = (Stack *)malloc(sizeof(Stack));    //分配Stack大小的空间
    	PtrS = p;
    	PtrS->Top = -1;
    	return PtrS;
    }
    
  • 2.入栈操作:
    Stack *Push(int x, Stack *PtrS){   //入栈
        if(PtrS->Top == MAXSIZE - 1){
            cout<<"栈满";
            return NULL;
        }
        else{   //入栈操作
            PtrS->Data[++(PtrS->Top)] = x;
            return PtrS;
        }
    }
    
  • 3.出栈操作:
    int Pop(Stack *PtrS){   //出栈
    	if(PtrS->Top == -1){
    		cout<<"栈空";
    		return -1;
    	}
    	else{  //不为空则出栈
    		return PtrS->Data[(PtrS->Top)--];
    	}
    }
    
应用:使用堆栈实现表达式求值,效果

在这里插入图片描述

点击查看 完整代码
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值