棧的應用例項 中綴表示式轉換為字尾表示式

2021-09-06 14:31:49 字數 3062 閱讀 5060

/*

infix_to_postfix.c

*/#include

#include

#include

#include

struct

op_node

;struct

stack_record

;struct stack_record *create_stack(

intmax_elements )

s = malloc(sizeof(struct

stack_record));

if(s ==null)

s->array = malloc(sizeof(struct op_node) *max_elements);

if(s->array ==null)

s->capacity =max_elements;

s->top_of_stack = -1

;

returns;}

void

push(

struct op_node x, struct stack_record *s)

else

}struct

op_node

top(

struct stack_record *s)

else

}void

pop(

struct stack_record *s)

else

}struct

op_node

top_and_pop(

struct stack_record *s)

else

}int

main(

void

) postfix_expression[j++] = '';

i = 0

; data_string[

0] = '\0'

; }

break

;

case'+

':flag = 0

; op1.op =c;

op1.level = 1

;

if(op_stack->top_of_stack == -1

)

else

else

if(op_stack->top_of_stack == -1

)

else

}push( op1, op_stack );

}break

;

case'-

':flag = 0

; op1.op =c;

op1.level = 1

;

if(op_stack->top_of_stack == -1

)

else

else

if(op_stack->top_of_stack == -1

)

else

}push( op1, op_stack );

}break

;

case'*

':flag = 0

; op1.op =c;

op1.level = 2

;

if(op_stack->top_of_stack == -1

)

else

else

if(op_stack->top_of_stack == -1

)

else

}push( op1, op_stack );

}break

;

case'/

':flag = 0

; op1.op =c;

op1.level = 2

;

if(op_stack->top_of_stack == -1

)

else

else

if(op_stack->top_of_stack == -1

)

else

}push( op1, op_stack );

}break

;

case'(

':flag = 0

; op1.op =c;

op1.level = 3

; push( op1, op_stack );

break

;

case')

':flag = 0

; op2 =top_and_pop( op_stack );

while(op2.op != '('

)

break

; }

}while(!(op_stack->top_of_stack == -1

))

postfix_expression[j] = '\0'

;

printf(

"postfix_expression is: %s\n

", postfix_expression);

}

測試結果如下:

利用棧實現中綴表示式轉換為字尾表示式

中綴表示式就是我們平時最熟悉的算式表示式,操作符在兩個數中間。那麼可以想到字尾表示式就是操作符在兩個數後面。例子 中綴表示式 1 2 3 字尾表示式 1 2 3 棧中儲存的是操作符和括號。從左到右遍歷中綴表示式。遇到括號 遇到數字 遇到操作符 當中綴表示式遍歷完後,依次彈出棧中的所有元素。特殊處理 ...

用棧實現中綴表示式轉換為字尾表示式

思路 1.從左到右獲取中綴表示式 2.的優先順序最高,遇到直接入棧,直到遇到比他優先順序低的,依次出棧 3.遇到直接入棧,等遇到右括號 後,將 棧的運算子出棧輸出,出棧不輸出 4.如果棧空,直接入棧,否則將棧中優先順序不低於它們的運算子依次彈出,直到棧空或遇到 為止 如下所示 中綴轉字尾 void ...

中綴表示式轉換為字尾表示式

今天我們課前談一談,要說點什麼好呢?最近小甲魚發現,很多魚油在學習資料結構和演算法的時候積極性已經開始有點下降了。甚至很多朋友懷疑資料結構和演算法到底有沒有用?實話說,在大廈的防震設計 消除疾病 防止水源枯竭這些實際問題中,很遺憾,資料結構和演算法幾乎起不到任何直接作用。那為什麼我們要學呢?很簡單,...