三郎資料結構學習筆記 棧實現表示式計算

2021-10-10 13:53:21 字數 1454 閱讀 6140

棧實現表示式計算

//讓 index + 1, 並判斷是否掃瞄到 expression 最後. index++;

if (index >= expression.length())

}//當表示式掃瞄完畢,就順序的從 數棧和符號棧中 pop 出相應的數和符號,並執行

. while(true)

num1 = numstack.pop(); num2 = numstack.pop(); oper = operstack.pop();

res = numstack.cal(num1, num2, oper);

numstack.push(res);//入棧

}//將數棧的最後數,pop 出,就是結果 int res2 = numstack.pop();

system.out.printf("表示式 %s = %d", expression, res2);}}

//先建立乙個棧,直接使用前面建立好

//定義乙個 arraystack2 表示棧, 需要擴充套件功能 class arraystack2

//增加乙個方法,可以返回當前棧頂的值, 但是不是真正的 pop public int peek()

//棧滿

public boolean isfull()

//棧空

public boolean isempty()

//入棧-push

public void push(int value)

top++;

stack[top] = value;

}//出棧-pop, 將棧頂的資料返回 public int pop()

int value = stack[top]; top--;

return value;

}//顯示棧的情況[遍歷棧], 遍歷時,需要從棧頂開始顯示資料 public void list()

//需要從棧頂開始顯示資料 for(int i = top; i >= 0 ; i--)

}//返回運算子的優先順序,優先順序是程式設計師來確定, 優先順序使用數字表示

//數字越大,則優先順序就越高. public int priority(int oper) else if (oper == '+' || oper == '-') else

}//判斷是不是乙個運算子 public boolean isoper(char val)

//計算方法

public int cal(int num1, int num2, int oper)

return res;

}

資料結構學習筆記 棧

它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。p...

資料結構學習筆記 棧

1.定義 棧 stack 是限定僅在表尾進行插入和刪除操作的線性表。根據定義我們知道棧在本質上也是一種線性表,只是在插入和刪除操作上進行了限制。我們把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何元素的棧稱為空棧。棧又稱為後進先出 last in first out 的...

資料結構學習筆記5(棧)

在學習組合語言時候曾經簡要接觸過棧。棧可能是繼陣列之後在技術安吉科學中最基本的資料結構。基本思想是先進先出,可以看做是乙個桶。最先進入的最後出,最後進的最先出。棧可以用鍊錶或者陣列實現。陣列實現的缺點在於需要提前預知棧的大小,並定義出來 但是,一般在應用程式中,即使有相當多的棧操作,在任意時刻站元素...