ký pháp nghịch đảo Ba Lan

Thảo luận trong 'Thuật toán' bắt đầu bởi integer, 24 Tháng chín 2010.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Code kí pháp nghịch đảo Ba Lan viết bằng Pascal. học qua cấu trúc dữ liệu chắc bạn cũng biết bài này. tham khảo:
    PHP:

    program ConvertInfixToRPN
    ;
    const
    Opt = ['('')''+''-''*''/'];
    var
    TInfixStackString;
    pInteger;

    procedure StackInit;
    begin
    Stack 
    := '';
    end;

    procedure Push(VChar);
    begin
    Stack 
    := Stack V;
    end;

    function 
    PopChar;
    begin
    Pop 
    := Stack[Length(Stack)];
    Dec(Stack[0]);
    end;

    function 
    GetChar;
    begin
    Get 
    := Stack[Length(Stack)];
    end;

    procedure Refine(var SString);
    var
    iInteger;
    begin
    := ' ';
    for 
    := Length(S) - 1 downto 1 do
    if (
    S[iin Opt) or (S[1in Optthen
    Insert
    (' 'S1);
    for 
    := Length(S) - 1 downto 1 do
    if (
    S[i] = ' ') and (S[1] = ' 'then Delete(S11);
    end;

    function 
    Priority(ChChar): Integer;
    begin
    case ch of
    '*''/'Priority := 2;
    '+''-'Priority := 1;
    '('Priority := 0;
    end;
    end;

    procedure Process(TString);
    var
    cxChar;
    begin
    := T[1];
    if 
    not (c in Optthen Write(T' ')
    else
    case 
    c of
    '('Push(c);
    ')'repeat
    := Pop;
    if 
    <> '(' then Write(x' ');
    until x '(';
    '+''-''*''/':
    begin
    while (Stack <> '') and (Priority(c) <= Priority(Get)) do
    Write(Pop' ');
    Push(c);
    end;
    end;
    end;

    begin
    Write
    ('Infix = '); Readln(Infix);
    Refine(Infix);
    Writeln('Refined: 'Infix);
    Write('RPN : ');
    := '';
    for 
    := 1 to Length(Infix) do
    if 
    Infix[p] <> ' ' then T := Infix[p]
    else
    begin
    Process
    (T);
    := '';
    end;
    while 
    Stack <> '' do Write(Pop' ');
    Writeln;
    end.  
    Ronaldosunboy thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí