【数据结构】(三)栈堆的应用(表达式求解)

本文探讨了在数据结构中栈的应用,特别是在表达式求解中的作用。通过预习作业介绍了如何利用栈来判断表达式的结束,并通过比较运算符优先级执行运算。同时提到了C语言中判断数字的库函数isdigit()。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【数据结构】(三)顺序表习题(表达式求解)

(1)预习作业:
在这里插入图片描述
在这里插入图片描述
查表:
在这里插入图片描述

在这里插入图片描述

算法,结合图理解:
在这里插入图片描述

  1. 判断所读取的字符是否为#(为#说明表达式已经读取到尾部),且栈底元素是否为#(为#表示表达式中所有运算符都已计算完毕),这样输出另一个栈中的值就是结果。
  2. 通过判断符号优先级来判断是否要执行运算,要执行时,将所需运算符和数字从两个栈提取出来,之后进行Operate运算出当前结果存入数栈,运算完毕之后无需将ch向后移动读取下一个,还在此处判断优先级是否可以再进行
    运算。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    判断是否为数字或者字符:isdigit© 其是头文件 ctype.h 里的库函数, 参数 c是一个字符, 用来判断 c 是否为十进制数,若不是,则返回NULL.
#include"biao.h"
#define Max 100
#include<stdio.h>
#include<stdlib.h>
#include< ctype.h >    // isdigit(c); 其是头文件 ctype.h 里的库函数, 参数 c是一个字符, 用来判断 c 是否为十进制数,若不是,则返回NULL.

biao :: biao()
{
   
   
	//空
}

void biao::inbiao1(biao* ps)   //创建数字表
{
   
   
	ps->top = new Node;
	ps->base = ps->top;
	ps->top->next = NULL;
}

void biao::inbiao2(biao* pm)   //创建字符表
{
   
   
	pm->top = new Node;
	pm->base = pm->top;
	pm->top->next = NULL;
}

void biao:: push1 (biao* ps, Node temp)   //压入数字
{
   
   
	PNode p1 = new Node;
	p1->dat = temp.dat;
	p1->next = ps->top;
	ps->top = p1;
}

void biao::push2(biao* pm, Node temp)     //压入字符
{
   
   
	PNode p2 = new Node;
	p2->ch = temp.ch;
	p2->next = pm->top;
	pm->top = p2;
}


//int getIndex(char theta)   //获取theta所对应的索引  
//{
   
   
//	int index = 0;
//	switch (theta)
//	{
   
   
//	case '+':
//		index = 0;
//		break;
//	case '-':
//		index = 1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值