棧的應用(括號匹配 字尾表式計算 中綴轉字尾)

2021-06-29 09:20:12 字數 2515 閱讀 3101

#ifndef _stack_h

struct node;

typedef struct node *ptrtonode;

typedef ptrtonode stack;

typedef float elementtype;

int isempty(stack s);

stack createstack(void);

void disposestack(stack s);

void makeempty(stack s);

void push(elementtype x,stack s);

elementtype top(stack s);

void pop(stack s);

#endif

#include#include#includestruct node;

//判空

int isempty(stack s)

//建立空棧

stack createstack()

s->next=null;

makeempty(s);

return s;

}//清空

void makeempty(stack s)else

}} //彈出

void pop(stack s)else }

//彈出並返回top

elementtype popandtop(stack s)else

} //壓入

void push(elementtype x,stack s)else

} elementtype top(stack s)else

}//棧應用

三、中綴到字尾的轉換

void convert(char *ch)

push(c,s);

break;

case '*':

case '/':

while(op=='*'||op=='/')

push(c,s);

break;

case '(':

push(c,s);

break;

case ')':

while(op!='(')

pop(s);

break;

default:

printf("%c ",c);

break;

} i++; }

while(!isempty(s)) }

//棧應用

二、字尾表示式的計算

float getresult(const char **ch,int len)else if(*c=='-')else if(*c=='*')else if(*c=='/')

printf("num1:%f,num2:%f,result:%f ",num1,num2,result);

push(result,s);

break;

default:

//先轉為浮點數

float num=atof(c);

printf("%f\n",num);

push(num,s);

break;

} i++;

} return top(s);}

//棧應用

一、實現括號匹配

bool check(char *ch,int len)':

result=popandtop(s);

printf("%c %c 第一對該括號出現在%d 和%d\n",result,c,i-num2,i+1);

if(result!='

break;

case ']':

result=popandtop(s);

printf("%c %c 第一對該括號出現在%d 和%d\n",result,c,i-num2,i+1);

if(result!='[')

break;

case ')':

result=popandtop(s);

printf("%c %c 第一對該括號出現在%d 和%d\n",result,c,i-num2,i+1);

if(result!='(')

break;

default:num2++;break;

} i++;

} //對棧中剩餘進行判斷

char top=top(s);

if(top!='\0')else }

int main();

// bool b=check(a,sizeof(a));

// if(b)else

//測試字尾表示式

// const char *a=;

// float result=getresult(a,9);

// printf("\n最後的結果:%f",result);

//測試中綴表示式轉成後比表示式

char a=;

convert(a);

}

棧的應用 括號匹配

3.1棧的應用 括號匹配 一 實驗目的1 掌握堆疊特殊線性表的儲存方式的基本操作方法。2 掌握堆疊後進先出運算原則在解決實際問題中的應用。3 掌握使用棧的原理來解決表示式中的括號配對問題。二 實驗內容 假設乙個算術表示式中包含圓括弧 方括弧三種型別的括弧,編寫乙個程式用於判別表示式中括弧是否正確配對...

棧的應用 括號匹配

description 在實際程式設計中,我們經常會巢狀使用括號,如 如果括號太多,可能會出現括號不匹配的情況,比如 as 等。現希望你們編寫乙個程式,判斷輸入的一段語句中的括號是否匹配。必須使用棧實現這個功能。input 字串s,s是由 以及數字字母組成的字串。output 若括號使用規範且匹配,...

棧的應用(括號匹配)

棧的應用 括號匹配有兩種,一種是只用匹配一種型別的括號的,還有一種是要多種都匹配 棧的應用,括號的匹配問題 簡單的括號匹配 只有一中型別的括號 include include include include using namespace std 初始化棧 bool match string str...