| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 492 人关注过本帖
标题:无效内存引用,谁有功能强点的软件帮忙指点一下,实在没辙了........(.从中 ...
只看楼主 加入收藏
20072815
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-1
收藏
 问题点数:0 回复次数:0 
无效内存引用,谁有功能强点的软件帮忙指点一下,实在没辙了........(.从中缀向后缀转换表达式)
#include<stdio.h>
#define Size 100
char str[1000];
char c;
int i;


typedef struct node{
    int top;
    char no[Size];
 }  SqStack;


InitStack (SqStack *S) {
    S->top = -1;
 }


char GetTop (SqStack *S) {
    char c;
    if(S->top != -1)
    c=S->no[S->top];
    return (c);
 }

Push (SqStack *S, char c) {
    if(S->top==Size-1)
    printf("error\n");
    else {
    S->top++;
    S->no[S->top]=c;
    }
 }

Pop (SqStack *S, char *c) {
    if(S->top == -1) printf("error\n");
    else {
    *c=S->no[S->top];S->top--;
    }
 }

  In(char c) {
      switch(c) {
      case'(':
      case')':
      case'*':
      case'+':
      case'-':
      case'/':
      case'#': return 0;break;
      default: return 1;break;
      }
  }

char Precede(char t1,char t2,SqStack *S)
{char e,f;
 switch(t1)
 {
   case'+':
   case '-':if(t2=='*'||t2=='/'||t2=='('||t2=='-'||t2=='+')
   f='<';
   else
   f='>';
   break;

   case '*':
   case '/':if(t2=='(')
   f='<';
   else
   f='>';
   break;

    case'(':  f='<'; break;
    case')': e=GetTop(S);
    while(e!='(') {
    Pop(S,e);
    printf("%c",e);
    e=GetTop(S);
    f='a';
    }
    break;

    case'#': e=GetTop(S);
    while(e!='#') {
    Pop(S,e);
    printf("%c",e);
    e=GetTop(S);
    f='a';
    }
    break;
  }
  return f;
}

void SWITCH (char f,SqStack *S)
  { char e;
    if(f=='<') { printf("%c",Pop(S,e));
    SWITCH (Precede(c,GetTop(S),S),S);
    f='a';
    }
    if(f=='=') { Pop(S,e); c=str[i++]; f='a';}
    if(f=='>')  { Push(S,c);
    c=str[i++]; f='a';}
  }



main()
 {  int k,N,num=0;
    char e;
    SqStack *S;
    InitStack(S);
    scanf("%d",&N);
    getchar();
    for(k=0;k<N;k++) {
    Push(S,'#');
    gets(str);
    i=0;
    c=str[i++];
    while(c!='#'||GetTop(S)!='#') {
    if(In(c)) {
    num=c-'0';
    c=str[i++];
    while(In(c)) {
    num=num*10+c-'0';
    c=str[i++];
    }
    }
    else {
    if(num!=0)
    printf("%d ",num);
    SWITCH (Precede(c,GetTop(S),S),S);
    }
    }
    printf("\n");
    }
  }

[[it] 本帖最后由 20072815 于 2008-10-31 19:33 编辑 [/it]]
搜索更多相关主题的帖子: 内存 强点 软件 没辙 
2008-10-31 19:28
快速回复:无效内存引用,谁有功能强点的软件帮忙指点一下,实在没辙了........( ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014584 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved