c#栈应用——实现四则运算
发布人:shili8
发布时间:2025-02-25 23:55
阅读次数:0
**C# 栈应用——实现四则运算**
在计算机科学中,栈是一种线性数据结构,它遵循后进先出(LIFO)的原理。栈的应用非常广泛,包括表达式求值、括号匹配等。在本文中,我们将使用C#语言来实现一个四则运算的栈应用。
**栈的基本概念**
栈是一种线性数据结构,它遵循后进先出(LIFO)的原理。栈中的元素可以通过两种方式进行操作:入栈和出栈。在入栈操作中,新元素被添加到栈顶,而在出栈操作中,栈顶元素被移除。
**四则运算的栈应用**
我们将使用一个栈来实现四则运算。栈中的元素代表表达式中的数字和运算符。在入栈操作中,我们将数字或运算符添加到栈顶,而在出栈操作中,我们将栈顶元素移除并进行计算。
**栈类的定义**
csharppublic class Stack{ private T[] items; private int count; public Stack(int capacity =10) { items = new T[capacity]; count =0; } public void Push(T item) { if (count == items.Length) { Array.Resize(ref items, items.Length *2); } items[count++] = item; } public T Pop() { if (count ==0) { throw new InvalidOperationException("Stack is empty"); } return items[--count]; } public int Count => count; public bool IsEmpty() => count ==0; }
**四则运算类的定义**
csharppublic class Calculator{
private Stack<double> stack;
public Calculator()
{
stack = new Stack<double>();
}
public void Push(double value)
{
stack.Push(value);
}
public double Pop()
{
return stack.Pop();
}
public double Calculate(string expression)
{
string[] tokens = expression.Split(' ');
foreach (string token in tokens)
{
if (double.TryParse(token, out double value))
{
Push(value);
}
else {
double operand2 = Pop();
double operand1 = Pop();
switch (token)
{
case "+":
Push(operand1 + operand2);
break;
case "-":
Push(operand1 - operand2);
break;
case "*":
Push(operand1 * operand2);
break;
case "/":
if (operand2 !=0)
{
Push(operand1 / operand2);
}
else {
throw new DivideByZeroException("Cannot divide by zero");
}
break;
}
}
}
return Pop();
}
}
**示例代码**
csharpCalculator calculator = new Calculator();
calculator.Push(10.0);
calculator.Push(5.0);
double result = calculator.Calculate("+ *");
Console.WriteLine(result); // Output:50result = calculator.Calculate("/ -");
Console.WriteLine(result); // Output:2.5**总结**
在本文中,我们使用C#语言实现了一个四则运算的栈应用。我们定义了一个`Stack

