0
A
回答
0
這是相當微不足道的修改鏈接到算法:
(define (infix->prefix lst)
(cond
((list? lst)
(unless (= 3 (length lst)) (error "not 3 elements"))
(let ((operand1 (car lst))
(operator (cadr lst))
(operand2 (caddr lst)))
(list operator
(infix->prefix operand1)
(infix->prefix operand2))))
(else lst)))
測試:
> (infix->prefix '(1 + 2))
'(+ 1 2)
> (infix->prefix '(1 + (2 * 3)))
'(+ 1 (* 2 3))
> (infix->prefix '((1/4) + (2 * 3)))
'(+ (/ 1 4) (* 2 3))
這並不是雖然通用算法;如果您需要更詳細的內容,請顯示您需要執行的一些轉換示例。
編輯下面是一個例子代碼,更長的表達式的作品,但沒有實現運算符優先級:
(define (infix->prefix lst)
(if (list? lst)
(if (null? (cdr lst))
; list with one element -> return element
(infix->prefix (car lst))
; list with more than one element
(list (cadr lst)
(infix->prefix (car lst))
(infix->prefix (cddr lst))))
; not a list -> return element
lst))
測試:
> (infix->prefix '(2 + 3 * a^5 + b))
'(+ 2 (* 3 (^ a (+ 5 b))))
相關問題
- 1. C++中綴到前綴轉換?
- 2. 如何將前綴轉換爲中綴
- 3. 處理指數在中綴到前綴轉換中
- 4. 中綴後綴轉換器
- 5. 從後綴堆棧轉換到中綴
- 6. 從前綴到中綴的轉換:空指針異常
- 7. 如何在前綴(關鍵幀)中添加前綴(轉換)?
- 8. 將前綴轉換爲後
- 9. 轉換綴以後綴
- 10. 轉換綴以後綴
- 11. 中綴到Postfix轉換
- 12. 將中綴轉換爲python中的前綴
- 13. 變量後綴前綴到後綴
- 14. 中綴後綴轉換程序(java)
- 15. 從後綴轉換爲中綴
- 16. 計算並將前綴轉換爲中綴
- 17. CLISP中綴,後綴,前綴(我想如果語句)之間的轉換
- 18. 使用Java將中綴表達式轉換爲前綴和後綴表達式
- 19. 標準java庫來驗證和轉換中綴爲前綴/後綴表示法?
- 20. 如何有條件地更換前綴或前綴/後綴GSUB
- 21. 看到這個中綴到後綴轉換
- 22. RegEx替換前綴和後綴
- 23. preg_replace替換前綴後綴加自己
- 24. 變換後綴爲前綴的列名
- 25. 前綴中綴使用Java
- 26. 中綴前綴計算
- 27. 將中綴轉換爲後綴,然後解決方程
- 28. 前綴到域
- 29. TextInputLayout後綴/前綴
- 30. Identyfying前綴後綴
是的,這正是我需要的,但我忘了在描述中添加我也需要考慮可能的變量。例如,我將如何解析字符串'(2 + 3 * a^5 + b)。 – user3277752 2014-10-27 22:19:24
變量不是問題,例如'(infix-> prefix'(2 +(3 * a)))'會產生''(+ 2(* 3 a))'。但沒有說明的是1)超過3個元素的表達式,2)運算符的優先級。所以請添加一些有用的示例(輸入以及輸出)。 – uselpa 2014-10-28 07:43:36
恕我直言,上述程序不能處理「(infix-> prefix'(1 +(2 + 3)))」這樣的表達式,並且它會產生結果爲「(+ 1(2 + 3))」。但是我們可以做一個小調整:(if(null?(cdr lst)) ;帶有一個元素的列表 - >返回元素 (car lst)======>(if(null?(cdr lst)) ;帶有一個元素的列表 - >返回元素 (infix-prefix(car lst)) – CodingNow 2017-10-24 16:59:32