| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 752 人关注过本帖
标题:新手请教一个数据结构问题
只看楼主 加入收藏
cqxlove
Rank: 1
来 自:广东
等 级:新手上路
帖 子:35
专家分:0
注 册:2008-6-5
收藏
 问题点数:0 回复次数:0 
新手请教一个数据结构问题
向大家请教个数据结构问题:
#include <iostream.h>

typedef int elemtype;

 struct sqstack{
    elemtype  data[20];
    int top;
};  //定义栈类型

void main()
{
    char bds_hz[]="423*+42/-#"; //后缀表达式
    int i=0;
    int x1,x2,temp;
    sqstack bds;  //定义一个栈
    bds.top=-1;    //初始化栈顶指针
    while (bds_hz[i]!='#')   //依次取得后缀表达式中的字符判断并操作
    {
        if (('0'<=bds_hz[i])&&(bds_hz[i]<='9') )
            bds.data[++bds.top]=bds_hz[i]-'0';  //如果是操作数,压栈
        else
        {//如果是操作符
            x2=bds.data[bds.top--]; //操作数2,出栈
 
            x1=bds.data[bds.top--]; //操作数1,出栈
            
            //计算
            switch (bds_hz[i])
            {
            case '+':  temp=x1+x2;break;
            case '-':  temp=x1-x2;break;
            case '*':  temp=x1*x2;break;
            case '/':  temp=x1/x2;break;
            }

            bds.data[++bds.top]=temp;  //计算结果压栈
        }
        i++;  //指针后移

    }
    cout<<bds.data[0]<<endl;  //输出表达式结果
    

}
/*需要解决的问题:
任务一:
   1,请编写压栈和出栈函数,函数头分别为
      int push(bds_stack &s,int e)

       int pop(bds_stack &s,int &e)
    2,用编写好的函数替代程序中的对应代码
 

下面系我自己写的,不过不行:
#include <iostream.h>

typedef int elemtype;

 struct sqstack{
    elemtype  data[20];
    int top;
};

int push(bds_stack &s,int e)
{
   int *p=s;
   while(e!='#')
   {
       if(('0'<=e)&&(e<='9'))
           p->data[++p->top]=e-'0'
           return 0;
   }
}

int pop(bds_stack &s,int &e)
{
    int *p=s;
    int x1,x2;
    while(e!='#')
    {
        if(('0'>e)&&(e>'9'))
        x2=p->data[p->top--];
        x1=p->data[p->top--];
        return 0;
    }



   


void main()
{
    char  bds_hz[]="423*+42/-#"; //后缀表达式
    sqstack bds;  //定义一个栈
    bds.top=-1;    //初始化栈顶指针
    int temp;
    int i,j;
    for(i=0;i<20;i++)
    {
        j=bds_hz[i];
        int push(&bds,j)
        int pop(&bds,&j)
    }
    switch (bds_hz[i])
            {
            case '+':  temp=x1+x2;break;
            case '-':  temp=x1-x2;break;
            case '*':  temp=x1*x2;break;
            case '/':  temp=x1/x2;break;
            }

            bds.data[++bds.top]=temp;  //计算结果压栈
        i++;  //指针后移


    cout<<bds.data[0]<<endl;  //输出表式结果
}
搜索更多相关主题的帖子: 数据结构 
2008-10-19 20:35
快速回复:新手请教一个数据结构问题
数据加载中...
 
   



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

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