棧是資料結構的一種,具有先進後出,後進先出的特點。入口和出口都是棧頂。下面我們利用棧結構做數學簡單表示式的計算
package com.mloine.stack;
/** * @author mloine
* @description 利用棧 做簡單表示式計算 char 和 int 互通的
* @date 3:24 下午 2020/2/26
*/public class calculator elseelse
}}elseelse
}// 直接入棧 ascil 碼
// numberstack.push(ch - 48);
}index++;
//判斷是否掃瞄到最後 出迴圈
if(index >= expression.length())
}// 做最後運算
while(true)else
}// 將最後數棧數 pop出來 就是計算結果
int result = numberstack.pop();
system.out.printf("表示式 %s 計算結果為 %d \n",expression,result);
}}// 模擬棧
class arraystack2
/*** 判斷棧滿
* @return
*/public boolean isfull()
/*** 判斷棧空
* @return
*/public boolean isempty()
/*** 入棧 - push
* @param value
*/public void push(int value)
top++;
stack[top] = value;
}/**
* 出棧 - pop
*/public int pop()
int result = stack[top];
top--;
return result;
}/**
* 遍歷棧
*/public void list()
for (int i = top; i >= 0; i--)
}/**
* 返回運算子的優先順序
* 優先順序越大 數字越大
*/public int priority(int opt)else if(opt == c2 || opt == c3)else
}/**
* 判斷是否是運算符號
* @param val
* @return
*/public boolean isoper(char val)
/*** 計算方法
* @param num1 值1
* @param num2 值2
* @param oper 符號
* @return
*/public int cal(int num1,int num2,int oper)
return res;
}public int peek()
return stack[top];}}
結果
好,本次分享到此結束!
資料結構 棧 棧
可以把棧想像成乙個桶 進棧 就是把和桶口一樣大的燒餅往桶裡面扔 出棧 就是把燒餅拿出來 特點 先進後出。先扔進去的燒餅最後才能拿出來,最後扔進去的燒餅,第乙個拿出來 剛開始top 1 top 1 然後把進棧的元素賦值給data top 入棧操作 void push stack s,int x els...
資料結構 棧
例子 棧是一種被限制在只能在表的一端進行插入和刪除運算的線性表。區域性變數是用棧來儲存的 可以進行插入和刪除的一端稱為 棧頂 top 另一端稱為 棧底 bottom 當表中沒有元素時 表長為0的棧 稱為 空棧。棧的修改是按 後進先出的原則進行,因此棧被稱為後進先出 last in first out...
資料結構 棧
1.棧stack 是限定僅在表尾進行刪除和插入操作的線性表。允許插入刪除的一端叫做棧頂top,另外一端叫做棧底bottom。棧又稱為後進先出 lifo 的線性表。即表尾是指棧頂。2.順序棧 定義 top指向可存入元素的位置。typedef struct stacktypestacktype 插入 進...