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