您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

02 訂閱轉換服務地址是什么數據結構(設計算法,將一個無向圖的鄰接矩陣轉換為鄰接表.求大神。這是數據結構里的問題。)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-04-28 03:33:19【】2人已围观

简介k++;q->p=q->p->p;v=pd(q->p->c);w=pd(q->c);}if(a[v][w]==1)q=q->p->p;break;}}q

k++;

q->p=q->p->p;

v=pd(q->p->c);

w=pd(q->c);

}

if(a[v][w]==1)

q=q->p->p;

break;

}

}

q=new node;

for(i=0;i<=k-1;i++){

if(((t[i]>'9')||(t[i]<'0'))&&(t[i-1]>='0')&&(t[i-1]<='9')){

o=1;

v=i-1;

w=0;

while(t[v]>='0'){

w=w+o*(t[v]-'0');

o=o*10;

v--;

}

r=q;

q=new node;

q->h=w;

q->p=r;

}

switch(t[i]){

case '+':

q->p->h+=q->h;

q=q->p;

break;

case '-':

q->p->h-=q->h;

q=q->p;

break;

case '*':

q->p->h*=q->h;

q=q->p;

break;

case '/':

q->p->h/=q->h;

q=q->p;

break;

}

}

買粉絲ut<<q->h;

return 0;

}

中綴表達式轉換成后綴表達式并求值

中綴表達式轉換成后綴表達式并求值

算法:

中綴表達式轉后綴表達式的方法:

1.遇到操作數:直接輸出(添加到后綴表達式中)

2.棧為空時,遇到運算符,直接入棧

3.遇到左括號:將其入棧

4.遇到右括號:執行出棧操作,并將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出。

5.遇到其他運算符:加減乘除:彈出所有優先級大于或者等于該運算符的棧頂元素,然后將該運算符入棧

6.最終將棧中的元素依次出棧,輸出。

例如

a+b*c+(d*e+f)*g ----> abc*+de*f+g*+

遇到a:直接輸出:

后綴表達式:a

堆棧:空

遇到+:堆棧:空,所以+入棧

后綴表達式:a

堆棧:+

遇到b: 直接輸出

后綴表達式:ab

堆棧:+

遇到*:堆棧非空,但是+的優先級不高于*,所以*入棧

后綴表達式: ab

堆棧:*+

遇到c:直接輸出

后綴表達式:abc

堆棧:*+

遇到+:堆棧非空,堆棧中的*優先級大于+,輸出并出棧,堆棧中的+優先級等于+,輸出并出棧,然后再將該運算符(+)入棧

后綴表達式:abc*+

堆棧:+

遇到(:直接入棧

后綴表達式:abc*+

堆棧:(+

遇到d:輸出

后綴表達式:abc*+d

堆棧:(+

遇到*:堆棧非空,堆棧中的(優先級小于*,所以不出棧

后綴表達式:abc*+d

堆棧:*(+

遇到e:輸出

后綴表達式:abc*+de

堆棧:*(+

遇到+:由于*的優先級大于+,輸出并出棧,但是(的優先級低于+,所以將*出棧,+入棧

后綴表達式:abc*+de

*

堆棧:+(+

遇到f:輸出

后綴表達式:abc*+de*f

堆棧:+(+

遇到):執行出棧并輸出元素,直到彈出左括號,所括號不輸出

后綴表達式:abc*+de*f+

堆棧:+

遇到*:堆棧為空,入棧

后綴表達式: abc*+de*f+

堆棧:*+

遇到g:輸出

后綴表達式:abc*+de*f+g

堆棧:*+

遇到中綴表達式結束:彈出所有的運算符并輸出

后綴表達式:abc*+de*f+g*+

堆棧:空

例程:

這是我自己寫的一個簡單的中綴表達式求值程序,簡單到只能計算10以內的數,支持+-*/()運算符。

#include <stack>

using namespace std;

bool IsOperator(char ch)

{

char ops[] = "+-*/";

for (int i = 0; i < sizeof(ops) / sizeof(char); i++)

{

if (ch == ops[i])

return true;

}

return false;

}

比較兩個操作符的優先級

int Precedence(char op1, char op2)

{

if (op1 == '(')

{

return -1;

}

if (op1 == '+' || op1 == '-')

{

if (op2 == '*' || op2 == '/')

{

return -1;

}

else

{

return 0;

}

}

if (op1 == '*' || op1 == '/')

{

if (op2 == '+' || op2 == '-')

{

return 1;

}

else

{

return 0;

}

}

}

中綴表達式轉換成后綴表達式

void inFix2PostFix(char* inFix, char* postFix)

{

int j = 0, len;

char c;

stack<char> st;

len = strlen(inFix);

for (int i = 0; i < len; i++)

{

c = inFix[i];

if (c == '(')

st.push(c);

else if (c == ')')

{

while (st.() != '(')

{

postFix[j++] = st.();

st.pop();

}

st.pop();

}

else

{

if (!IsOperator(c))

st.push(c);

else

{

while (st.empty() == false

&& Precedence(st.(), c) >= 0)

{

postFix[j++] = st.();

st.pop();

}

st.push(c);

}

}

}

while (st.empty() == false)

{

postFix[j++] = st.();

st.pop();

}

postFix[j] = 0;

}

后綴表達式求值程序

double postFixEval(char* postFix)

{

stack<char> st;

int len = strlen(postFix);

char c;

for (int i = 0; i < len; i++)

{

c = postFix[i];

if (IsOperator(c) == false)

{

st.push(c - '0');

}

else

{

char op1, op2;

int val;

op1 = st.();

st.pop();

op2 = st.();

st.pop();

switch (c)

{

case '+':

val = op1 + op2;

break;

case '-':

val = op2 - op1;

break;

case '*':

val = op1 * op2;

break;

case '/':

val = op2 / op1;

break;

}

st.push(val);

}

}

return s

很赞哦!(7734)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:新疆阿克苏阿克苏市

工作室:小组

Email:[email protected]