資料結構 棧

2021-10-03 06:21:06 字數 1706 閱讀 8018

棧是資料結構的一種,具有先進後出,後進先出的特點。入口和出口都是棧頂。下面我們利用棧結構做數學簡單表示式的計算

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 插入 進...