棧實現表示式的計算

2021-07-26 20:31:14 字數 1583 閱讀 9052

之前寫過這個的部落格,但是覺得不太好,都是截圖,所以我就趁有時間整理了一下。(結果發現了乙個天大的低階錯誤。)

我在實現棧的時候把析構函式寫錯了(

首先,執行的時候答案是對的,但是是記憶體錯誤表現:

然後我就進行單步除錯:

一直執行到最後一句**也沒有錯誤,直到最後乙個大括號就出現了......

所以說明可能是出現了記憶體洩露。

果然,析構函式我寫成了:

調整一下,把delete base放在最後就好啦。

以下是我完整的**:

#include#includeusing namespace std;

templateclass stack

; type *base;

size_t capacity;

size_t top;

public:

stack(size_t sz = stack_default_size)

~stack()

public:

bool isfull()const

bool isempty()const

public:

void push( type x)

}void pop()

}type gettop()

}void clear_stack()

size_t lenth()const

void show_stack()const

else

else if(isp(temp.gettop()) == icp(ex.gettop()))}}

*p = '\0';

temp.pop();

}

#include"solvepoly.h"

int main()

//有十三個

--count;//最後乙個下標為12

old.push('#');

for(;count>=0;--count)

change(old,hou);

h = hou;

for(;*h!='\0';++h)

--count1;//count1 = 10

for(;count1>=0;--count1)

while(!opnow.isempty())

else

}cout<

棧實現表示式計算

讓index 1,並盤算是否掃瞄到expression最後 index if index expression.length 掃瞄完畢,就順序從數棧和符號棧中pop出相應的數和符號,並執行 while true num1 numstack.pop num2 numstack.pop oper ope...

棧實現表示式計算

原理 數 入棧 入棧 運算子出棧,直到 和 匹配 運算子 當前符優先順序 棧頂符優先順序 入棧 當前符優先順序 棧頂符優先順序 棧內運算子出棧,運算後進棧,再比較 其中 優先順序大於 如下 先建compute.h標頭檔案 pragma once double compute char str 計算 ...

用棧實現表示式計算

public class calculator public static inthandle string express else else else else int num integer.parseint keepnum keepnum numstack.push num index if...