问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求数据结构代码,可以追分,QQ:455107334

发布网友 发布时间:2022-05-26 09:35

我来回答

5个回答

热心网友 时间:2023-10-11 09:01

//第四题
#include<iostream>
#include<string>
using namespace std;
#define MaxSize 100
typedef struct Stack
{
char list[MaxSize];
int count;
}DataType;
DataType Q;
char *first,*second;
int Count=0;
char Chuan[MaxSize];
void Initiate(DataType *x)
{
x->count=0;
}
bool isEmpty(DataType x)
{
if(x.count<=0) return true;
return false;
}
void Push(DataType *x,char m)
{
if(x->count>=MaxSize-1) {
cout<<"Error"<<endl;
return;
}
x->list[x->count]=m;
x->count++;
}
char Pop(DataType *x)
{
if(x->count<=0)
{cerr<<"error!"<<endl;}
--x->count;
return x->list[x->count];

}
char Peek(DataType x)
{
if(x.count<=0)
{cerr<<"error!"<<endl;}
return x.list[x.count-1];
}
void Try()
{
if(*second=='\0')
{
for(int i=0;i<Count;i++)
cout<<Chuan[i]<<" ";
cout<<endl;
}
if(*first!='\0')
{
Push(&Q,*first);
Chuan[Count++]='i';
++first;
Try();
Pop(&Q);
--Count;
--first;

}
if(!isEmpty(Q)){ //还原!!!!!
char c=Peek(Q);
if(c==*second)
{
Pop(&Q);
Chuan[Count++]='o';
++second;
Try();
Push(&Q,c);
--Count;
--second;

}
}

}

int main()
{
string x1,x2;
while(cin>>x1>>x2)
{
first=(char*)(x1.c_str());
second=(char*)(x2.c_str());
// cout<<"["<<endl;
Try();
// cout<<"]"<<endl;
}
return 0;

}
//第五题
#include<stdio.h>
struct
{
int op;
double num;
}ret[200];
int topa,topb;
int opstk[200];
int level[200];
double cal(double a,double b,char op)
{
if(op=='+')
return a+b;
if(op=='-')
return a-b;
if(op=='*')
return a*b;
if(op=='/')
return a/b;
}
int main()
{
int i,temp,sign,j,x,y;
char s[200];
level['+']=level['-']=0;
level['*']=level['/']=1;
level['(']=level[')']=2;
while(scanf("%s",s)!=EOF)
{
topa=topb=0;
for(i=0;s[i];i++)
{
if(s[i]=='(')
{
opstk[topa++]='(';
}
else if(s[i]==')')
{
while(topa>0&&opstk[topa-1]!='(')
{
topa--;
ret[topb++].op=opstk[topa];
}
topa--;
}
else if(s[i]=='+'||s[i]=='*'||s[i]=='/')
{
while(topa>0&&opstk[topa-1]!='('&&level[opstk[topa-1]]>=level[s[i]])
{
topa--;
ret[topb++].op=opstk[topa];
}
opstk[topa++]=s[i];
}
else if(s[i]=='-')
{
if((i>0&&s[i-1]=='(')||i==0)
{
sign=-1;
temp=0;
for(j=i+1;s[j]&&s[j]>='0'&&s[j]<='9';j++)
temp=temp*10+s[j]-'0';
ret[topb].op=-1;
ret[topb++].num=sign*temp;
i=j-1;
}
else
{
while(topa>0&&opstk[topa-1]!='('&&level[opstk[topa-1]]>=level['-'])
{
topa--;
ret[topb++].op=opstk[topa];
}
opstk[topa++]='-';
}
}
else if(s[i]>='0'&&s[i]<='9')
{
temp=0;
for(j=i;s[j]&&s[j]>='0'&&s[j]<='9';j++)
temp=temp*10+s[j]-'0';
ret[topb].op=-1;
ret[topb++].num=temp;
i=j-1;
}
}
while(topa>0)
{
topa--;
ret[topb++].op=opstk[topa];
}
for(i=0;i<topb;i++)
{
if(ret[i].op=='+'||ret[i].op=='-'||ret[i].op=='*'||ret[i].op=='/')
{
for(y=i-1;y>=0;y--)
if(ret[y].op==-1)
break;
for(x=y-1;x>=0;x--)
if(ret[x].op==-1)
break;
ret[i].num=cal(ret[x].num,ret[y].num,ret[i].op);
ret[i].op=-1;
ret[x].op=0;
ret[y].op=0;
}
}
printf("%.4lf\n",ret[topb-1].num);
}
return 0;
}

热心网友 时间:2023-10-11 09:02

自己以前写的一个计算表达式你看看吧,现在没时间
#include<iostream>
#include<string>
using namespace std;
enum error_code{overflow,underflow,success};
template<class T>
class stack
{
public:
stack(){count=0;};
T get_top()
{
x=data[count-1];
return x;
}
error_code push( T x)
{
data[count]=x;
count++;
return success;
}
error_code pop()
{
count--;
return success;
}
private:
T x;
int count;
T data[10];
};

//判断是否字符
int in(char m)
{
if(m=='+'||m=='-'||m=='*'||m=='/'||m=='('||m==')'||m=='#'||m=='\0')return 1;
else return 0;
}
//比较优先级
char precede(char m,char n)
{
if(m=='#')return '<';
else if(n=='#')return'>';
else if (m=='('&&n==')')return '=';
else if(m=='(')return '<';
else if(n=='(')return '<';
else if(n==')')return '>';
else if(m=='*')return '>';
else if(m=='/')return '>';
else if((m=='+'||m=='-')&&(n=='+'||n=='-'))return '>';
else return '<';
}
//出栈之后进行的二元运算
int operate(int a,char b,int c)
{
switch(b)
{
case'+':return a+c;break;
case'-':return a-c;break;
case'*':return a*c;break;
case'/':return a/c;break;
default:return 0;
}
}

void main()
{
string ch;
stack<int> D;
stack<char> R;
int j,k=0,d,e,f,g;
char p,q;
cout<<"以#号键开头并以#号键结束输入表达式"<<endl;
cin>>ch;
R.push('#');
for(j=1;ch[j]!='\0';j++)
{
if(!in(ch[j])&&in(ch[j-1]))
{
k=(int)(ch[j])-48;
if(in(ch[j+1]))D.push(k);
}
else if(!in(ch[j]))
{
k=k*10+(int)(ch[j])-48;
if(in(ch[j+1]))D.push(k);
}
else
{
p=R.get_top();
switch(precede(p,ch[j]))
{
case'<':R.push(ch[j]);
break;
case'>':R.pop();
e=D.get_top();D.pop();
d=D.get_top();D.pop();
f=operate(d,p,e);
D.push(f);
q=R.get_top();
switch(precede(q,ch[j]))
{
case'>':R.pop();
e=D.get_top();D.pop();
d=D.get_top();D.pop();
f=operate(d,q,e);
D.push(f);
if(ch[j]==')')R.pop();
else R.push(ch[j]);
break;
case'<':R.push(ch[j]);
break;
case'=':R.pop();
break;
}
break;
case'=':R.pop();
break;
}
}
}
g=D.get_top();D.pop();
cout<<"="<<g<<endl;
}追问输出结果不对啊

追答我在VS2008和vc6.0上运行都没问题。什么结果不对,说下

热心网友 时间:2023-10-11 09:02

小赟同学…… 发现你了追问你...你 who r u?

热心网友 时间:2023-10-11 09:03

嘿嘿 你让文!强哥情何以康

热心网友 时间:2023-10-11 09:04

*哥不缺那点分啊
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
社会消费品零售总额反映什么问题社会消费品零售总额反映什么 我的头发发质很软 不想每天做头发 是烫发根还是怎么 就能让头发蓬起来... ...的时候如果想让软化完头顶的头发能蓬起来一些,应该可以做到吧?那... 我拿建设银行卡在邮政夸行转给农业银行可不可以 ...银行卡在自助取款机上可不可以跨行转账到农业银行卡上。可以的话手 ... 邮政银行卡转农业银行卡帐号怎么转(在自动取款上转) 邮政卡自助取款机内给外省农业银行卡转账需要多久到账 请问广州D1857在广州哪个站 薄壁不锈钢管什么型号的氩弧焊机能焊 韶关常年平均温度是多少 我想找一些关于数据结构的代码,不知在哪里找,哪位大侠知道? 一个单简数据结构的程序代码怎样写? 求数据结构图的操作代码 求文档: 数据结构 图源代码 数据结构,这串代码描述的是什么呢 数据结构如图 代码怎么写 求一个数据结构中图的源代码 喝红茶和喝女茶有什么区别 红茶女的意思 请问大家,5G推广员的工作靠谱吗? 2021年河南省濮阳市是否有拿身份证注册免费领5g卡*,且5g卡可免流量,有5个声称移动公司人员_百度问一问 联通办5G拉人头是骗局吗? 4月25号一个移动公司的业务员叫我开5G 套餐,跟我说每个月只要扣158元。骗我开套餐,这是欺骗? 想开一个个人的甜品店!不想加盟的!根据过来人的经验,都说加盟的不好!费用也高,根据现在的物质提高, 第二次酒驾被查 要拘留 可以保释吗?不是醉驾 急 摩托车第二次酒驾后怎么处理? 第二次饮酒开车怎么处理 小孩子头型的图片 变频器输入端rst之间,两相有通路,是不是变频器坏了? 学会怎样梳小女孩头型 小孩怎样梳头发好看图片 中国互联网金融协会15家单位是哪些 最近经常有人说万睡娘娘, 万睡娘娘是谁啊? 蟑螂是指什么呢?怎么会有这个词啊? 中国互联网金融的标杆企业有哪些 天涯四妹是谁? 何为天涯四美? 天涯四美的“天涯四美”形成史 四大御姐 萧言缄 其他三个是谁? 天涯里说的那位捧不红娘娘是谁? 曾经的天涯四美,现在他们都怎么样了呢? 1996年大专毕业发的是国家统一印制的1995年的毕业证国家承认吗 1996年大专毕业发的国家教委印制的1995年毕业证芯是怎么回事 中国食品添加剂行业利率是多少? 百度网盘 食品添加剂对社会有什么影响? 比如说引起公众恐慌啊等等的 最好可以写多点 食品添加剂属于哪类国民经济行业 食品添加剂属于高新技术企业哪个行业 分期乐现有些东西不支持提前还款,现在购买的话,日后这件商品又可以提前还款,这时我能提前还款吗? 面料布封是140cm,克重是170cm,那么1公斤面料有多少米?是怎样算法?求解? 克重算1公斤等于多少米 谁知道!当我伸出双手想抓住一点美梦。梦已不属于我是出自那首歌! 解解解解解解解梦梦梦梦