关于一个用栈来检查表达式的括号匹不匹配的代码,其中表达式中括号有三种:(),[]和{}

songsong2008 2004-11-15 07:11:23
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 200
typedef struct
{
char * base;
char * top;
}stack;

int Init(stack *s)
{s->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!s->base) return 0;
s->top=s->base;
return 1;
}
void Destroy(stack *s)
{free(s->base);
s->base=NULL;
s->top=NULL;
}
void Push(stack *s,char c)
{
*s->top++=c;
}

int pop(stack *s,char *c)
{if(s->top==s->base) return 0;
*c=*--s->top;
return 1;
}
/*---------------------------------------------------------------*/
int Check(stack *s,char *expr)
{int i;
char c[1];
for(i=0;expr[i]!='\0';i++)
{if(expr[i]=='{'||expr[i]=='['||expr[i]=='(') Push(s,expr[i]);
if(expr[i]=='}'||expr[i]==']'||expr[i]==')')
{
if(pop(s,c)==0) return 0;/*栈空,表达式有错*/
else
{if(expr[i]==')')
{
if(c[0]!='(') return 0;
}
else
if(expr[i]-c[0]!=2) return 0;/*'{'和'}'式'['和']'的ASCII码差2*/
}
}
}
if(s->base!=s->top)
return 0;
return 1;
}
/*-------------------------------------------------------------*/
void main()
{
char expr[100];
stack *s;
printf("input the expression\n");
scanf("%s",expr);
if(!Init(s))//第一句warning
exit(0);
if(Check(s,expr))//第二句warning
printf("right\n");
else
printf("wrong\n");
Destroy(s);//第三句warning
}
-----------------------------
程序运行正确,不过有三个warning(即main中用到s的地方都有一个相同的warning:"possible use "s" before definition")这是什么原因呢?我不是已经在stack *s这一句定义s吗?
...全文
431 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlackEagle_ 2004-11-15
  • 打赏
  • 举报
回复
在stack *s;后面加一句:
s = null;
kobefly 2004-11-15
  • 打赏
  • 举报
回复
严奶奶数据结构书上的啊
有部分伪代码
sharkhuang 2004-11-15
  • 打赏
  • 举报
回复
压栈匹配扩府经典算法哈
liujingfu123 2004-11-15
  • 打赏
  • 举报
回复
在main()中,你的s 是一个指针,你只是声明了,但没分配空间给它(没初始化),而是调用函数给它初始化的。
内容概要:本文研究了基于节点电价的电网对电动汽车接纳能力的评估模型,通过Matlab代码实现,旨在科学量化电网在不同运行条件下对大规模电动汽车充电负荷的承载能力。该模型综合考虑电网潮流约束、节点电压偏移、线路容量限制以及电价激励机制等因素,构建了以节点电价为引导信号的优化评估框架。通过仿真分析,评估电动汽车在不同渗透率、充电行为和电价政策下的并网影响,识别电网薄弱环节,并提出相应的优化调度与扩容建议。研究结果可为电网规划、需求侧管理和电动汽车有序充电策略制定提供理论依据和技术支持。; 适合人群:电气工程、电力系统及其自动化、交通运输与能源交叉领域等相关专业的科研人员、研究生以及从事智能电网、电动汽车充电设施规划与运营的工程技术人员。; 使用场景及目标:①评估局部电网对电动汽车集群接入的承受极限;②分析分时电价或节点电价政策对电动汽车充电行为的引导效果;③辅助电网公司制定电动汽车有序充电策略与配电网升级改造方案; 阅读建议:本资源结合电力系统分析与经济学激励机制,建议读者具备一定的电力系统稳态分析基础和优化建模能力,阅读时应重点关注模型构建的假设条件、目标函数设计与约束处理方式,并结合Matlab代码进行仿真复现与参数敏感性分析,以深入理解评估模型的实际应用价值。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧