当前位置:实例文章 » C#开发实例» [文章]c#栈应用——实现四则运算

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`类来模拟栈的行为,并创建了一个`Calculator`类来处理表达式。示例代码展示了如何使用这个类来计算简单的数学表达式。

相关标签:c#开发语言
其他信息

其他资源

Top