파이썬)제발 도와주세요 ㅠㅠ

조회수 103회

안녕하세요 !! 파이썬에서 전자계산기를 만들고 싶어서요!! 근데 리스트로 스택을 구현하는게 아니라 liked list 를 이용해서 구하고 싶습니다 ㅠㅠ 혼자 해볼려고했는데 자꾸 오류가 나서여 ㅠㅠ 자꾸 후위 표기법 전환시 제대로 안바뀌고 오류가 납니다 ㅠㅠ 도움좀 주세여 ㅠㅠㅠㅠㅠㅠㅠ

//여기에 코드를 입력하세요
class Node:
    def __init__(self,item,link):
        self.item=item
        self.next=link

def push(item):
    global top
    global size
    top = Node(item,top)
    size +=1

def peek():
    if size != 0:
        return top.item
def pop():
    global top
    global size
    if size != 0:
        top_item = top.item
        top = top.next
        size -= 1
        return top_item
def print_stack():
    p= top
    while p:
        if p.next != None:
            print(p.item)
        else:
            print(p.item)
        p=p.next
    print()

def isNumber(x):          

    try:
        float(x)          
        return True       
    except ValueError:    
        return False    
def infix_to_postfix(input_expr):  
    precedence = {}                
    precedence['*'] = 3            
    precedence['/'] = 3            
    precedence['+'] = 2            
    precedence['-'] = 2            
    precedence['('] = 1                               
    result =[]                     
    token_list =input_expr.split() 
    for token in token_list:       
        if isNumber(token)==True:  

            result .append(token)  
        elif token =='(':          
            push(token)            
        elif token == ')':         
            top=pop()              
            while top != '(':       
                result.append(top)
                top=pop()
        else:                     
            while (len(stack) !=0) and (precedence[peek()]>=precedence[token]):
                result.append(pop())                                            
            push(token)

    while len(stack) != 0:
        result.append(stack.pop())  


stack = []
top = None
size = 0
print(infix_to_postfix('34.5 * 23.4 + 23 * ( 32 + 46 )'))

  • linked list 로 구현했을때 infix_to_profix 에서 문제 가 있는거 같은데 어떻게 바꾸면 좋을까여 ?ㅠㅠㅠ 무조건 list로 구현은 해봤어요!!1 이이이다다 2020.6.25 17:57
  • 제가 원하는 결과치는 34.5 23.4 * 23 32 46 + * + 이건데 자꾸..34.5 23.4 23 32 46 + 요롷게 나옵니다 ㅠㅠ 이이이다다 2020.6.25 18:05

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.