鱼C论坛

 找回密码
 立即注册
查看: 2642|回复: 1

数据结构 顺序栈使用出错,求大神

[复制链接]
发表于 2013-11-1 14:15:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define STACKINITSIZE 50
typedef struct 
{
char * base;
char * top;
int stacksize;
}sqstack;
void Clearstack(sqstack *s)
{
s->top=s->base;
}

void InitStack(sqstack *s)
{
s->base=(char *)malloc(STACKINITSIZE*sizeof(char));
if(!s->base)
printf("adasa");
s->top=s->base;
}

void Push(sqstack * s,char a)
{
*s->top++=a;
}
void Pop(sqstack *s,char * a)
{ 
*a=*--s->top;
}
int youxianji(char a)
{
if(a=='^')
return 8;
if(a==')')
return 9;
if(a=='*'||a=='/')
return 7;
if(a=='+'||a=='-')
return 5;

if(a=='(');
return 3;
if(a=='#')
return 1;
}
void function(char *a,sqstack * s,int h)
{

char lin;//临时存放出战数据 
*s->top='#';
s->top++; //处理前将‘#’入栈 
int i,b;

for(i=0;i<h;i++)
{
b=i;
if(a[b]!='+'&&a[b]!='-'&&a[b]!='*'&&a[b]!='/'&&a[b]!='('&&a[b]!=')'&&a[b]!='#'&&a[b]!='^')
{printf("%c",a[b]);continue;}
if(a[b]=='(')
{ Push(s,a[b]);continue;}
if(a[b]=='#'&&*(s->top-1)!='#')
{ 

do
{Pop(s,&lin);
printf("%c",lin);

}
while(*(s->top-1)!='#');
break;
}
if(a[b]==')')
{ 
do
{Pop(s,&lin);
printf("%c",lin);
}
while(*(s->top-1)!='(');
Pop(s,&lin);
continue;
}
/*asdadsd*/ if(youxianji(a[b])>youxianji(*(s->top-1))||a[b]=='#')//若优先级大 
Push(s,a[b]);
else
{ do
{Pop(s,&lin);
printf("%c",lin);

} 
while(youxianji(*(s->top-1))>=youxianji(a[b])) ;
Push(s,a[b]);
}
} 


}

int main()
{

char date[20][STACKINITSIZE];//为什么改大后 无效内存引用 
sqstack S1;
InitStack(&S1);


int a,N,i;
scanf("%d",&N);

getchar();
for(i=0;i<N;i++)
{

scanf("%s",date[i]);
a=strlen(date[i]);
function(date[i],&S1,a);

printf("\n");
Clearstack(&S1);



}
for(i=0;i<N;i++)
{
;
}


system("pause");

return(0); 
}
从中缀向后缀转换表达式,了简化编程实现,假定变量名均为单个字母,运算符只有+,-,*,/ 和^(指数运算),可以处理圆括号(),并假定输入的算术表达式正确。
要求:使用栈数据结构实现 ,输入的中缀表达式以#号结束  
自己测试了多组数据均无错误,可是交上去测试时9例中出现三例内存引用无效,四例正确,这是怎么回事

 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-3 12:56:51 | 显示全部楼层
继续求助,没人看吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表